
Пока есть открытый файловый дескриптор, указывающий на файл, я могу вернуть его обратно 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
.