Почему rsync все еще пытается скопировать и жалуется на недостаток места?

Я использую rsync для копирования одного большого файла (> 4 ГБ) с жесткого диска на USB-накопитель с параметром -av --progress. До этого файл уже существует на USB и совпадает с файлом на диске. Так что в основном я делаю тест. Я предполагаю, что если rsync достаточно умен, он не должен делать настоящую копию.

Тем не менее, он все еще пытается скопировать (по крайней мере, из-за прогресса и мигания USB). Это первое, что я не понимаю.

Тогда жалуется на нехватку места (свободного места на usb составляет 2 ГБ). Этого не должно быть, потому что нужно только заменить файл, который занимает столько же места, верно? Я даже использую "--delete-before", и он все еще жалуется.

Спасибо за подсказку.

1 ответ

Решение

К вашему первому вопросу, что такое файловая система на USB-накопителе? Он может не содержать достаточно информации о файле, чтобы rsync мог определить временные метки, разрешения и т. Д.

Что касается вашего второго пункта, опция --partial заставляет rsync создать временный файл при копировании, который затем переименовывается после завершения передачи.

Например, я сейчас запускаю эту команду в системе Ubuntu 14.04:

/usr/bin/rsync -avzh --partial --progress 192.168.42.40:/Users/Shared/bsd /srv/share/distros

Это производит следующий вывод:

receiving file list ... 
36 files to consider
bsd/
bsd/FreeBSD-10.0-RELEASE-i386-dvd1.iso
        738.41M  31%   11.20MB/s    0:02:17

Но создаваемый файл:

15:28:57 file01 lnelson:/srv/share/distros/bsd> ls -al
drwxr-xr-x 3 lnelson lnelson       4096 Sep 17 15:28 .
drwxr-xr-x 4 lnelson lnelson       4096 Sep 14 23:12 ..
-rw------- 1 lnelson lnelson  242745344 Sep 17 15:28 .FreeBSD-10.0-RELEASE-i386-dvd1.iso.Xo0LH8

Когда операция завершена, я получил:

15:28:58 file01 lnelson:/srv/share/distros/bsd> ls -al
drwxr-xr-x 3 lnelson lnelson       4096 Sep 17 15:31 .
drwxr-xr-x 4 lnelson lnelson       4096 Sep 14 23:12 ..
-rw-r----- 1 lnelson lnelson 2317000704 Sep 15 23:36 FreeBSD-10.0-RELEASE-i386-dvd1.iso

Если rsync действительно повторно копирует файл и вы используете флаг --partial, то он создает временный новый файл, который имеет . в качестве первого символа, так что вы увидите его, только если вы сделаете ls -a или же ls -al пока выполняется rsync, чтобы увидеть временный файл. Это означает, что на USB-накопителе должно быть достаточно свободного места для обработки существующей копии 4 ГБ плюс новый временный файл 4 ГБ, пока не завершится копирование, после чего временный заменит оригинал, и вы вернетесь к использованию только 4 ГБ на USB-накопителе. привод. Во время rsync вам понадобится 8 ГБ памяти для завершения операции.

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