.png)
Я использую rsync для резервного копирования файлов с моего ноутбука Mac на USB-накопитель (exFAT) на моем ноутбуке Windows. USB-накопитель является общим в моей домашней сети и смонтирован на моем Mac.
Я заметил странную проблему, когда rsync пересылал все файлы, хотя я ничего не делал для их изменения.
Когда я включил его, --itemize-changes
я увидел, что это t
было в выходных данных для каждого файла, указывая на то, что причиной повторной отправки были временные метки файла.
>f..t.... netstat.txt
ls -lT
(macOS) указала отформатированную в секундах временную метку, которая показывала разницу в одну секунду между файлом и более новым источником.
$ ls -lT source/file.txt
-rwxr----- 1 user group 1176 Sep 19 22:32:59 2014 file.txt
$ ls -lT destination/file.txt
-rwx------ 1 user group 1176 Sep 19 22:32:58 2014 file.txt
Добавление -c
опции в rsync игнорировало разницу временных меток и пропускало ненужные передачи. Однако я хотел бы знать, почему у моих исходных и целевых файлов разница во временных метках составляет 1 секунду (насколько я потрудился проверить).
решение1
Я знаю, что файловые системы могут обрабатывать время по-разному, так что это, скорее всего, источник расхождения. Вы можете настроить порог сравнения mod-time с помощью --modify-window
.
# Ignore up to a 5 second difference. Tighten up as desired.
rsync --modify-window=5 do whatever...
Более подробную информацию можно найти наman-страница для Rsync.
--изменить-окно
При сравнении двух временных меток rsync считает временные метки равными, если они отличаются не более чем на значение окна изменения. Обычно это 0 (для точного совпадения), но в некоторых ситуациях может оказаться полезным установить большее значение. В частности, при передаче в файловую систему MS Windows FAT или из нее (которая представляет время с разрешением 2 секунды),--изменить-окно=1полезно (допускается разница во времени до 1 секунды).