
Я хочу синхронизировать файлы в dir1 и dir2 (два разных сервера).
Меня не волнует, отличаются ли размеры файлов или время их изменения.
ПРИМЕР: dir1 содержит file1, file2, file3, file4, а dir2 содержит file2, file3, file5
Я хочу, чтобы file5 скопировался в dir1, а file1 и file4 скопировались в dir2.
Обратите внимание, что размеры file2 отличаются, как и время модификации file3, но мне все равно. Моя сеть также частная, поэтому я не хочу никаких накладных расходов на безопасность.
Что будет быстрее всего:
rsync, scp или cp через монтирование NFS? И, точнее, какая соответствующая командная строка?
решение1
Это в значительной степени академическое, потому что вашим ограничивающим фактором, скорее всего, будет пропускная способность вашей сети. Единственное, за чем действительно нужно следить, это размеры файлов по сравнению с количеством операций — множество мелких файлов приведут к множеству мелких операций копирования.
Но на данный момент сложно сказать наверняка, что будет «быстрее», потому что «это зависит».
Я был бы удивлен, если бы у вас было много проблем с rsync
, по той простой причине, что он проверит, нужно ли ему что-то делать, прежде чем копировать. Нет ничего более эффективного, чем не копировать то, что вам не нужно.
Если у вас много маленьких файлов, то вам может подойти tar
этот вариант — tar
он предназначен для записи на ленты, поэтому вполне подходит для потоковой передачи структуры каталогов по сети. Например:
tar cvfz - ./path_to_copy | ssh $remotehost "( cd $destination && tar xvfz - )"