Команда копирования или rsync

Следующая команда работает должным образом ...

cp -ur /home/abc/* /mnt/windowsabc/

Есть ли у rsync какое-то преимущество перед ним? Есть ли лучший способ синхронизации папок с резервными копиями каждые 24 часа?

59 голосов | спросил shantanuo 14 J0000006Europe/Moscow 2011, 09:03:45

7 ответов


0

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

ответил marchica 14 J0000006Europe/Moscow 2011, 09:08:47
0

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

В очень большой файловой системе (скажем, во многих тысячах или миллионах файлов), где файлы, как правило, добавляются, но не обновляются, «cp -u», вероятно, будет более эффективным. CP принимает решение копировать исключительно на основе метаданных и может просто заняться копированием.

Обратите внимание, что вам может потребоваться некоторая буферизация, например, используя tar вместо простого cp, в зависимости от размера файлов, производительности сети, активности диска и т. д., я считаю следующую идею очень полезной:

tar cf - . | tar xCf directory -

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

rsync часто является предпочтительным инструментом (и в общем случае приложения - мой обычный выбор по умолчанию), но, вероятно, есть много людей, которые вслепую используют rsync, не продумывая его.

ответил ckg 2 Jam1000000amMon, 02 Jan 2012 11:01:44 +040012 2012, 11:01:44
0

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

cp -pur /home/abc/* /mnt/windowsabc/

-p сохранит владельца, метки времени и режим файла. Это может быть очень важно в зависимости от того, что вы копируете.

Альтернативная команда с rsync будет

rsync -avh /home/abc/* /mnt/windowsabc

С rsync -a указывает «архив», который сохраняет все упомянутые выше атрибуты. -v указывает на «verbose», который просто показывает, что он делает с каждым файлом во время его работы. -z здесь опущен для локальных копий, но для сжатия, что поможет, если вы выполняете резервное копирование по сети. Наконец, -h указывает rsync сообщать о размерах в удобочитаемых форматах, таких как MB, GB и т. Д.

Из любопытства я запустил одну копию, чтобы заправить систему и избежать смещения при первом запуске, а затем рассчитал следующее при тестовом запуске 1 ГБ файлов с внутреннего SSD-накопителя на жесткий диск с USB-подключением. Они просто копируются в пустые целевые каталоги.

cp -pur    : 19.5 seconds
rsync -ah  : 19.6 seconds
rsync -azh : 61.5 seconds

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

ответил mightypile 27 AMpMon, 27 Apr 2015 03:04:20 +030004Monday 2015, 03:04:20
0

Для локальной копии единственным преимуществом rsync является то, что он позволит избежать копирования, если файл уже существует в целевом каталоге. Определение «уже существует» - это (a) то же имя файла (b) тот же размер (c) та же временная метка. (Может быть, тот же владелец /группа; я не уверен ...)

«Алгоритм rsync» отлично подходит для инкрементных обновлений файла по медленной сетевой ссылке, но он не будет стоить вам много денег за локальную копию, так как ему нужно прочитать существующий (частичный) файл для запуска его «diff "вычисление.

Поэтому, если вы часто запускаете такую ​​команду, а набор измененных файлов невелик по сравнению с общим количеством файлов, вы должны обнаружить, что rsync работает быстрее, чем cp. (Также у rsync есть опция --delete, которая может оказаться полезной.)

ответил Nemo 14 J0000006Europe/Moscow 2011, 09:18:49
0

Особенно, если вы используете файловую систему копирования при записи, такую ​​как BTRFS или ZFS, rsync намного лучше.

Я использую BTRFS, и у меня есть это в моем ~/.bashrc:

alias cp="rsync -ah --partial --inplace --info=progress2"

Важный флаг для таких CoW FS, как BTRFS: --inplace, поскольку он копирует только измененную часть файлов, но не создает новый для небольших изменений между файлами inode и т. д. См. этот .

ответил Geremia 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2016 21:24:58 +0300 2016, 21:24:58
0

Вопрос не в том, что эффективнее.

Команды 'rsync' и 'cp' не эквивалентны и достигают разных целей.

1-rsync может сохранить время создания существующих файлов. (используя опцию -a)
2-rsync запустит многопроцессорность и передачу с использованием локальных или сетевых сокетов. (т. е. разделить себя на несколько процессов)
3- Многопроцессорная обработка и многопоточность увеличат вашу пропускную способность при копировании большого количества маленьких файлов и даже с несколькими большими файлами.

Таким образом, нижняя строка rsync предназначена для больших данных, а cp - для локального копирования меньшего размера. (МБ в диапазоне малых ГБ). Когда вы начнете получать несколько ГБ или в диапазоне TB, используйте rsync. И, конечно, сетевые копии, rsync полностью.

ответил Ellison 11 72018vEurope/Moscow11bEurope/MoscowSun, 11 Nov 2018 20:37:40 +0300 2018, 20:37:40
0

, если вы используете cp, не сохраняет существующие файлы при копировании папок с тем же именем. Допустим, у вас есть эти папки:

/myFolder
  someTextFile.txt

/someOtherFolder
  /myFolder
    wellHelloThere.txt

Затем вы копируете одно поверх другого:

cp /someOtherFolder/myFolder /myFolder

результат:

/myFolder
  wellHelloThere.txt

Это как минимум то, что происходит в macOS, и я хотел сохранить файлы diff, поэтому я использовал rsync.

ответил h3dkandi 16 52018vEurope/Moscow11bEurope/MoscowFri, 16 Nov 2018 13:03:43 +0300 2018, 13:03:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132