Использование Rsync для резервного копирования на внешний диск


17

Я покупаю внешний жесткий диск для резервного копирования компьютеров в моем доме (наконец-то !!). Я надеюсь использовать Rsync. Я видел пример, который делает (или, кажется, делает) именно то, что я хочу. Что-то вроде этого:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Однако, глядя на документацию и примеры по rsync и т. Д., Все стало выглядеть намного сложнее. Сеть и демоны и жаргон, о мой!

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


Ответы:


10

Rsync отлично работает на локальных дисках. Однако, если он обнаруживает локальные пути, он автоматически переходит в режим --whole-file, который не копирует diff-файлы, а просто копирует исходный файл поверх файла назначения. Rsync по-прежнему будет игнорировать файлы, которые не изменились вообще. Когда пропускная способность между источником и местом назначения высока (например, два локальных диска), это намного быстрее, чем чтение обоих файлов, а затем копирование только измененных битов.


2
s / Однако / К счастью /, когда файлы локальные, чтение обоих и выполнение всей разной магии для написания нового с частями обоих (чтение их снова) - намного больше работы, чем просто чтение исходного текста и запись места назначения.
Хавьер

не знал, должен ли я войти в это в своем ответе. Я добавлю это сейчас.
kbyrd

31

Я использую rsync со следующими флагами, легко запоминающимися как 'glop' и 'trunc' и 'v'.

rsync -gloptrunc $srcdir $dstdir

Краткое руководство:

  • g - сохранить информацию о собственности группы
  • l - скопировать символические ссылки как символические ссылки
  • o - сохранить информацию о владельце
  • p - сохранить права
  • t - сохранить временные метки
  • r - просмотр по каталогам
  • u - обновить, пропустить новые файлы
  • [n] - нет, не делай этого, вместо этого сделай пробный прогон
  • c - контрольная сумма, попытка контрольных сумм для блоков файлов, когда это возможно (*)
    примечание: в локальных файловых системах это переопределяется, и вместо этого копируются все файлы.
  • v - многословный

Я всегда запускаю вышеупомянутое, чтобы убедиться, что оно работает, затем убираю флаг 'n', чтобы, как только я был доволен результатами.

Ключевые особенности вышеуказанных комбинаций:

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

Я использую это для синхронизации двух машин или синхронизации с подкаталогами (например, резервное копирование на USB-накопитель).

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

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


3
Разве флаг-rsync не делает все вышеперечисленное?
Рори

2
Я не большой поклонник использования мета-флагов, когда я точно не знаю, что они делают. В manapage для rsync указывается, что '-a' на моем компьютере - это -rlptgoD, которое пропускает 'u' и 'v', но включает 'D'. из них, кажется, что единственное ключевое отличие - это добавление «и».
ericslaw

Как заставить его зеркально отражать от источника к месту назначения (удаляя в месте назначения все, чего нет в источнике), а не копировать в двух направлениях?
Габриэль Стейплз

1
Похоже, вам нужно использовать rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. Он --deleteговорит об удалении чего-либо в месте назначения, которого нет в источнике, и --delete-excludedговорит также об удалении исключенных файлов в месте назначения, которые обычно не отслеживаются и не копируются. Если вы используете --delete-excluded, технически вам не нужно также использовать --delete, но все равно можно использовать оба. Подробности в справочных страницах здесь: linux.die.net/man/1/rsync .
Габриэль Стейплз

Примечание: для общего использования rsync я также написал этот урок для себя, поэтому я могу ссылаться на него по мере необходимости: Как использовать rsync
Габриэль Стейплс

4

Ничего из этого не требуется, вы можете использовать rsync без каких-либо демонов или любого другого вида конфигурации JUST FINE!

Просто используйте команду rsync, и все готово.


2

Судя по пути в вашей команде rsync, я был бы прав, думая, что вы используете Mac OS X?

Лично я бы выбрал Time Machine (если вы используете Leopard) или Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ), который использует rsync.

Гораздо проще, чем пытаться исправить свой сценарий. Одним из преимуществ является то, что Time Machine и CCC предоставят вам дополнительные резервные копии.


2

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

Однако при использовании rsync вы, возможно, захотите учесть одну опцию --link-dest. Это позволяет вам хранить несколько резервных копий, но использовать жесткие ссылки для любых неизмененных файлов, эффективно превращая все резервные копии в пространство инкрементного. Пример использования будет:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Это предполагает, что у вас есть резервная копия с датой на 12 июня, и вы хотите создать новую 13 июня. Возможно, вы захотите пропустить опцию -v, если вы не хотите распечатывать каждый файл.


1
rsnapshot - это система резервного копирования, которая использует link-dest, как вы описываете, для эффективного сохранения резервных копий полной версии.
Рори

1

Это действительно зависит от того, используете ли вы базы данных или нет. Rsync сделает снимок каждого файла и проигнорирует любые промежуточные записи. Если вы хотите выполнить резервное копирование базы данных, вы должны посмотреть на настройку фильтра игнорирования и запуск инструментов дампа БД до rsync.


1

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


1

Вы не упомянули свою операционную систему. Исходя из предположения, что это ОС * nix, ваша команда хороша.

Однако, если один или оба диска отформатированы в NTFS, доступ к ним осуществляется из * nix или даже из Windows с использованием Mobaxterm / cygwin, то инкрементная функциональность rsync не будет работать с rsync -a (archive flag)

Если диск (и) NTFS задействованы, вы можете использовать:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Загрузите клиент Mobaxterm ssh, чтобы иметь функциональность rsync в Windows.

Вот больше информации об использовании rsync с дисками NTFS


0

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

Я немного исследовал и попробовал несколько (в основном, тестирование каждого из apt-cache search backup в ubuntu).

Наконец, я получил « backup2l - инструмент для резервного копирования и восстановления без обслуживания», это легко. Мне нравится, как он управляет планированием и ротацией (по уровням). Я запускаю его всякий раз, когда мой внешний USB-накопитель подключен из командной строки, но вы также можете автоматизировать его.


0

Попробуйте сделать резервную копию. http://www.dirvish.org/
Он использует жесткие ссылки от rsync в так называемых хранилищах. Вы можете сохранить столько старых дампов, сколько может занять USB-диск. Или настроить его в автоматическом режиме.

Как только вы поймете идею dirvish, его будет удобнее использовать, чем rsync со всеми его опциями.


rsnapshot похож на dirvish
Rory

0

Я нахожу решение для компьютера под управлением Windows: http://www.itefix.no/i2/node/10650

Чтобы скопировать раздел D: \ на внешний диск K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.