Игнорирование дублирования файлов rsync не работает должным образом

Игнорирование дублирования файлов rsync не работает должным образом

Я запутался в работе rsync. Вот что я сделал и ожидал.

Я создал две папки с именами «sbck» и «dbck».

Сценарий 1:

Я создал файл с именем a.txtи создал его копию с помощью cp -rp a.txt aa.txt. Я поместил оба файла в sbckпапку. Далее я сделал rsync -rvch sbck/ dbck/. Это переместило оба файла в dbck.

Вопрос: Поскольку и a.txt, и aa.txt одинаковы, почему rsync разрешает эту копию? Разве это не должно быть просто что-то одно из обоих?

Сценарий 2:

Я создал файл с именем a.txtи создал его копию с помощью cp -rp a.txt aa.txt. Я поместил оба файла в sbckпапку. Далее я сделал cp -rp sbck/a.txt dbck/. Позже я сделал rsync -rvch sbck/ dbck/. Это переместило aa.txtв dbck.

Вопрос: Поскольку и a.txt, и aa.txt одинаковы, и я уже переместил a.txt в dbck. почему rsync позволяет копировать aa.txt в dbck? Как именно -c помогает мне в этом сценарии?

решение1

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

Предположим , sbck/a.txtи dbck/a.txt, и вы запускаете rsync -rvh sbck/ dbck/(примечание: нет -cопции). Что rsyncделает, так это сравнивает размер и время модификации этих двух файлов, и если они совпадают, то он предполагает, что содержимое файлов также совпадает, и не будет беспокоиться о копировании sbck/a.txtв dbck/a.txt.

Теперь предположим, что вы запустили rsync -rvch sbck/ dbck/-cэтим временем). На этот раз rsyncвычислит контрольные суммы sbck/a.txtи dbck/a.txtи использует их (вместо их размера и времени мод) для определения того, являются ли файлы одинаковыми и, следовательно, новое содержимое sbck/a.txtне нужно копировать в dbck/a.txt. Он не сравнивает контрольную сумму sbck/a.txtс контрольной суммой любого другого файла в исходном или целевом дереве.

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