Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:backup [2011/08/31 15:33] [dd - копирование раздела] |
wiki:backup [2016/04/25 01:18] (текущий) [Создание архива] |
||
---|---|---|---|
Строка 16: | Строка 16: | ||
-------------- | -------------- | ||
===== tar ===== | ===== tar ===== | ||
- | |||
Одним из наиболее популярных способов создания простейшего бэкапа является архивация данных с помощью [[wiki:tar|tar]]. Преимуществами данного способа являются возможность инкрементного бэкапа (добавления файлов в существующий архив, удаления или изменения таковых), возможность извлечения из архива отдельных файлов, а также присутствие tar практически в любой Linux-системе. | Одним из наиболее популярных способов создания простейшего бэкапа является архивация данных с помощью [[wiki:tar|tar]]. Преимуществами данного способа являются возможность инкрементного бэкапа (добавления файлов в существующий архив, удаления или изменения таковых), возможность извлечения из архива отдельных файлов, а также присутствие tar практически в любой Linux-системе. | ||
Строка 22: | Строка 21: | ||
==== Создание архива ==== | ==== Создание архива ==== | ||
- | |||
Для начала создайте точки монтирования для корневого раздела и для раздела, на котором вы собираетесь создавать бэкап, например так | Для начала создайте точки монтирования для корневого раздела и для раздела, на котором вы собираетесь создавать бэкап, например так | ||
Строка 33: | Строка 31: | ||
sudo mount /dev/sdXY /mnt/backup</code> | sudo mount /dev/sdXY /mnt/backup</code> | ||
- | //(Вместо "sdXY" используйте ваши значения для нужных разделов. определить их можно с помощью ''sudo fdisk -l'' и ''sudo blkid'')// | + | //(Вместо "sdXY" используйте ваши значения для нужных разделов. определить их можно с помощью ''sudo fdisk -l'' или ''sudo blkid'')// |
В случае, если вы используете отдельные разделы для /boot, /usr, /home и пр. и хотите включить их содержимое в бэкап, примонтируйте их в соответствующие папки | В случае, если вы используете отдельные разделы для /boot, /usr, /home и пр. и хотите включить их содержимое в бэкап, примонтируйте их в соответствующие папки | ||
Строка 46: | Строка 44: | ||
Теперь можно приступить к созданию архива. Чтобы создать архив с gzip-сжатием, выполните | Теперь можно приступить к созданию архива. Чтобы создать архив с gzip-сжатием, выполните | ||
- | <code>sudo tar -cvzpf /mnt/backup/ubuntu-sda1.tar.gz /mnt/root</code> | + | <code>sudo tar -cvzpf -C /mnt/root /mnt/backup/ubuntu-sda1.tar.gz .</code> |
(Ключ ''-p'' включает сохранение владельцев и прав доступа для файлов ((для суперпользователя этот режим активирован по умолчанию, так что его использование, вообще-то, не обязательно))) | (Ключ ''-p'' включает сохранение владельцев и прав доступа для файлов ((для суперпользователя этот режим активирован по умолчанию, так что его использование, вообще-то, не обязательно))) | ||
Строка 52: | Строка 50: | ||
Для bzip2-сжатия используйте | Для bzip2-сжатия используйте | ||
- | <code>sudo tar -cvjpf /mnt/backup/ubuntu-sda1.tar.gz /mnt/root</code> | + | <code>sudo tar -cvjpf /mnt/backup/ubuntu-sda1.tar.bz2 /mnt/root</code> |
Для lzma-сжатия | Для lzma-сжатия | ||
Строка 67: | Строка 65: | ||
<code>sudo umount /mnt/root{/boot,/var,/home,} /mnt/backup</code> | <code>sudo umount /mnt/root{/boot,/var,/home,} /mnt/backup</code> | ||
- | |||
==== Восстановление из архива ==== | ==== Восстановление из архива ==== | ||
Строка 109: | Строка 106: | ||
Теперь можно распаковать содержимое архива на место | Теперь можно распаковать содержимое архива на место | ||
- | <code>sudo tar --same-owner -xvpf /mnt/backup/ubuntu-2010-10-07.tar.bz2 -C /mnt/root</code> | + | <code>sudo tar --same-owner -xvpf /mnt/backup/ubuntu-2010-10-07.tar.bz2 -C /mnt/root/</code> |
//(ключ ''-C'' задает каталог, в который нужно распаковать файлы. ключ ''%%--%%same-owner'' сохраняет владельцев файлов при распаковке)// | //(ключ ''-C'' задает каталог, в который нужно распаковать файлы. ключ ''%%--%%same-owner'' сохраняет владельцев файлов при распаковке)// | ||
Строка 147: | Строка 144: | ||
* копируется все содержимое раздела, будь то ваши файлы или просто свободное место, что сказывается на скорости | * копируется все содержимое раздела, будь то ваши файлы или просто свободное место, что сказывается на скорости | ||
* необходимость дополнительных манипуляций при распаковке на раздел большего размера | * необходимость дополнительных манипуляций при распаковке на раздел большего размера | ||
- | * нестрандартный сопособ получения информации о процессе работы утилиты | + | * нестандартный сопособ получения информации о процессе работы утилиты |
Учитывая вышеизложенное можно сказать, что ''dd'' - не самый лучший инструмент в данном случае. С другой стороны, в освоении и использовании он проще многих других средств. | Учитывая вышеизложенное можно сказать, что ''dd'' - не самый лучший инструмент в данном случае. С другой стороны, в освоении и использовании он проще многих других средств. | ||
Строка 167: | Строка 164: | ||
<code>sudo mount /dev/sdXY /mnt/root</code> | <code>sudo mount /dev/sdXY /mnt/root</code> | ||
- | Теперь мы применим одну хитрость - прочистим свободное место от старого мусора (остатков удаленных файлов), перезаписав его нулевыми (пустыми) байтами. Эта операция не обязательна, но может заметно помочь при сжатии образа. Если сжимать образ не требуется, то следующие четыре команды вам не нужны. | + | Теперь мы применим одну хитрость - прочистим свободное место от старого мусора (остатков удаленных файлов), перезаписав его нулевыми (пустыми) байтами. Эта операция не обязательна, но может заметно помочь при сжатии образа. Если сжимать образ не требуется, то следующие две команды вам не нужны. |
- | <code>sudo mount /dev/sdXY /mnt/backup | + | <code>sudo dd if=/dev/zero of=/mnt/root/zero bs=4M</code> |
- | sudo dd if=/dev/zero of=/mnt/root/zero bs=4M</code> | + | |
//(Опция ''if'' задает входной файл, в данном случае это ''/dev/zero'' - псевдоустройство, генерирующее поток нулевых байтов; опция ''of'' - выходной файл, в которые записываются наши данные; ''bs'' задает размер блока, т.е. количество информации, считываемой/записываемой за один раз - в данном случае это 4МБ)// | //(Опция ''if'' задает входной файл, в данном случае это ''/dev/zero'' - псевдоустройство, генерирующее поток нулевых байтов; опция ''of'' - выходной файл, в которые записываются наши данные; ''bs'' задает размер блока, т.е. количество информации, считываемой/записываемой за один раз - в данном случае это 4МБ)// | ||
Строка 181: | Строка 177: | ||
<code>sudo umount /mnt/root</code> | <code>sudo umount /mnt/root</code> | ||
- | Все, можно приступать к процессу | + | Все, можно приступать к процессу. |
+ | Монтируем тот раздел, куда будем сохранять бэкап | ||
+ | <code>sudo mount /dev/sdXY /mnt/backup</code> | ||
+ | Выполняем операцию, по созданию бэкапа | ||
<code>sudo dd if=/dev/sdXY bs=1M conv=noerror | gzip -c > /mnt/backup/root.dd.gz</code> | <code>sudo dd if=/dev/sdXY bs=1M conv=noerror | gzip -c > /mnt/backup/root.dd.gz</code> | ||
Строка 188: | Строка 187: | ||
<note> | <note> | ||
- | FIXME знающие люди, распишите кто-нибудь про оптимальный подбор ''bs'' (что конкретно оно дает), а заодно про ''conv=sync'' (нужен ли он) | + | FIXME знающие люди, распишите кто-нибудь про оптимальный подбор ''bs'' (что конкретно оно дает), |
- | Понятно чем больше значение ''bs'', тем бóльшими блоками данных будет оперировать ''dd'' и тем быстрее работа. Оптимальным для скорости считается размер блока, равным или чуть меньшим объёма кэша жесткого диска. Но нужно еще выяснить есть ли опасность задания больших значений ''bs''. Не известно есть ли возможность при слишком большом параметре ''bs'' "зацепить" в образ одного раздела кусок следующего? И что случится при восстановлении раздела из такого образа? Не затронет ли dd соседний раздел? | + | |
+ | **[i|o]bs** - размер блока при работе с потоком. **ibs** - размер блока при чтении, **obs** - размер блока при записи, **bs** - устанавливает оба значения сразу. | ||
+ | Рекомендуется ставить кратным степени двойки, умноженной на размер кластера файловой системы (обычно это 4096 байт). Для современных жестких дисков 1Мб - это нормально, но значения, бОльшие 64кб, на мой взгляд, не ускоряют операций с диском. --- [[user>AnrDaemon]] //2012/03/12 22:40// | ||
+ | |||
+ | а заодно про ''conv=sync'' (нужен ли он) | ||
+ | |||
+ | НЕТ!!!!!!!!!!!!!!!!!! Это может привести к повреждению результирующего образа. | ||
+ | ''man dd'' для разнообразия? Там даже пример есть. На русском, если у вас русские маны стоят. | ||
+ | А вот ''iflag=direct'' (либо, при записи на блочное устройство - ''oflag'') при работе с блочными устройствами использовать стОит, чтобы не получить на выходе файл "образа" раз в 5 бОльше исходного раздела. --- [[user>AnrDaemon]] //2012/03/12 22:40// | ||
+ | |||
+ | Понятно чем больше значение ''bs'', тем бóльшими блоками данных будет оперировать ''dd'' и тем быстрее работа. Оптимальным для скорости считается размер блока, равным или чуть меньшим половины объёма кэша жесткого диска. Но нужно еще выяснить есть ли опасность задания слишком больших значений ''bs''. Не известно есть ли возможность при большом параметре ''bs'' "зацепить" в образ одного раздела кусок следующего? И что случится при восстановлении раздела из такого образа? Не затронет ли dd соседний раздел? | ||
+ | |||
+ | Если не использовать копирование напрямую с диска (/dev/sdL), а работать с разделами (/dev/sdLN) или файлами (ранее созданными резервными копиями), и не использовать ненужных опций, типа conv=sync - никакой опасности нет. Чтение просто остановится в конце файла(устройства). --- [[user>AnrDaemon]] //2012/03/12 22:41// | ||
</note> | </note> | ||
Строка 205: | Строка 216: | ||
Теперь вернитесь на вкладку/консоль с dd - там вы увидите информацию об объеме скопированных данных и скорости записи. | Теперь вернитесь на вкладку/консоль с dd - там вы увидите информацию об объеме скопированных данных и скорости записи. | ||
- | Если вы хотите видеть вывод данных о работе dd постоянно (через определенные промежутки времени), то во второй консоле следует ввыполнить: | + | Если вы хотите видеть вывод данных о работе dd постоянно (через определенные промежутки времени), то во второй консоли следует ввыполнить: |
<code>sudo watch -n2 killall -SIGUSR1 dd</code> | <code>sudo watch -n2 killall -SIGUSR1 dd</code> | ||
в параметре ''-n2'' — ''2'' означает выполнять команду каждые две секунды. | в параметре ''-n2'' — ''2'' означает выполнять команду каждые две секунды. | ||
Строка 215: | Строка 226: | ||
<code>sudo umount /mnt/backup</code> | <code>sudo umount /mnt/backup</code> | ||
- | |||
==== Восстановление раздела из образа ==== | ==== Восстановление раздела из образа ==== | ||
Строка 229: | Строка 239: | ||
Собственно, можно приступать (дополнительных манипуляций вроде форматирования раздела в данном случае не требуется) | Собственно, можно приступать (дополнительных манипуляций вроде форматирования раздела в данном случае не требуется) | ||
- | <code>gzip -dc /mnt/root.dd.gz | dd of=/dev/sdXY bs=1M conv=noerror</code> | + | <code>gzip -dc /mnt/root.dd.gz | sudo dd of=/dev/sdXY bs=1M conv=noerror</code> |
Или же для несжатого образа | Или же для несжатого образа | ||
Строка 324: | Строка 334: | ||
<note> | <note> | ||
- | Ксли вы хотите распаковать образ на другой жесткий диск, он должен иметь разъем не меньше оригинального. В случае, если новый диск большего объема, вы сможете расширить разделы либо создать новый раздел на свободном месте с помощью parted/fdisk/gparted/etc | + | Если вы хотите распаковать образ на другой жесткий диск, он должен иметь размер не меньше оригинального. В случае, если новый диск большего объема, вы сможете расширить разделы либо создать новый раздел на свободном месте с помощью parted/fdisk/gparted/etc |
**Не используйте оба жестких диска ("дубликат" и "оригинал") одновременно!** При подключении обоих дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки | **Не используйте оба жестких диска ("дубликат" и "оригинал") одновременно!** При подключении обоих дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки | ||
Строка 423: | Строка 433: | ||
Создайте точки монтирования для разделов | Создайте точки монтирования для разделов | ||
- | <code>sudo mkdir /mnt/{root.backup}</code> | + | <code>sudo mkdir /mnt/{root,backup}</code> |
Смонтируйте бэкап-раздел | Смонтируйте бэкап-раздел | ||
Строка 510: | Строка 520: | ||
<note tip> | <note tip> | ||
- | Помимо стандартного gzip-сжатия squashfs также поддерживает lzo и lzma. Правда, для этого потребуются некоторые дополнительные манипуляции. Кому интересно - обращайтесь: [[user>dimas000]] | + | Помимо стандартного gzip-сжатия squashfs также поддерживает другие алгоритмы, список которых можно увидеть, выполнив ''mksquashfs %%--%%help''. Имейте в виду, что поддержка lzma, lzo, xz может отсутствовать в более старых версиях squashfs-tools (идущих в составе старых LiveCD, например). Кроме того, для монтирования таких образов потребуется относительно свежее ядро с поддержкой squashfs соответствующих алгоритмов сжатия (например, см. ''CONFIG_SQUASHFS_XZ=y'') |
Кроме этого, можно создать образ и без сжатия - для этого используйте ''mksquashfs'' с опцией ''-noD'' | Кроме этого, можно создать образ и без сжатия - для этого используйте ''mksquashfs'' с опцией ''-noD'' | ||
Строка 581: | Строка 591: | ||
Подобно ''cp'', ''rsync'' работает с файлами, а не с блочными устройствами. Особенность ''rsync'' в том, что он не копирует файлы, которые уже есть в точке назначения. По умолчанию он проверяет размер и время изменения файлов, но можно проверять и хэш (обычно это делается, когда нужна повышенная безопасность). | Подобно ''cp'', ''rsync'' работает с файлами, а не с блочными устройствами. Особенность ''rsync'' в том, что он не копирует файлы, которые уже есть в точке назначения. По умолчанию он проверяет размер и время изменения файлов, но можно проверять и хэш (обычно это делается, когда нужна повышенная безопасность). | ||
+ | |||
+ | ==== Простое использование ==== | ||
Синтаксис ''rsync'' подобен ''cp'': | Синтаксис ''rsync'' подобен ''cp'': | ||
Строка 591: | Строка 603: | ||
"Умное" копирование позволяет сократить время простоя системы. Запускаем ''rsync'' прямо на работающей системе, данные в которой постоянно изменяется, ''rsync'' копирует данные, скажем, в течение нескольких часов. Затем переводим систему в read-only, снова запускаем ''rsync'', теперь он копирует только те файлы, которые изменились за эти несколько часов. Через несколько минут мы имеем полную копию исходной ФС. Время простоя при этом сократилось на порядок по сравнению с оффлайн-копированием. А в некоторых случаях будет достаточно и одного онлайн-копирования без перевода системы в read-only. | "Умное" копирование позволяет сократить время простоя системы. Запускаем ''rsync'' прямо на работающей системе, данные в которой постоянно изменяется, ''rsync'' копирует данные, скажем, в течение нескольких часов. Затем переводим систему в read-only, снова запускаем ''rsync'', теперь он копирует только те файлы, которые изменились за эти несколько часов. Через несколько минут мы имеем полную копию исходной ФС. Время простоя при этом сократилось на порядок по сравнению с оффлайн-копированием. А в некоторых случаях будет достаточно и одного онлайн-копирования без перевода системы в read-only. | ||
+ | |||
+ | ==== Сохранение предыдущих копий ==== | ||
+ | |||
+ | Строго говоря rsync не является средством резервного копирования -- это средство синхронизации. Это важно при создании регулярных копий, поскольку, если какой либо важный файл был удалён в рабочем каталоге источнике -- rsync удалит его и в резервной копии. Для повышения сохранности данных целесообразно сохранять старые резервные копии. Однако простое сохранение нескольких копий потребует много памяти на жёстком диске. Если копии имеют много одинаковых файлов, то это приводит к ненужной избыточности. Эту проблему позволяет решить использование жёстких ссылок. | ||
+ | |||
+ | Суть состоит в том, что в современных файловых системах (в том числе Ext4) адресация файла производится в два этапа: имя файла указывает на уникальный номер файла (индексный дескриптор или i-node), а этому номеру сопоставлены сами данные. Любое имя файла это, по факту, жёсткая ссылка на этот номер. Следовательно, файл (набор данных) может иметь несколько имён и быть разных каталогах, а это позволяет устранить избыточность в случае необходимости дублирования файлов (ведь жёсткая ссылка занимает мало памяти). Сами данные не удаляются до тех пор пока не будет запрошено удаление последней жёсткой ссылки. | ||
+ | |||
+ | Существенное ограничение состоит в том, что жёсткие ссылки возможны только в пределах одной файловой системы. | ||
+ | |||
+ | Синхронизация содержимого каталога для текущей резервной копии с каталогом источником: | ||
+ | <code bash> | ||
+ | rsync \ | ||
+ | --archive \ # сохранять всю дополнительную информацию о файлах | ||
+ | --delete --delete-excluded \ # удаление из резервной копии несуществующих в источнике и исключённых файлов | ||
+ | --progress \ # выводить информацию о прогрессе передачи | ||
+ | "/home/user/Files/" \ # каталог источник | ||
+ | "/backup/latest/" \ # каталог для текущей резервной копии | ||
+ | --exclude='/Public/' # исключение ненужных каталогов | ||
+ | </code> | ||
+ | В каталоге «''/backup/latest/''» будет создана копия всех необходимых файлов и каталогов из источника и удалено всё лишнее. | ||
+ | |||
+ | Создание ещё одной текущей резервной копии без избыточности: | ||
+ | <code bash> | ||
+ | cp \ | ||
+ | --archive \ # сохранять всю дополнительную информацию о файлах | ||
+ | --link \ # использовать жёсткие ссылки для файлов - устранение избыточности | ||
+ | "/backup/latest/" \ # источником является полученная выше текущая резервная копия | ||
+ | "/backup/$(date +%Y-%m-%d_%H-%M-%S)/" # пункт назначения - каталог с датой в имени для удобства (см. man date) | ||
+ | </code> | ||
+ | |||
+ | При следующем создании резервной копии rsync удалит в каталоге «''/backup/latest/''» файлы которые были удалены/исключены/изменены в каталоге источнике (измененные файлы сначала удаляются, а затем записывается новая версия). Однако удалены будут лишь имена файлов (те же жёсткие ссылки), сами файлы (данные) сохранены, поскольку на них были созданы жёсткие ссылки в соседнем каталоге командой «cp». | ||
===== Прочие инструменты ===== | ===== Прочие инструменты ===== | ||
Строка 606: | Строка 649: | ||
* [[http://clonezilla.org/|сайт проекта]] | * [[http://clonezilla.org/|сайт проекта]] | ||
- | * [[http://clonezilla.org/download/sourceforge/|страница загрузки]] | + | * [[http://clonezilla.org/downloads.php|страница загрузки]] |
* [[http://drbl.org/faq/|FAQ (часто задаваемые вопросы)]] | * [[http://drbl.org/faq/|FAQ (часто задаваемые вопросы)]] | ||
* [[http://clonezilla.org/related_article/|документация и руководства (англ.)]] | * [[http://clonezilla.org/related_article/|документация и руководства (англ.)]] | ||
Строка 616: | Строка 659: | ||
==== Parted Magic ==== | ==== Parted Magic ==== | ||
- | [[http://partedmagic.com|Parted Magic]] - еще один отличный дистрибутив, содержащий целую коллекцию средств для бэкапа и восстановления информации, работы с дисками и разделами, а также восстановления утерянных данных. Он поддерживает множество ФС, [[wiki:lvm|LVM2]] и [[wpru>RAID]] (как аппаратный, так и программный) и содержит в себе таки средства как [[http://www.fsarchiver.org|fsarchiver]], [[wpru>GParted]], вышеупомянтый Clonezilla, и все, что потребуется для описанных в этой статье способов. Кроме того, в состав дистрибутива входит веб-браузер и некоторое другое дополнительное ПО. Дистрибутив переведен на несколько языков, включая русский, и имеет полноценный графический интерфейс. | + | [[http://partedmagic.com|Parted Magic]] - еще один отличный, но __платный__ дистрибутив, содержащий целую коллекцию средств для бэкапа и восстановления информации, работы с дисками и разделами, а также восстановления утерянных данных. Он поддерживает множество ФС, [[wiki:lvm|LVM2]] и [[wpru>RAID]] (как аппаратный, так и программный) и содержит в себе таки средства как [[http://www.fsarchiver.org|fsarchiver]], [[wpru>GParted]], вышеупомянтый Clonezilla, и все, что потребуется для описанных в этой статье способов. Кроме того, в состав дистрибутива входит веб-браузер и некоторое другое дополнительное ПО. Дистрибутив переведен на несколько языков, включая русский, и имеет полноценный графический интерфейс. |
* [[http://partedmagic.com|сайт проекта]] | * [[http://partedmagic.com|сайт проекта]] | ||
- | * [[http://partedmagic.com/doku.php?id=programs|список доступных программ]] | ||
- | * [[http://partedmagic.com/doku.php?id=screenshots|скриншоты]] | ||
- | * [[http://partedmagic.com/doku.php?id=downloads|страница загрузки]] | ||
- | * [[http://sourceforge.net/projects/partedmagic/|страница проекта на SourceForge]] | ||
+ | ==== LParted ==== | ||
+ | [[http://lparted.bezpieka.org/|LParted]] - полнофункциональный LiveCD, предназначенный в первую очередь для работы с разделами жестких дисков (HDD), безвозвратного удаления или восстановления данных и тестирования оборудования. Основан LiveCD на Lubuntu Linux. LParted является функциональным аналогом Parted Magic. | ||
+ | |||
+ | | ||
<note> | <note> | ||
FIXME сюда бы добавить про SystemRescueCD и прочие | FIXME сюда бы добавить про SystemRescueCD и прочие | ||
Строка 636: | Строка 679: | ||
===== Ссылки ===== | ===== Ссылки ===== | ||
+ | * [[http://forum.ubuntu.ru/index.php?topic=192844.0|Обсуждение статьи на форуме]] | ||
* [[http://forum.ubuntu.ru/index.php?topic=47437.0|обсуждение различных способов резервного копирования на форуме]] | * [[http://forum.ubuntu.ru/index.php?topic=47437.0|обсуждение различных способов резервного копирования на форуме]] | ||
+ | * [[https://help.ubuntu.com/community/BackupYourSystem|Бэкап системы (англ.)]] | ||
* FIXME побольше ссылок сюда! на статьи всякие разные и прочия | * FIXME побольше ссылок сюда! на статьи всякие разные и прочия | ||
- | + | {{topic> backup}} | |
- | {{tag>администрирование backup консоль система можно_улучшить}} | + | <style float-right>[[terms:теги#как_узнать_какой_тег_соответствует_той_или_иной_категории|тэг: backup]]</style> |
+ | {{tag> администрирование безопасность backup консоль можно_улучшить Индексная_статья}} |