Почему rsync копирует файлы после копирования файлов вручную?

Почему rsync копирует файлы после копирования файлов вручную?

Я скопировал много файлов во многих папках (~54 ГБ) из ext4 в другую с помощью cp ~/1 ~/2 -d -r -v -ibash. Затем я хотел проверить, что все файлы были скопированы правильно, поэтому я запустил rsync --delete -vturOn ~/1 ~/2, но rsync хотел скопировать все файлы. Почему так?

PS: Я хотел использовать cpс -a, но -dпо ошибке использовал.

Редактировать: Ответздесьзаставило меня использовать --itemize-changesфлаг, который показывает мне >f..t......для всех файлов. На странице руководства указано, что tсредства времени модификации различны, тип-файлы — это файл ( f), а атрибуты элемента только изменяются ( .). Это правильно? Так что все, что будет изменено, — это время модификации?

Редактировать: Я запустил rsync(без -n), и, несмотря на то, что tвремя изменения было разным, он снова скопировал все файлы (реальное содержимое файлов), что неожиданно, поскольку rsync в любом случае должен делать diff-копию, на что следует обратить внимание?

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

Редактировать: Я удалил целевые файлы и скопировал все заново с помощью rsync с -vanпараметрами.

решение1

Из документации rsync:

Rsync находит файлы, которые необходимо перенести, с помощью алгоритма «быстрой проверки» (по умолчанию), который ищет файлы, размер или время последнего изменения которых изменились.

Кроме того, если и источник, и цель являются локальными, по умолчанию rsyncзапускается с опцией.--whole-file

-W, --whole-file

С этой опцией алгоритм дельта-передачи rsync не используется, и вместо этого весь файл отправляется как есть. Передача может быть быстрее, если эта опция используется, когда пропускная способность между исходной и целевой машинами выше, чем пропускная способность к диску (особенно когда «диск» на самом деле является сетевой файловой системой). Это значение по умолчанию, когда и источник, и назначение указаны как локальные пути, но только если не действует опция пакетной записи.

Я не уверен, но, похоже, вам понравится эта --checksumопция.

-c, --checksum              skip based on checksum, not mod-time & size

Обратите внимание, что для вычисления контрольной суммы требуется прочитать как исходный, так и целевой файлы с диска.

Подробнее об этом:

https://superuser.com/a/118984/219809

https://serverfault.com/a/279346

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