Я использую rsync для копирования одного большого файла (> 4 ГБ) с жесткого диска на USB-накопитель с опцией «-av --progress». До этого файл уже существовал на usb и такой же, как и на диске. Так что в основном я провожу тест. Я предполагаю, что если rsync достаточно умен, он не должен делать настоящую копию.
Однако все равно пытается копировать (по крайней мере, из-за прогресса и мигания usb). Это первое, чего я не понимаю.
Потом жалуется на нехватку места (свободного места на usb 2 Гб). Этого не должно происходить, потому что нужно только заменить файл, занимающий столько же места, верно? Я даже использую "--delete-before", и он все равно жалуется.
Спасибо за подсказку.
К вашему первому вопросу, какова файловая система на 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 ГБ памяти для завершения операции.