cp или rsync, действительно ли cp стоит?

8

Я надеюсь , что это не считается , как вопрос без реального ответа, так как я не могу найти хороший повод , чтобы использовать cp(1)более rsync(1)практически во всех обстоятельствах. Если один , как правило , в пользу rsyncболее cp? Есть ли хорошие рекомендации по их использованию?

  • rsync: Передает различия, он может использовать сжатие, он может использоваться удаленно (и безопасно), он может быть перезапущен несмотря на прерывание, даже во время передачи одного большого файла. '

  • cp: Возможно, это просто проще в использовании? Это быстрее, чем rsync?

Союз
источник
4
Иногда накладные расходы на сравнение намного труднее, чем просто слепое копирование байтов.
Багамат
Тот же вопрос с лучшим ответом: serverfault.com/questions/43014/…
Даниэль

Ответы:

9

cpявляется частью coreutils, поэтому он присутствует везде. Кроме того, он в первую очередь предназначен для копирования файлов внутри одного компьютера.

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

PS: Кстати, использование процессора все еще имеет значение для встроенных систем.

порыв
источник
6

Основная причина, по которой вы не хотите использовать rsyncкаждую операцию копирования, заключается в том, что rsyncона требует дополнительных затрат. Перед началом передачи данных rsyncсканируются все файлы. Затем перед каждым файлом производится сравнение. Эти издержки не являются незначительными, даже с быстрыми процессорами, доступными в 2012 году. Я выполняю такой тип передач постоянно, и на серверах довольно приличного размера, как только вы начинаете работать с концертами данных, накладные расходы могут занимать много времени.

Я не говорю, не используйте rsync, совсем не используйте в rsyncлюбое время , когда вы можете сэкономить время передачи. Только не используйте, rsyncкогда cpможете сделать то же самое.

Что я обычно делаю, сначала перенесу данные, используя обычные методы копирования. Затем rsyncдля последующих изменений, когда эти различия могут быть использованы.

Дж. М. Беккер
источник
Это большая цена, учитывая, насколько мощны наши процессоры сегодня?
Союз
3
Большой является субъективным, и будет меняться в зависимости от количества файлов в зависимости от размера данных в сравнении с IO. Мое главное замечание: оно не является незначительным независимо от современных процессоров. Одна вещь, которую нужно помнить сегодняшним процессорам, все еще должна иметь дело с сегодняшними данными.
Дж. М. Беккер
Согласовано. Процессоры не становятся быстрее в вакууме. Одна из лучших причин, по которой мы используем процессоры с тактовой частотой ГГц, - это гигабитные сети: более медленный процессор просто не может поддерживать такой большой объем канала ввода-вывода. Компьютеры, как правило, настолько хорошо сбалансированы, насколько мы знаем, как их создавать. Отнимите некоторую мощность процессора, и часть емкости ввода / вывода выйдет из строя. Увеличьте потребность в вводе / выводе, и центральный процессор будет больше работать на холостом ходу, ожидая ввода / вывода.
Уоррен Янг
3

Я ожидал cpбы использовать меньше ЦП при локальном копировании, потому что он не использует различий, тогда как rsyncможет уменьшить количество записей при использовании различий. Сжатия следует избегать локально, потому что вы все равно должны читать и записывать весь файл / diff, и это требует дополнительных вычислений.

SCAI
источник
Итак, все сводится к стоимости процессора или стоимости ввода-вывода
Союз
2
@soyuz, это верно для данных, которые изменились, относительно других данных. Чем меньше разница, тем больше rsyncпредпочтение. Но когда они не различаются, rsyncэто только приносит накладные расходы без дополнительной выгоды.
Дж. М. Беккер
@TechZilla Я думаю, вы имеете в виду, когда нет ничего общего. Если нет различий, rsync просто рано завершится, потому что копировать нечего, что делает его более предпочтительным.
Изката
@Izkata: есть по крайней мере один способ увеличить rsyncиздержки ввода-вывода в два раза для двух идентичных файлов по сравнению со слепыми cp: изменить время модификации. Вы должны дать, --size-onlyчтобы исправить это. Единственный другой способ увидеть это - rsyncполагаться на контрольные суммы файловой системы, но для большинства файловых систем они не очень хорошие статистические предикторы идентичности.
Уоррен Янг
3

Совершенно независимо от накладных расходов в случае больших или несуществующих различий, rsyncпохоже, нет эквивалента cp --reflink=always, который может сохранить огромное количество данных при копировании в файловой системе, которая его поддерживает (он создает копии при записи, поэтому данные, общие между оригиналом и копией (а это, конечно, изначально все), хранятся только один раз). rsyncОднако лучше при обновлении копий CoW, используя --inplace.

Darael
источник