1

У меня есть домашний сервер под управлением Ubuntu 14.04.3 LTS с файловой системой ext4 , на которую я регулярно делаю резервные копии данных с различных устройств.

Теперь я настроил внешний USB HDD с файловой системой ZFS и хотел бы сделать резервную копию всех данных с домашнего сервера на этот USB-накопитель. И поскольку я использую ZFS на внешнем диске, я также хотел бы использовать возможности снимков ZFS .

Поскольку я буду копировать файлы из ext4 в ZFS , я не могу использовать команду zfs send . Поэтому я застрял с rsync .

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

Я наткнулся на этот пост в блоге, который использует следующую команду:

/usr/bin/rsync -axH --no-whole-file --inplace --delete / /$backup_target/root/

Помимо обычных флагов, таких как -a , -x и --delete он также использует:

  • -H (жесткие ссылки),
  • --no-whole-file (принудительно включить алгоритм delta-xfer) и
  • --inplace (обновить папку вместо создания новой резервной копии).

Мой вопрос: достаточно ли этих флагов или я должен добавить или удалить некоторые?

Поток резервного копирования будет следующим:

  1. Резервное копирование с rsync в один и тот же каталог каждый раз
  2. Создайте снимок этого каталога, используя zfs snapshot backup@'date +%Y%m%d'

Я предполагаю, что --inplace является обязательным (из-за резервного копирования в один и тот же каталог каждый раз). То же самое, вероятно, относится и к --no-whole-file поскольку он копирует только измененный блок данных. Но как насчет -H? Любые другие флаги, которые я должен добавить?

1 ответ1

3

Командная строка, которую вы нашли, обеспечивает разумную отправную точку. Я запускаю rsync для резервного копирования (через rsnapshot, который на самом деле не актуален, потому что вы будете использовать снимки ZFS для истории; я начал использовать его до того, как начал использовать ZFS, и продолжал использовать его, потому что он хорошо работает для меня) с этим набором параметров:

-aAHX --delete --numeric-ids --relative --delete-excluded

плюс некоторые параметры --exclude для вещей, для которых я не хочу делать резервные копии. Основное различие между моей установкой и найденной вами, вероятно, заключается в использовании -A (--acls) и --delete-excluded (также удаляйте исключенные файлы из директорий dest).

Как мы обсуждали в комментариях, --inplace и --no --no-whole-file - это параметры, которые, вероятно, не повредят в вашем случае использования.

-x (--one-file-system) в первую очередь полезен, когда у вас есть только одна или небольшое количество файловых систем, для которых вы хотите создать резервную копию. (Поскольку я широко использую файловые системы ZFS на стороне источника, я вместо этого - --exclude расположение цели резервного копирования.) -x указывает rsync не использовать файловые системы, отличные от перечисленных в его командной строке в качестве источников. Так или иначе, вам нужно будет исключить целевое местоположение из представления rsync об исходных местоположениях; в противном случае, при первом резервном копировании вы, скажем, /* скопируете в /backup /, затем в следующий раз вы получите /* и как часть этого /архива скопируете в /backup, и так далее. Это то, что я имел в виду, когда упомянул в комментариях рекурсивное копирование целевого каталога резервного копирования в себя.

Создайте снимок этого каталога, используя zfs snapshot backup@'date +%Y%m%d'

Вы хотите сделать zfs snapshot backup@$(date +'%Y%m%d') , очевидно. (Либо используйте $() либо используйте обратные метки; не апострофы. Я предпочитаю синтаксис $ (); с одной стороны, это гнездо.)

Кроме того, убедитесь, что у вас есть стратегия сокращения снимков, когда вы начинаете нехватать места на диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .