Я случайно удалил файл, пока он все еще передается через SCP. Что просходит?

Я создал файл .tar.gz для резервного копирования. Пока он находится в процессе передачи через SCP (это файл размером 6 ГБ), я случайно удалил его в сеансе SSH.

Передача SCP все еще выполняется. Что происходит в этом случае? Будет ли файл в порядке? Зачем? Это будет сломано? Если так, то почему передача файла не прерывается?

1
задан 12 January 2018 в 00:13

2 ответа

scp скопирует Ваш файл без проблем.

При удалении фильма, который открыт процессом, только имя файла удалено, но файл все еще существует. Можно получить доступ к удаленному файлу через символьную ссылку в /proc/$PID/fd где $PID идентификатор процесса процесса с помощью файла.

1
ответ дан 7 December 2019 в 15:25

У меня была прекрасная идея, и я думаю, что изобразил его сам:

# 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!

0
ответ дан 7 December 2019 в 15:25

Другие вопросы по тегам:

Похожие вопросы: