Возобновите Rsync после прерывания, и данные могут быть изменены

Возобновите Rsync после прерывания, и данные могут быть изменены

Я использовал команду «Rsync» для передачи большого объема данных из файловой системы в nfs (около 1 Тера).

Через некоторое время компьютер выключился, и передача данных была отменена (передача 600G заняла около 10 часов).

Некоторые из загруженных файловых систем были изменены/добавлены пользователями. Я хочу знать, что если я снова использую Rsync, не удаляя частичную передачу, он будет знать, что нужно игнорировать файлы, которые были переданы, и заново загрузить то, что было изменено.

P.S. Если есть возможность возобновить Rsync, будут ли переданные файлы игнорироваться намного быстрее, чем они были загружены в первый раз? Я беспокоюсь об этом, потому что мне потребовалось 10 часов, чтобы передать 600G, и я надеюсь, что следующий Rsync будет намного быстрее.

Редактировать: Очевидно, я не могу комментировать ответы... поэтому для @Kusalananda я использовал rsync -rtzvx.

решение1

Вы не использовали -aпараметры, поэтому ни права собственности пользователя и группы, ни разрешения не были сохранены. Однако временные метки были из-за использования -t.

Когда вы теперь перезапустите rsync, он не сможет использовать вышеуказанные метаданные для определения того, является ли файл в месте назначения таким же, как и в источнике. Если вам повезет, вы можете использовать --size-only, который сообщает rsync, что файл идентичен, если размер тот же; это обычно работает правильно только для таких вещей, как файлы журналов или фотографии.

Однако все может быть не так плохо, как вы могли подумать: rsync будет проверять контрольную сумму каждого файла как на источнике, так и на месте назначения, и только если контрольная сумма покажет разницу, будут переданы отличающиеся блоки. То есть не весь файл передается снова, а только измененные блоки. В этом и заключается сила rsync: оптимизация использования пропускной способности сети за счет большего количества дисковых операций ввода-вывода.

Конечно, это предполагает, что rsync передает данные по сети на другой хост. Если файловая система NFS, о которой вы говорите, смонтирована локально, то rsync, вероятно, не является инструментом для этого, поскольку rsync фактически будет использовать гораздо большую пропускную способность сети при проверке файлов. Кроме того, rsync переключается в --whole-fileрежим при выполнении локальных передач, поскольку нет смысла сначала проверять весь исходный и целевой файл, а затем копировать исходный в целевой.

В целом я бы рекомендовал использовать , -aесли это возможно. Вам может понадобиться объединить его с , --numeric-idsесли у вас разные пользователи на источнике и месте назначения; если у вас одинаковые пользователи, но идентификаторы могут отличаться, то НЕ используйте --numeric-ids, rsync сопоставит идентификаторы в соответствии с именем.

Связанный контент