Использование этой команды решило проблему:
rsync --progress --modify-window=1 --update --recursive --times
Он по-прежнему выдает ошибку «не удалось установить время», но, по крайней мере, синхронизация теперь работает правильно. Я нашел ответ здесь:https://serverfault.com/a/144475
На справочной странице rsync
сказано, что -a
— это то же самое, что и -rlptgoD
. Я рекомендую сделать эту замену в вашей команде rsync, то есть rsync -rlptgoDvz
, а затем удалить отдельные параметры, которые не работают в NTFS. Я ожидаю, что вам, по крайней мере, потребуется удалить-p
(разрешения ),-g
(группу ),-o
(владельца )и, возможно, также-l
(символические ссылки ). Удаление всего этого оставит вам:
rsync -rtDvz
Я некоторое время искал решение этой проблемы при использовании rsync в WSL Ubuntu (Windows 10 )для синхронизации с сетевым томом, и я думаю, что это решение может работать для вашего USB-накопителя, поскольку хорошо. Что сработало для меня, так это установка пользователя и группы при монтировании диска. Например:
sudo mount -t drvfs -o rw,noatime,uid=1000,gid=1000 'P:\' /mnt/p
Использование параметра --update/-u
— это ловкий трюк, позволяющий пропустить файлы с более новыми датами/временем в месте назначения, но если вы хотите более точно сопоставить даты/время в файлах (, например Я сделал ), тогда это было менее желательное решение. Конечно, значения uid и gid в вашей системе могут отличаться, поэтому проверьте /proc/mounts
, чтобы узнать, какие другие крепления уже могут использовать :
cat /proc/mounts
После разрешения разрешений для дат/времени вы можете удалить --update
и сократить команду до чего-то вроде:
rsync -rt --progress --modify-window=1 "$SOURCE" "$DEST"
Я думаю, что --modify-window=1
все еще может быть полезен, так как в другом исследовании, которое я проводил, казалось, что в некоторых случаях он может понадобиться в Windows: