Почему бы не всегда использовать rsync?

17

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

Джим
источник
9
rsyncне везде доступно, cpесть
Мат
3
Какая установка? Linux? Который из? Unix? то же самое. BSD? Вы никогда не знаете, что приходит по умолчанию.
Тердон
5
Там действительно нет «установки по умолчанию» для Linux. Каждый дистрибутив имеет свой набор основных пакетов и множество вариантов в них. Также, когда вам нужно работать на многих системах, использование инструментов, доступных везде, упрощает работу.
Мат
4
@Mat: Существует установка по умолчанию (или ядро), если дистрибутивы Linux соответствуют через базовый пользовательский интерфейс GNU POSIX, что требует (и определяет функционирование), cpно не rsync: pubs.opengroup.org/onlinepubs/007904875 /utilities/contents.htm
Златовласка
1
Я уверен, что Debian GNU / Linux по умолчанию устанавливает rsync. Это, однако, не доступны в среде установки и спасательных работ. (Я использовал это рано сегодня для переноса содержимого моего корневого раздела с одного диска на другой. Использовал установочный DVD 7.1.0 amd64.)
CVn

Ответы:

24

Строго говоря, да, вы всегда можете использовать rsync. С man rsync(акцент мой):

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

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

Тердон
источник
Вы имеете в виду недоступность как часть установки по умолчанию, а отдельная загрузка?
Джим
1
@ Джим да, иногда тебе нужно установить rsyncсебя в зависимости от системы, в которой ты находишься. Если у вас нет rootдоступа, это может быть сложно. cpэто POSIX и всегда будет там.
Тердон
9
cpявляется частью ядра GNU coreutils, поэтому он всегда устанавливается в каждой системе Linux, а rsyncего нет.
Мартин фон Виттих
1
sometimes it is just not worth typing those few extra characters- У меня есть псевдоним pcp(для «прогресс-копии») для этого;)
Изката
19

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

Также, когда целевые файлы не существуют, rsync не дает никаких преимуществ над cp.

maxschlepzig
источник
1
Ниже методология копирования rsync значительно медленнее. См. Unix.stackexchange.com/questions/374071/… . Строка cp показывает (на момент написания этой статьи) простую последовательность операций чтения / 32 КБ записи размером 32 КБ. Rsync, тем временем, выполняет чтение / 4092-байтовую + 4-байтовую запись в сокет / чтение из сокета / 250KB запись в файл. Я делаю rsync 36T файлов смешанного размера со скоростью 130 МБ / с. Я могу утроить это с помощью cp -a. rsync побеждает, как вы говорите, когда вы хотите «сделать так, чтобы это» выглядело как «это» в каталогах, которые уже похожи.
Майк С
7

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

wcang
источник
6
Это с -Sфлагом.
Тердон
2
@terdon, ну хорошо, пожалуйста, обратитесь к этой статье: barricane.com/rsync-vm-sparse-inplace-kvm-vmware .
13
Ах, спасибо, вы должны добавить это к своему ответу. Я просто быстро искал справочную страницу sparse.
Тердон
4

Потому что этот cpфлаг отсутствует в rsync:

-i, --interactive
       prompt before overwrite (overrides a previous -n option)
Dalker
источник
Нет, хотя -nна rsync есть (пробный запуск), который может быть заменой этой функции.
Niloct