Я создал файл .tar.gz
для резервного копирования. Пока он находится в процессе передачи через SCP (это файл размером 6 ГБ), я случайно удалил его в сеансе SSH.
Передача SCP все еще выполняется. Что происходит в этом случае? Будет ли файл в порядке? Зачем? Это будет сломано? Если так, то почему передача файла не прерывается?
scp
скопирует Ваш файл без проблем.
При удалении фильма, который открыт процессом, только имя файла удалено, но файл все еще существует. Можно получить доступ к удаленному файлу через символьную ссылку в /proc/$PID/fd
где $PID
идентификатор процесса процесса с помощью файла.
У меня была прекрасная идея, и я думаю, что изобразил его сам:
# lsof | grep www
sftp-serv 2490 root 3r REG 253,0 6878784186 14549364 /mnt/var/www.tar.gz (deleted)
Для меня это означает, что SCP все еще получает доступ к файлу и все еще имеет дескриптор правильного файла. Для кого-либо еще файл удален, как обозначено в круглых скобках. Таким образом, никто больше не будет получать дескриптор правильного файла для того удаленного дескриптора файла больше.
Теперь, начиная с завершенной загрузки SCP, я мог проверить снова:
# lsof | grep www
Обратите внимание, что результат пуст, дескриптор файла был закрыт.
На моем клиенте я смог разархивировать .tar.gz
файл с 7Zip (Windows). Это не жаловалось на поврежденные контрольные суммы или что-либо еще. Это поддерживает выше теории.
Хорошо сделанный, Linux!