Как сделать бэкап системы linux
Перейти к содержимому

Как сделать бэкап системы linux

  • автор:

System backup

There are several good ways to backup a Linux system, and I’ll start with the first one I ever heard of, compression to an archive using tar command.

it’s easy to make a tar file of all system and user files with something like
sudu tar

I added the exclude for /var/cache/apt/archives/

Also it’s a good idea to exclude $HOME/.cache or clean chromium’s or firefox’s cache before backup (e.g with bleachbit).
You may want to make the backup on another partition too.

The ‘z’ option adds gzip to the command so that the tar file is compressed (tar alone just makes one file of everything).
another option is ‘u’ which updates the tar file, making changes, not sending everything all over again.
Adding the switch —one-file-system will exclude files from other partitions, e.g. for backup of system only:

Using scripts

Note: restoring an image from e.g. a 20Gb hdd source onto a 50Gb target, might render the target as a 20Gb disk — gparted will be needed in that case to expand the part to fill the 50Gb.

Make a Live USB

Clonezilla can make a Live CD iso of your cloned image, see here

you need an image already

  • go through the steps above to restore an image, but after select beginner,
  • select recovery-iso-zip
  • select image
  • select target for restoring from the iso! — change to «ask_user«
  • select lang, keymap
  • select iso or zip

Burn the USB

try unetbootin or tuxboot with iso file

or use the zip file with a command like: and make it bootable with:

RefractaSnapshot

With this script written by fsmithred, you can make a full system backup of your working box, which also becomes a Live Debian that can run or install anywhere you like. It’s smooth and easy to use. Runs via CLI or by its GUI.

download refractasnapshot and refractainstaller (base deb and gui deb if needed) from http://sourceforge.net/

cd to download dir

If there are unmet dependencies, sort it out with
for a new system I found refractasnapshot-base needed
squashfs-tools live-boot live-config live-boot-initramfs-tools live-config-sysvinit

version 9.3.3 needed the following.
libburn4 libjte1 libisofs6 libisoburn1 xorriso isolinux

refractainstaller needed
grub-pc grub-legacy

Also, you must install a newer version yad (>21.0), necessary for the snapshot installer to run properly, from here sourceforge.net/projects/yad-dialog

then cd, ./configure, make, sudo make install

or get the sid release deb binary from pkgs.org

1a. Config file

change the refracta working directory out of /home (to another partition), using the config file:
edit the exclude list (to reduce the final iso size) sudo geany /usr/lib/refractasnapshot/snapshot_exclude.list I added

1b. Post-scripts

these run after the install and before the unmount and reboot.

This one is in process, a script to ask whether a root dir should be moved to another partition — such as /var, or /usr. check it here https://gist.github.com/fsmithred/.

-it needs to go in /usr/lib/refractainstaller/post-install/
-the source (dir to move) and dest (partition) can be added to the script or you can try using yad to ask for which dir to move (I haven’t had time yet to test it)
and

2. Disk clean up

I recommend running Bleachbit as root to clean up the system before running a snapshot back-up.

  • install a dependency:
  • install the bleachbit deb
  • run sudo bleachbit
  • select some things like apt cache clean and Localization (unwanted languages — all those LC_MESSAGES files -set which ones to keep in preferences)
  • hit preview and then clean
  • run bleachbit as normal user to clean up the web browser cache and whatever

3. Build the snapshot

To make a snapshot of the installed system, either to backup or clone it to another PC, run `sudo refractasnapshot’

running it with the gui seems pointless to me, really

needed disk space = disk size used by the system files + room for the iso file (in my case with the proper excludes, 5.5Gb + 1.9Gb)

you can enable xz compression in the conf file, but it takes longer to make the iso file. You just un-comment the line: #mksq_opt=»-comp xz»

Tip: to get the installer icon on the desktop when you boot the Live ISO on another machine, but not present on the desktop on a new install.

  1. copy the .desktop file to the desktop i.e.
  2. edit the exclude list
  3. add the exclusion
  4. thus when the installer copies the file system to the target machine, the install icon will be excluded (so it only appears in the Live environment)

4. refracta2usb

to install the package, get from http://sourceforge.net/

install the dependencies
This allows install of a Live system to USB from a Live CD iso or from a running live session, and can also update the file-system on USB stick later with a newer one. (Unetbootin can be used if preferred)
http://distro.ibiblio.org/refracta/.

refracta2usb complains if the usb is mounted (and Unetbootin complains if its not mounted!)

Don’t eject the device, unmount with pumount /dev/sdb1 etc

Tip: before updating the ISO image on the USB stick, first erase the previous files. It can happen that the stick gets full.

If you can’t boot with the stick, try to reformat the USB stick, as a partition mess-up will prevent it booting.

5. refractainstaller

It’s a pretty straight forward affair once you boot into your Live system from the USB stick. I get my partitions ready before hand with gparted from Live.

Just run `refractainstaller` or `refractainstaller-yad`to run the installer.

It’s very nice to see your snapshot system getting cloned onto another box!

Note: installing on Uefi firmware PCs is not the same as installing on the usual BIOS PC. You need to get refractainstaller 9.2 or later and to install your ISO run `refractainstaller-uefi`. see «uefi and the installer»

Uefi will only boot a 64bit ISO as well — so to install a 32bit Debian, you’ll need at least one 64bit ISO on the usb stick in order to boot it and reach the boot menu.

Also, you may need these .deb packages on the root or in home of the ISO, to run a dpkg install using chroot during the refractainstaller process,
You could install these on your 64bit Debian before running the snapshot, but it removes grub-pc, so you should only do that if your Pc is uefi.

FSArchiver

is worth looking at too, its a file system archiver, as the name suggests http://www.fsarchiver.org/Main_Page

you can install it via apt, or download the binary file

It has a frontend called fsarchiver_dialog, http://zolli.altervista.org/fsa_dial/

Or you can just type fsarchiver in a terminal and it will give you the commands to use (or better, do man fsarchiver)

Introduction

Backup and recovery is essential. Failure to have verified backup and recovery procedures puts your data at risk of loss. Users often only learn this lesson after critical information they require is permanently lost. Attempting to recover from data loss can be both time consuming and extremely difficult. So learn from others mistakes, and ensure beforehand that you have a system in place that protects your data and suits your needs.

Backup

Types of Backup

This document will cover three basic types of backup; Full, Incremental, and Differential.

Full: A full backup backs up all the files in the back up target.

Incremental: An incremental backup backs up all the files that have changed since the last backup.

Differential: A differential backup backs up all the files that have changed since the last full backup.

Backup Methods

mtime, atime and ctime

  • mtime — modification time; this value is changed when the contents of the file is changed.
  • atime — access time; the value of this is changed when the file is accessed. The atime can also change when a backup utility or script has read the file as well as when a user has reads the file.
  • ctime — change time; the value is updated whenever the attributes of the file change. This can be ownership or permission.

Recovery

  • Restore many single files
  • Restore an older version of a file
  • Restore an entire folder
  • Restore an entire drive and compare the checksum

If you do not test you may find out that nothing was being backed up when you need to restore the files in reality.

Программы резервного копирования Linux

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

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

Программы для резервного копирования в Linux

1. Rsync

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

2. AutoMysqlBackup

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

3. Duplicity

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

4. Rdiff-backup

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

5. Bacula

Это уже не просто скрипт, а полноценная система резервного копирования, которую надо размещать на нескольких серверах. Она состоит из нескольких компонентов, каждый из которых имеет своё предназначение. Программа имеет открытый исходный код и предназначена, в первую очередь, для предприятий. Кроме полных резервных копий, так же как и в Rsync поддерживаются инкрементные, когда копируются только изменённые данные.

6. Backupninja

У программ, которые можно использовать для резервного копирования, таких как rsync, duplicity, tar и других нет конфигурационных файлов, с помощью которых можно было бы настроить и распланировать резервное копирование. И это понятно, они специально для этого не были предназначены. Backupninja — это оболочка для таких программ. Утилита позволяет настроить резервное копирование как файлов так и баз данных с помощью различных инструментов, но при этом хранит все конфигурационные файлы в одном месте — /etc/backups.d/. К тому же вместе у программой поставляется псевдографическая утилита ninjahelper, помогающая настроить всё почти в графическом интерфейсе.

7. Kbackup

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

8. BackupPC

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

9. Amanda

Amanda расшифровывается как Advanced Maryland Automatic Network Disk Archiver. Это тоже кроссплатфноменная программа для резервного копирования, созданная, в первую очередь, для предприятий. Она может располагаться на нескольких компьютерах, благодаря клиент-серверной архитектуре и сохранять резервные копии на другой сервер. Для создания резервных копий используются системные утилиты, в Linux это tar.

10. Back In Time

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

11. Box Backup Tool

Ещё один инструмент корпоративного уровня. Его можно установить на несколько машин и выполнять резервное копирование между ними. Программой можно управлять только с помощью командной строки. Поддерживаются инкрементальные копии, а также шифрование данных.

12. Luckybackup

Это ещё одна оболочка над утилитой rsync, только на этот раз с графическим интерфейсом. Она позволяет планировать автоматическое резервное копирование, выполнять полные копии или только синхронизировать изменения с сервером. Интерфейс утилиты интуитивно понятный и достаточно удобен в использовании.

13. Timeshift

Раньше мы рассматривали программы, предназначенные для резервного копирования отдельных файлов и каталогов, однако существуют программы предназначенные для полного копирования всех файлов операционной системы. К ним относится Timeshift. Программа имеет как графический так и консольный интерфейс и позволяет создавать резервные копии системы с помощью rsync или btrfs. Подробнее об её возможностях читайте тут.

14. Clonezilla

В отличие от Timeshift программа Clonezilla поставляется на отдельном образе и запускается из BIOS. Она позволяет создать резервную копию как Linux так и Windows потому что копирует весь диск побайтово и потом позволяет всё это восстановить. Подробнее о том как пользоваться Clonezilla читайте в отдельной статье.

15. Systemback

Утилита Systemback чем-то похожа на Timeshift. Она тоже позволяет создавать точки восстановления операционной системы и потом с помощью них восстанавливать работу вашего дистрибутива. Кроме того, с помощью утилиты можно скопировать систему на другой диск или создать LiveCD образ для будущего восстановления.

Выводы

Всегда помните, что резервное копирование очень важно, оно помогает предотвратить потерю данных. Существует огромное количество программ резервного копирования Linux, которые помогут регулярно копировать ваши данные.

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Резервное копирование системы

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

Одним из наиболее популярных способов создания простейшего бэкапа является архивация данных с помощью tar. Преимуществами данного способа являются возможность инкрементного бэкапа (добавления файлов в существующий архив, удаления или изменения таковых), возможность извлечения из архива отдельных файлов, а также присутствие tar практически в любой Linux-системе.

Создание архива

Для начала создайте точки монтирования для корневого раздела и для раздела, на котором вы собираетесь создавать бэкап, например так

Смонтируйте оба раздела. Для большей надежности можно смонтировать корневой раздел в режиме read-only (только для чтения), чтобы исключить вероятность случайного изменения данных

(Вместо «sdXY» используйте ваши значения для нужных разделов. определить их можно с помощью sudo fdisk -l или sudo blkid )

В случае, если вы используете отдельные разделы для /boot, /usr, /home и пр. и хотите включить их содержимое в бэкап, примонтируйте их в соответствующие папки

При необходимости создайте на бэкап-разделе папку, в которой вы хотите разместить архив, например

Теперь можно приступить к созданию архива. Чтобы создать архив с gzip-сжатием, выполните

(Ключ -p включает сохранение владельцев и прав доступа для файлов 1) )

Для bzip2-сжатия используйте

Аналогично для lzo-сжатия — ключ —lzop вместо —lzma

По завершении процесса отмонтируйте все смонтированные разделы

Восстановление из архива

Создайте точки монтирования для корневого раздела и раздела, на котором хранится ваш архив

Примонтируйте раздел с архивом-бэкапом

Отформатируйте корневой раздел в ту же (или другую) ФС. Если вы используете отдельные разделы для /usr, /boot и пр. и архивировали их, отформатируйте их тоже

(если вы восстанавливаете систему на новый жесткий диск, разметьте его с помощью fdisk/gparted и отформатируйте разделы)

Для ext2/3/4 UUID задается с помощью ключа -U , а еще больше упростить задачу можно командой вида

Для reiserfs это будет ключ -u , для reiser4 -U , для остальных см. man mkfs.тип

Смонтируйте свежесозданные ФС

Теперь можно распаковать содержимое архива на место

(ключ -C задает каталог, в который нужно распаковать файлы. ключ —same-owner сохраняет владельцев файлов при распаковке)

Если вы воспользовались советом выше и создали ФС тех же типов с теми же UUID — можете смело пропустить этот пункт. В противном случае вам придется исправить fstab в соответствии с произведенными изменениями. Откройте этот файл в любимом текстовом редакторе (например, nano) и замените UUID (и тип ФС, если форматировали что-либо в другую ФС) нужных разделов

Сохраните файл, выйдите из редактора и отмонтируйте все смонтированные разделы

dd — копирование раздела

dd — достаточно универсальная программа, применяемая для всевозможных целей. Здесь мы рассмотрим бэкап раздела диска с ее помощью. Сразу стоит отметить, что данный способ принципиально отличается от других тем, что dd работает не с файловой системой (и файлами на ней), а напрямую с данными, записанными в заданную область жесткого диска.

Данный метод имеет следующие преимущества:

Однако, есть целый ряд недостатков:

Учитывая вышеизложенное можно сказать, что dd — не самый лучший инструмент в данном случае. С другой стороны, в освоении и использовании он проще многих других средств.

Создание образа

Нельзя допускать, чтобы данные на разделе изменялись во время копирования, иначе данные в образе будут противоречивы, а сам бэкап — бесполезен. Можно выбать один из следующих вариантов:

Создайте точки монтирования для корневого и бэкап-разделов

Смонтируем раздел для бэкапа

Теперь мы применим одну хитрость — прочистим свободное место от старого мусора (остатков удаленных файлов), перезаписав его нулевыми (пустыми) байтами. Эта операция не обязательна, но может заметно помочь при сжатии образа. Если сжимать образ не требуется, то следующие две команды вам не нужны.

(Опция if задает входной файл, в данном случае это /dev/zero — псевдоустройство, генерирующее поток нулевых байтов; опция of — выходной файл, в которые записываются наши данные; bs задает размер блока, т.е. количество информации, считываемой/записываемой за один раз — в данном случае это 4МБ)

Под конец процесса dd завершится с ошибкой — это нормально, потому что генератор нулей у нас бесконечный, а место на диске не резиновое. Теперь удалите полученный файл

Отмонтируйте корневой раздел

Все, можно приступать к процессу.

Монтируем тот раздел, куда будем сохранять бэкап

Выполняем операцию, по созданию бэкапа

sdXY — ваш корневой раздел. (в данном примере мы используем немного усложненный вариант — по мере копирования сразу же пропускаем данные через архиватор, в итоге получая уже сжатый образ. вместо gzip вы можете применить lzma или другой архиватор на ваш выбор. также можете поэкспериментировать с размером блока — данная опция влияет на производительность. с опцией conv=noerror процесс не будет прекращен при ошибке чтения/записи)

FIXMEзнающие люди, распишите кто-нибудь про оптимальный подбор bs (что конкретно оно дает),

[i|o]bs — размер блока при работе с потоком. ibs — размер блока при чтении, obs — размер блока при записи, bs — устанавливает оба значения сразу. Рекомендуется ставить кратным степени двойки, умноженной на размер кластера файловой системы (обычно это 4096 байт). Для современных жестких дисков 1Мб — это нормально, но значения, бОльшие 64кб, на мой взгляд, не ускоряют операций с диском. — AnrDaemon 2012/03/12 22:40

а заодно про conv=sync (нужен ли он)

НЕТ. Это может привести к повреждению результирующего образа. man dd для разнообразия? Там даже пример есть. На русском, если у вас русские маны стоят. А вот iflag=direct (либо, при записи на блочное устройство — oflag ) при работе с блочными устройствами использовать стОит, чтобы не получить на выходе файл «образа» раз в 5 бОльше исходного раздела. — AnrDaemon 2012/03/12 22:40

Понятно чем больше значение bs , тем бóльшими блоками данных будет оперировать dd и тем быстрее работа. Оптимальным для скорости считается размер блока, равным или чуть меньшим половины объёма кэша жесткого диска. Но нужно еще выяснить есть ли опасность задания слишком больших значений bs . Не известно есть ли возможность при большом параметре bs «зацепить» в образ одного раздела кусок следующего? И что случится при восстановлении раздела из такого образа? Не затронет ли dd соседний раздел?

Если не использовать копирование напрямую с диска (/dev/sdL), а работать с разделами (/dev/sdLN) или файлами (ранее созданными резервными копиями), и не использовать ненужных опций, типа conv=sync — никакой опасности нет. Чтение просто остановится в конце файла(устройства). — AnrDaemon 2012/03/12 22:41

Для слабых компьютеров имеет смысл применить вариант без архивации «на лету»

При желании вы сможете позже сжать образ с помощью любого архиватора на другом компьютере

Теперь вернитесь на вкладку/консоль с dd — там вы увидите информацию об объеме скопированных данных и скорости записи.

Если вы хотите видеть вывод данных о работе dd постоянно (через определенные промежутки времени), то во второй консоли следует ввыполнить:

в параметре -n2 — 2 означает выполнять команду каждые две секунды.

Повторите все этапы для отдельных разделов (/boot, /usr и пр.), если таковые имеются.

По завершении процесса отмонтируйте бэкап-раздел

Восстановление раздела из образа

Смонтируйте раздел с образом-бэкапом

Собственно, можно приступать (дополнительных манипуляций вроде форматирования раздела в данном случае не требуется)

Или же для несжатого образа

(в обоих случаях sdXY — ваш корневой раздел)

Монтирование образа

С образом раздела, сделанным с помощью dd можно работать как с настоящим разделом, т.е. записывать на него файлы, удалять или изменять существующие и т.д. Для этого нужно лишь смонтировать образ как loop-устройство

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

Теперь можно смонтировать образ

(С опцией loop программа mount автоматически «подцепит» файл-образ на свободное loop-устройство, после чего смонтирует файловую систему)

Теперь вы можете работать с содержимым образа как с обычной файловой системой, все ваши изменения запишутся в образ. По завершении работы отмонтируйте образ как обычную ФС

dd — копирование всего жесткого диска

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

Создание образа

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

Перед началом операции убедитесь, что ни один из разделов данного жесткого диска не смонтирован. Сделать это можно запустив команду mount без параметров.

Выберите раздел, на котором вы собираетесь разместить файл-обарз. Разумеется, это должен быть раздел другого жесткого диска. Также убедитесь в наличии достаточного количества свободного места на этом разделе (например, с помощью утилиты df ) — объем свободного места должен соответствовать объему копируемого жесткого диска (при сжатии образ получится меньше, но это зависит от типа хранимых данных).

Теперь можно приступать

(здесь «sdX» — диск, а не раздел! для копирования без сжатия команда аналогична приведенной выше для бэкапа раздела)

В зависимости от размера жесткого диска и производительности компьютера процедура может занять продолжительное время (до нескольких часов). По завершении отмонтируйте бэкап-раздел

Восстановление из образа

Убедитесь, что ни один раздел восстанавливаемого диска не используется. Смонтируйте бэкап-раздел

Можно приступать к процедуре

Или же для несжатого образа

По завершении отмонтируйте бэкап-раздел

Не используйте оба жестких диска («дубликат» и «оригинал») одновременно! При подключении обоих дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки

Монтирование образа

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

Если образ сжатый — распакуйте его. Теперь «подцепите» образ на loop-устройство

(С ключом -f программа автоматически найдет свободное loop-устройство, иначе необходимо явно указывать его)

losetup выведет на экран имя использованного устройства — если вы не работаете с другим файлами-образами (iso, шифрованными контейнерами и пр.), это скорее всего будет /dev/loop0

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

(Ключ -a — добавить разделы для заданного устройства; -v — информативный вывод)

Программа выведет имена созданных устройств для разделов диска: loop0p1 для первого раздела, loop0p2 — для второго, по аналогии с разделами обычного диска. Файлы устройств будут находиться в папке /dev/mapper

Теперь можно работать с разделами и ФС на них. Например, смонтировать бывший sda5 и записать на него файлы

По заверешнии отмонтируйте раздел

Удалите устройства-разделы с помощью kpartx

и освободите loop-устройство

Все! Изменения записались, а ваш образ снова стал обычным файлом

Здесь мы рассмотрим бэкап с помощью утилиты cp , т.е. с использованием простого копирования. Вообще-то, это не самый оптимальный способ, и подходит он скорее для копирования системы на другой жесткий диск / раздел / компьютер, нежели для создания резервной копии.

С другой стороны, данный способ имеет ряд преимуществ:

Создание копии

Создайте точки монтирования для корневого и бэкап-разделов

Смонтируйте оба раздела

Смонтируйте разделы для /usr, /boot и пр., если таковые имеются

Создайте на бэкап-разделе папку для своего бэкапа

(ключ -a включает копирование ссылок «как есть», сохранение всех возможных атрибутов файлов и рекурсивный режим. ключ -v — вывод информации о происходящем)

По завершении процесса отмонтируйте все разделы

Восстановление из копии

Создайте точки монтирования для разделов

Отформатируйте корневой раздел и разделы /usr, /boot и пр., если таковые имеются. (Про форматирование разделов с сохранением UUID см. в разделе про tar)

Смонтируйте свежесозданные ФС

Процесс копирования происходит аналогично, только в обратном направлении

По завершении копирования отредактируйте fstab, исправив UUID разделов

squashfs

squashfs — файловая система, создаваемая в виде файла-образа, использующая сжатие.

Она имеет целый ряд преимуществ, таких как:

Из недостатков можно выделить следующее:

Последний пункт означает, что для начала вам потребуется подобрать дистрибутив, содержащий пакет утилит для squashfs или же имеющий возможность установки из репозитория. В качестве примера можно предложить Parted Maigc, а вообще-то подойдет и liveCD Ubuntu, нужно будет просто установить пакет squashfs-tools

Создание образа

Cоздайте точки монтирования для корневого и бэкап-разделов

Cмонтируйте оба раздела

Cмонтируйте отдельные разделы для /boot, /usr и пр. (если имеются) в соответствующие папки

Все, можно приступать. Для создания образа используется утилита mksquashfs

(С опцией -no-duplicates программа не будет исключать одинаковые по содержимому файлы. Многие программы используют пустые файлы для различных целей — без данной опции такие файлы не вошли бы в образ как дубликаты. Кроме того, можете поэкспериментировать с опцией -b — она задает объем данных, который будет считан/записан за один раз, до 1 МБ)

В отличие от многих других инструментов mksquashfs покажет индикатор прогресса с указанием процентов. По завершении программа также выведет информацию о количестве файлов/папок/ссылок, коэффициенте сжатия и пр.

Готово! Осталость лишь отмонтировать разделы

Кроме этого, можно создать образ и без сжатия — для этого используйте mksquashfs с опцией -noD

Восстановление из образа

Создайте точки монтирования для разделов

Отформатируйте корневой раздел и разделы /usr, /boot и пр., если таковые имеются. (Про форматирование разделов с сохранением UUID см. в разделе про tar)

Смонтируйте свежесозданные ФС

Можно приступать! Для распаковки образа используется утилита unsquashfs

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

Как и при создании образа, вы увидите индикатор прогресса и множество другой полезной информации.

По завершении отредактируйте fstab, заменив UUID разделов на новые (если вы форматировали разделы с теми же UUID, пропустите этот шаг)

Сохраните файл и отмонтируйте все разделы

Монтирование образа

squashfs монтируется как любой другой образ — через loop-устройство. Поддержка squashfs ядром включена во множестве дистрибутивов, в том числе и в Ubuntu, так что достаточно будет просто воспользоваться командой mount с опцией loop

(Опция ro не обязательна, т.к. записать туда все равно ничего не получится)

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

По завершении отмонтируйте образ как обычную ФС

rsync

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

Простое использование

Синтаксис rsync подобен cp :

Параметра -a очень часто бывает достаточно, он обеспечивает самое нужное: рекурсивное копирование директорий, сохранение информации о владельце и группе и т.д. Для отображения подробной информации о копировании используется ключ -v , с ним будьте внимательны, в потоке данных можно пропустить сообщение об ошибке. Ключ -x гарантирует, что rsync не выйдет за пределы указанной файловой системы.

В документации к rsync описана масса параметров. Например, есть такие, которые позволяют выполнять копирование по SSH , или удаляют файл из точки назначения, если он был удалён в исходной директории.

«Умное» копирование позволяет сократить время простоя системы. Запускаем rsync прямо на работающей системе, данные в которой постоянно изменяется, rsync копирует данные, скажем, в течение нескольких часов. Затем переводим систему в read-only, снова запускаем rsync , теперь он копирует только те файлы, которые изменились за эти несколько часов. Через несколько минут мы имеем полную копию исходной ФС. Время простоя при этом сократилось на порядок по сравнению с оффлайн-копированием. А в некоторых случаях будет достаточно и одного онлайн-копирования без перевода системы в read-only.

Сохранение предыдущих копий

Строго говоря rsync не является средством резервного копирования – это средство синхронизации. Это важно при создании регулярных копий, поскольку, если какой либо важный файл был удалён в рабочем каталоге источнике – rsync удалит его и в резервной копии. Для повышения сохранности данных целесообразно сохранять старые резервные копии. Однако простое сохранение нескольких копий потребует много памяти на жёстком диске. Если копии имеют много одинаковых файлов, то это приводит к ненужной избыточности. Эту проблему позволяет решить использование жёстких ссылок.

Суть состоит в том, что в современных файловых системах (в том числе Ext4) адресация файла производится в два этапа: имя файла указывает на уникальный номер файла (индексный дескриптор или i-node), а этому номеру сопоставлены сами данные. Любое имя файла это, по факту, жёсткая ссылка на этот номер. Следовательно, файл (набор данных) может иметь несколько имён и быть разных каталогах, а это позволяет устранить избыточность в случае необходимости дублирования файлов (ведь жёсткая ссылка занимает мало памяти). Сами данные не удаляются до тех пор пока не будет запрошено удаление последней жёсткой ссылки.

Существенное ограничение состоит в том, что жёсткие ссылки возможны только в пределах одной файловой системы.

Синхронизация содержимого каталога для текущей резервной копии с каталогом источником:

В каталоге « /backup/latest/ » будет создана копия всех необходимых файлов и каталогов из источника и удалено всё лишнее.

Создание ещё одной текущей резервной копии без избыточности:

При следующем создании резервной копии rsync удалит в каталоге « /backup/latest/ » файлы которые были удалены/исключены/изменены в каталоге источнике (измененные файлы сначала удаляются, а затем записывается новая версия). Однако удалены будут лишь имена файлов (те же жёсткие ссылки), сами файлы (данные) сохранены, поскольку на них были созданы жёсткие ссылки в соседнем каталоге командой «cp».

Прочие инструменты

Существует масса приложений для создания бекапов в Linux. Можно воспользоваться поиском по слову «backup» в Центре приложений Ubuntu, чтобы найти доступные в Ubuntu программы для работы с резервными копиями.

Для корпоративной среды и просто для достаточно масштабных и критичных заданий бекапа можно порекомендовать разобраться в одной из самых популярных и мощных систем резервного копирования для Linux, которая называется Bacula.

Также существуют различные LiveCD-дистрибутивы, специально предназначенные для резервного копирования данных. вот наиболее популярные из них:

CLonezilla

Clonezilla — универсальное средство для бэкапа разделов или целых дисков с гибкой настройкой процесса. Данный дистрибутив поддерживает множество файловых систем, работает с LVM2 и RAID-массивами (только аппаратные) и имеет локализацию для многих языков, включая русский. Clonezilla имеет понятный «пошаговый» псевдографический интерфейс, а решить возникающие вопросы поможет в изобилии доступная документация

Кстати, в сети можно найти и русскоязычные руководства

Parted Magic

Parted Magic — еще один отличный, но платный дистрибутив, содержащий целую коллекцию средств для бэкапа и восстановления информации, работы с дисками и разделами, а также восстановления утерянных данных. Он поддерживает множество ФС, LVM2 и RAID (как аппаратный, так и программный) и содержит в себе таки средства как fsarchiver, GParted, вышеупомянтый Clonezilla, и все, что потребуется для описанных в этой статье способов. Кроме того, в состав дистрибутива входит веб-браузер и некоторое другое дополнительное ПО. Дистрибутив переведен на несколько языков, включая русский, и имеет полноценный графический интерфейс.

LParted

LParted — полнофункциональный LiveCD, предназначенный в первую очередь для работы с разделами жестких дисков (HDD), безвозвратного удаления или восстановления данных и тестирования оборудования. Основан LiveCD на Lubuntu Linux. LParted является функциональным аналогом Parted Magic.

FIXMEсюда бы добавить про SystemRescueCD и прочие

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *