Вернуть удаленный файл, не копируя его содержимое

Вернуть удаленный файл, не копируя его содержимое

Пока есть открытый файловый дескриптор, указывающий на файл, я могу вернуть его обратно cpследующим образом:

# Open for reading
exec 3< file
# Delete
rm file
# Bring it back
cp /proc/self/fd/3 file

Это решение подходит для небольших файлов, но оно очень медленное для больших (например, >5GiB). Поэтому мне интересно, есть ли способ вернуть его обратно без копирования содержимого? Я имею в виду, что данные остаются нетронутыми, если только дескриптор не закрыт, так почему бы не связать имя файла с областью памяти, в которой находятся данные?

Пожалуйста, просветите меня по этому поводу. Хакерское решение командной строки, зависимый от платформы/файловой системы API C и т. д. все приветствуется; я просто хочу знатьесли это возможнокак-то где-то, иесли не, Я хочу знатьпочему.

Поиск в Google не помог, все, что я смог найти, это копии статей о том, как восстановить файлы с помощью lsofи cp.

Связанный контент