Rsync копирует только измененные файлы; игнорировать отметки времени изменения файла

Могу ли я заставить rsync работать при следующих условиях?

if len(f1) != len(f2) then rsync if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync 

Самый близкий вариант --checksum ?


Взято из rsync manpage:

Описание

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

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

Таким образом, поведение по умолчанию, которое мы можем видеть в описании, следующее:

  • Инструмент копирования, который работает локально или удаленно
  • Множество вариантов
  • Алгоритм Delta-передачи по умолчанию, который будет передавать только файлы файлов, которые отличаются, уменьшая количество использования сети
  • Широко используемый инструмент для зеркалирования и резервного копирования
  • checkrq, который делает то, что вы хотите, при условии 1: if len(f1) != len(f2) then rsync
  • Назначение – это тот, который будет затронут, если параметры не переданы.

Теперь, это просто вопрос поиска вариантов, связанных с контрольной суммой. Поиск в руководствах:

 -c, --checksum This changes the way rsync checks if the files have been changed and are in need of a transfer. Without this option, rsync uses a lqquick checkrq that (by default) checks if each file's size and time of last modification match between the sender and receiver. This option changes this to compare a 128- bit checksum for each file that has a matching size. Generating the checksums means that both sides will expend a lot of disk I/O reading all the data in the files in the transfer (and this is prior to any reading that will be done to transfer changed files), so this can slow things down significantly. 

Описание --checksum – это именно то, что вы хотите, if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync . Он будет выполнять 128-битную контрольную сумму для каждого файла соответствия размера.

Но будьте осторожны, потому что этот вариант, в зависимости от ситуации, значительно увеличит объем ввода-вывода.