cwRsync, сетевой диск, проблема времени модификации файла
Я использую cwRsync 5.4.1 x86 Free под Windows и пытаюсь синхронизировать папку с сетевым диском. Я выполняю следующую команду:
rsync.exe -rLtv --delete --ignore-errors "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"
Где D - локальный диск, а Z - сетевой диск (внешний жесткий диск подключен к маршрутизатору, RT-N16). Выполнение его несколько раз дает один и тот же результат:
>rsync.exe -rLtv --delete --ignore-errors "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"
sending incremental file list
./
1.pdf
sent 11,893,922 bytes received 38 bytes 1,829,840.00 bytes/sec
total size is 11,890,918 speedup is 1.00
У меня есть один файл в папке, и он отправляет свое содержимое при каждом выполнении. Файл один и тот же каждый раз и не был изменен в середине.
Если я добавлю дополнительный параметр --size-only, он будет работать как положено:
>rsync.exe -rLtv --delete --ignore-errors --size-only "/cygdrive/d/1/" "/cygdrive/z/ZipNB/"
sending incremental file list
./
sent 72 bytes received 22 bytes 188.00 bytes/sec
total size is 11,890,918 speedup is 126,499.13
DIR для обоих каталогов:
D:\1>dir
Volume in drive D is XXX
Volume Serial Number is XXXX-XXX
Directory of D:\1
08.12.2016 10:04 <DIR> .
08.12.2016 10:04 <DIR> ..
24.11.2016 18:31 11 890 918 1.pdf
1 File(s) 11 890 918 bytes
Z:\ZipNB>dir
Volume in drive Z is BackUp (at Portable)
Volume Serial Number is XXXX-XXX
Directory of Z:\ZipNB
08.12.2016 10:04 <DIR> .
08.10.2016 20:40 <DIR> ..
24.11.2016 18:31 11 890 918 1.pdf
1 File(s) 11 890 918 bytes
Я не уверен, но поскольку я знаю, что rsync по умолчанию выполняет проверку файла по времени и размеру изменения. Оба файла кажутся идентичными. Но похоже, что cwRsync по какой-то причине получает / устанавливает неправильную дату изменения файла на диске Z. cwRsync работает правильно, если оба каталога находятся на локальном диске. Это происходит только с сетевым диском.
В свойствах окон есть разница во времени модификации в 1 секунду, что может вызвать проблему.
Я взял только 1 файл в качестве примера, только чтобы упростить вывод, ситуация та же, что и для любого количества разных файлов. Он всегда отправляет полное содержимое каждого файла. Что здесь может быть не так, и как я могу это исправить?
1 ответ
Я предполагаю, что жесткий диск на сетевом ресурсе использует FAT, потому что из File Times:
Например, разрешение времени создания в FAT составляет 10 миллисекунд, в то время как время записи имеет разрешение 2 секунды, а время доступа - 1 день, поэтому это действительно дата доступа.
Это объясняет разницу во времени.
И по этой причине rsync добавил опцию --modify-window:
- @, --modify-window
При сравнении двух временных меток rsync рассматривает временные метки как равные, если они отличаются не более чем на значение окна модификации. По умолчанию 0, что соответствует целым секундам. Если вы укажете отрицательное значение (и получатель будет иметь версию не ниже 3.1.3), то наносекунды также будут приняты во внимание. Указание 1 полезно для копий в / из файловых систем MS Windows FAT, потому что FAT представляет времена с разрешением 2 секунды (что позволяет разностям отличаться от оригинала до 1 секунды).
Поэтому попробуйте добавить -@1 к вашей команде.