- System backup
- Contents
- Using Btrfs snapshots
- Using LVM snapshots
- Using rsync
- Using tar
- Using SquashFS
- Bootable backup
- Update the fstab
- Update the bootloader’s configuration file
- First boot
- rsync (Русский)
- Contents
- Установка
- Фронтенды
- Как альтернатива cp/mv
- Предостережение о замыкающем слэше
- Как утилита для резервного копирования
- Автоматическое резервное копирование
- Автоматическое резервное копирование по SSH
- Автоматическое резервное копирование с помощью NetworkManager
- Автоматическое резервное копирование с помощью systemd и inotify
- Дифференциальное резервное копирование в течение недели
- Резервное копирование при помощи создания снимков
- Полная резервная копия системы
- Восстановление резервной копии
- Клонирование файловой системы
- Демон rsync
- Пример конфигурации
- Раздача файлов по списку
System backup
It is important to regularly backup system and user data stored for example in /etc , /home , /root , /var and for server installations, also /srv .
Contents
Using Btrfs snapshots
Using LVM snapshots
Using rsync
Using tar
Using SquashFS
Bootable backup
Having a bootable backup can be useful in case the filesystem becomes corrupt or if an update breaks the system. The backup can also be used as a test bed for updates, with the testing repo enabled, etc. If you transferred the system to a different partition or drive and you want to boot it, the process is as simple as updating the backup’s /etc/fstab and your bootloader’s configuration file.
This section assumes that you backed up the system to another drive or partition, that your current bootloader is working fine, and that you want to boot from the backup as well.
Update the fstab
Without rebooting, edit the backup’s fstab by commenting out or removing any existing entries. Add one entry for the partition containing the backup like the example here:
Remember to use the proper device name and filesystem type.
Update the bootloader’s configuration file
For Syslinux, all you need to do is duplicate the current entry, except pointing to a different drive or partition.
For GRUB, it is recommended that you automatically re-generate the main configuration file. If you want to freshly install all GRUB files to somewhere other than /boot , such as /mnt/newroot/boot , use the —boot-directory flag.
Also verify the new menu entry in /boot/grub/grub.cfg . Make sure the UUID is matching the new partition, otherwise it could still boot the old system. Find the UUID of a partition with lsblk:
where /dev/sdXY is the desired partition (e.g. /dev/sdb3 ). To list the UUIDs of partitions GRUB thinks it can boot, use grep:
First boot
Reboot the computer and select the right entry in the bootloader. This will load the system for the first time. All peripherals should be detected and the empty folders in / will be populated.
Now you can re-edit /etc/fstab to add the previously removed partitions and mount points.
Источник
rsync (Русский)
rsync — утилита с открытым исходным кодом для быстрого инкрементного перемещения файлов.
Contents
Установка
rsync должен быть установлен как на устройстве-отправителе, так и на устройстве-получателе.
Фронтенды
- Grsync — GTK-фронтенд.
https://www.opbyte.it/grsync/ || grsync
- gutback — обёртка над rsync, написанная на Shell.
https://github.com/gutenye/gutbackup || gutbackupAUR
- JotaSync — графический пользовательский интерфейс Java Swing для rsync со встроенным планировщиком.
https://trixon.se/projects/jotasync/ || jotasyncAUR
- luckyBackup — Qt-фронтенд, написанный на C++.
http://luckybackup.sourceforge.net/index.html || luckybackupAUR
Другие утилиты, использующие rsync: rdiff-backup и osync AUR .
Как альтернатива cp/mv
rsync может использоваться как продвинутая альтернатива команде cp или mv , особенно при копировании больших файлов.
Опция -P эквивалентна —partial —progress , которая оставляет частично перемещённые файлы и показывает шкалу прогресса во время перемещения.
Используйте опцию -r / —recursive для рекурсивного обхода каталогов.
Файлы могут копироваться локально, как при помощи cp, но rsync интересна прежде всего возможностью удалённого копирования файлов, то есть между двумя разными хостами. Удалённые расположения могут быть указаны при помощи синтаксиса хост-двоеточие:
Передача файлов по сети по умолчанию использует протокол SSH и хост может быть как реальным именем хоста, так и предопределённым профилем/псевдонимом из .ssh/config .
При локальном или удалённом перемещении файлов, rsync сперва создаёт список файлов, содержащий информацию (по умолчанию это размер файла и время его последнего изменения), которая затем будет использована для определения, нуждается ли файл в построении. Для каждого файла, нуждающегося в построении, находится слабая и сильная контрольная сумма для каждого блока так, что каждый блок имеет длину S байт, не пересекается с другими и имеет сдвиг, который делится на S. Благодаря этой информации, большие файлы могут быть построены с помощью rsync без необходимости перемещения файла целиком. Для более детального практического и математического объяснения см. как работает rsync (англ.) и алгоритм rsync (англ.) соответственно.
Для быстрого использования разумных значений по умолчанию, можете использовать следующие псевдонимы:
Предостережение о замыкающем слэше
По умолчанию Arch использует GNU cp (часть GNU coreutils ). Однако rsync следует соглашениям BSD cp, которые особо обрабатывают каталоги источника с замыкающим слэшем «/». Несмотря на то, что
создаёт каталог «назначение/источник» с содержимым «источника», команда
копирует все файлы из «источник/» напрямую в «назначение», без промежуточного каталога — так же, как при вызове
Это поведение отличается от такового в GNU cp, которая одинаково обрабатывает «источник» и «источник/» (но не «источник/.»). Кроме того, некоторые оболочки автоматически добавляют замыкающий слэш при tab-дополнении имён каталогов. В виду этих обстоятельств, новые или нечастые пользователи rsync могут зачастую забывать про разное поведение rsync и случайно создавать беспорядок или даже перезаписывать важные файлы, оставляя замыкающий слэш в командной строке.
Поэтому имеет смысл использовать сценарий-обёртку, чтобы автоматически удалять замыкающий слэш перед вызовом rsync:
Этот сценарий может быть размещён где-нибудь в $PATH и назначен псевдонимом для rsync в файле инициализации оболочки.
Как утилита для резервного копирования
Протокол rsync легко может использоваться для резервного копирования, перемещая только файлы, изменённые с момента последней резервной копии. Этот раздел описывает очень простой сценарий, выполняемый по расписанию, использующий rsync, обычно используемый для копирования на извлекаемый носитель.
Автоматическое резервное копирование
В этом примере сценарий будет создан в каталоге /etc/cron.daily и будет запускаться ежедневно, если демон cron должным образом установлен и настроен. Настройка и использование cron выходит за рамки этой статьи.
Сперва создайте сценарий, содержащий подходящие опции команды:
-a означает, что файлы должны быть архивированы, то есть большинство их характеристик сохранятся (но не список контроля доступа, жёсткие ссылки или расширенные атрибуты, такие как их возможности) —delete означает, что файлы, удалённые в источнике должны быть удалены и из резервной копии
Здесь /каталог/для/резервного/копирования следует заменить на каталог, нуждающийся в резервной копии (например /home ), а /расположение/резервной/копии на каталог, куда следует сохранять резервную копию (например /media/disk ).
В конце надо сделать сценарий исполняемым:
Автоматическое резервное копирование по SSH
Для резервного копирования на удалённый хост при помощи SSH, используйте следующий сценарий:
-e ssh указывает rsync использовать SSH пользователь пользователь на хост -a включает опции -rlptgoD (рекурсивно, ссылки, разрешения, времена, группы, владелец, устройства)
Автоматическое резервное копирование с помощью NetworkManager
Этот сценарий запускает резервное копирование при установлении сетевого соединения.
Сперва создайте сценарий, содержащий подходящие опции команды:
-a включает опции -rlptgoD (рекурсивно, ссылки, разрешения, времена, группы, владелец, устройства) —files-from считывает относительный путь /каталога/для/резервного/копирования из этого файла —bwlimit ограничивает пропускную способность ввода/вывода; КБайт в секунду
Root должен владеть сценарием (для изучения подробностей см. NetworkManager#Network services with NetworkManager dispatcher (англ.))
Автоматическое резервное копирование с помощью systemd и inotify
Вместо запуска резервного копирования по расписанию, например при помощи cron, можно запускать резервное копирование каждый раз, когда в один из файлов, подлежащих резервному копированию, вносятся изменения. Модули systemd.path используют inotify для мониторинга файловой системы, и могут быть использованы в связке с файлами systemd.service для запуска любого процесса (в данном случае резервного копирования при помощи rsync) на основе события файловой системы.
Сперва, создайте файл systemd.path , который будет отслеживать файлы для резервного копирования:
Затем создайте файл systemd.service , который будет активирован при обнаружении изменений. По умолчанию будет запущен файл службы, названный так же, как и модуль пути (в данном случае backup.path ), за исключением расширения .service вместо .path (в данном случае backup.service ).
Теперь запустите/включите backup.path , как обычную службу systemd и она начнёт отслеживать изменения в файлах и автоматически запускать backup.service .
Дифференциальное резервное копирование в течение недели
Это полезная возможность rsync, заключающаяся в создании полной резервной копии (при каждом запуске) и поддержании дифференциальной резервной копии только измененных файлов в отдельном каталоге для каждого дня недели.
Сперва создайте сценарий, содержащий подходящие командные опции:
—inplace заставляет —partial обновлять целевые файлы напрямую.
Резервное копирование при помощи создания снимков
Эта же идея может использоваться для поддержания дерева снимков ваших файлов. Другими словами, каталога с копиями файлов, упорядоченных по дате. Копии создаются при помощи жёстких ссылок, то есть только изменённые файлы будут занимать пространство. В общих чертах, эта идея лежит в основе TimeMachine от Apple.
Этот легко реализуемый базовый сценарий создаёт быстрые инкрементные снимки, используя опцию —link-dest для создания жёстких ссылок на неизменённые файлы:
Символическая ссылка должна уже существовать в качестве назначения —link-dest . Если предыдущий снимок удаляется, то символическая ссылка должна быть пересоздана на наиболее недавний снимок. Если —link-dest не найдёт работающей символической ссылки, rsync продолжит копировать все исходные файла вместо копирования только изменений.
Более продвинутая версия поддерживает актуальную полную резервную копию $SNAP/latest и в случае изменения определённого количества файлов с прошлой полной резервной копии, создаёт снимок $SNAP/$DATETAG текущей полной резервной копии, используя cp -al для создания жёстких ссылок на неизменённые файлы:
Чтобы сделать всё намного проще, этот сценарий можно запускать как модуль systemd/Timers.
Полная резервная копия системы
Этот раздел об использовании rsync для перемещения копии полного дерева / , исключая несколько выбранных каталогов. Этот подход считается лучше, чем клонирование диска с помощью dd т.к. он позволяет использовать различные размеры, таблицы разделов и файловые системы и лучше, чем копирование с помощью cp -a , т.к. предоставляет больший контроль над разрешениями, атрибутами файлов, списками контроля доступа и расширенными атрибутами (англ.).
rsync будет работать даже при запущенной системе, но файлы, изменённые во время перемещения могут быть как перемещены, так и нет, что может вызывать неопределённое поведение некоторых программ, использующих перемещённые файлы.
Этот подход хорошо подходит для переноса существующей установки на новый жёсткий диск или SSD.
Запустите следующую команду с правами root, чтобы удостовериться, что rsync имеет доступ ко всем системным файлам и может сохранять владельцев:
При использовании набора опций -aAX , файлы перемещаются в режиме архива, что гарантирует сохранность символических ссылок, устройств, разрешений, владельцев, времени изменения, списков контроля доступа и расширенных атрибутов, в предположении, что целевая файловая система поддерживает соответствующие функции. Опция -H сохраняет жёсткие ссылки, но использует больше памяти.
Опция —exclude исключает файлы, подходящие под заданные шаблоны. Содержимое каталогов /dev , /proc , /sys , /tmp и /run исключено в команде выше т.к. они заполняются при загрузке, несмотря на то, что сами каталоги не создаются. /lost+found зависит от файловой системы. Команда выше зависит расширения скобок в оболочках bash (англ.) и zsh (англ.). При использовании другой оболочки. шаблоны в —exclude должны повторяться вручную. Кавычки в исключаемых шаблонах позволят избежать расширения оболочкой, что важно например при резервном копировании по SSH. Окончание исключаемых путей символом * гарантирует, что сами каталоги будут созданы, если они ещё не существуют.
Возможно вы захотите добавить или убрать некоторые опции rsync, например следующие. См. rsync(1) для полного списка.
- Если в вашей системе очень мало памяти, может иметь смысл убрать опцию <
; однако это не должно быть проблемой на большинстве современных устройств. Количество жёстких ссылок в файловой системе может быть большим при использовании некоторых программ, например Flatpak. Много жёстких ссылок находится в каталоге /usr/ . - Вы можете захотеть добавить опцию rsync —delete , если запускаете его несколько раз для одного и того же каталога. В этом случае, убедитесь, что каталог источника на заканчивается на /* , иначе эта опция затронет файлы внутри подкаталогов источника, но не затронет файлы, находящиеся в самом источнике.
- Если вы используете разреженные файлы, такие как виртуальные диски, образы Docker и т.п., добавьте опцию -S .
- Опция —numeric-ids отключит сопоставление имён для групп и пользователей; вместо этого передаваться будут цифровые идентификаторы групп и пользователей. Это полезно при резервном копировании через SSH или при использовании live системы для резервного копирования другого системного диска.
- Выбрав опцию —info=progress2 вместо -v , вы увидите информацию об общем прогрессе и скорости передачи вместо списка передаваемых файлов.
- Для избежания выхода за пределы файловой системы при рекурсивном обходе, добавьте опцию -x / —one-file-system . Она предотвратит резервное копирование любых точек монтирования в иерархии.
Восстановление резервной копии
Если вы желаете восстановить резервную копию, используйте запущенную ранее команду rsync, поменяв источник и назначение.
Клонирование файловой системы
rsync предоставляет способ создания копии всех данных в файловой системы с сохранением максимально возможного количества информации, включая метаданные файловой системы. Это процедура клонирования на уровне файловой системы, где файловые системы источника и назначения не обязаны совпадать. Она может использоваться для резервного копирования, смены файловой системы или восстановления данных.
Режим архива rsync неплохо подходит для этой цели, но он не создаёт резервную копию специальных метаданных файловой системы, таких как списки контроля доступа, расширенные атрибуты или свойства разреженных файлов. Для успешного копирования на уровне файловой системы, некоторые дополнительные опции должны быть включены:
Их значение (из справочной страницы):
Кроме того, используйте -x , если другие файловые системы, которые желаете исключить из копии, примонтированы в дерево.
Полученная копия может быть легко прочитана заново и проверена (например после попытки восстановления файлов) на уровне файловой системы с помощью рекурсивной опции diff :
Возможно осуществить успешный переход на другую файловую систему, используя rsync как описано в этой статье и обновив fstab и загрузчик, как описано в Перенос установки на новое оборудование (англ.). Это в сущности позволяет поменять любую корневую файловую систему на любую другую.
Демон rsync
rsync можно запускать на сервере в качестве демона, слушающего порт 873 .
Отредактируйте шаблон /etc/rsyncd.conf , настройте общий доступ и запустите rsyncd.service .
Использование на клиенте, например перечисление содержимого сервера:
перемещение файла с клиента на сервер:
Подумайте об использовании iptables для открытия порта 873 и аутентификации пользователей.
Пример конфигурации
Раздача файлов по списку
Все промежуточные пути необходимы в списке файлов, если не используется шаблон *** :
Источник