Как делать бэкап системы Линукс с помощью tar в терминале

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Закрыто
no avatar

Автор темы
alexander8560
Сообщения: 31
Зарегистрирован: 12 ноя 2019, 11:02
Благодарил (а): 48 раз
Поблагодарили: 1 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#1

25 дек 2019, 10:37

Основой этой работы послужила статья: Статья
К сожалению, указанная статья, если следовать её рекомендациям, у меня привела к ошибкам в создании архива. Возможно, это связано с тем, что в современных дистрибутивах Линукса, — а я делал бэкап на Cinnamon 19.2, — изменились правила работы команды tar. В частности, команда tar у меня не восприняла ключ -C, вместо этого создав архив с именем "-С". Кроме того, упаковка и распаковка архива пошла в неправильные папки, что тоже создало определённые проблемы, с которыми мне помогли разобраться здесь на форуме.
Теперь и я хочу поделиться данной практической наработкой. Возможно, эти описания кому-то станут полезными и сэкономят новичкам часы работы. :smile:
Итак, как говорится, поехали!

Прежде всего загружаемся с установочного диска CD/DVD Линукса (после загрузки на Рабочем столе должен находиться ярлык "Install Linux Mint").
Здесь, как мне тоже советовали, можно пойти в программу "Диски" установочного диска Линукс и провести бэкап, не заморачиваясь командами терминала и командой tar. Команда "Диски" находится по этому пути: Menu (аналог кнопки "Пуск" в Windows) —> Preferences —> Disks. Далее там можно сделать бэкап нужного раздела диска. Но здесь есть один нюанс. Как выяснилось (у меня во всяком случае так), бэкап получается итоговым размером с раздел диска. То есть, если у вас Линукс стоит, например, на разделе размером 25 Гигабайт, а занимает только 6 Гигабайт, то итоговый размер бэкапа будет 25 Гигабайт. Если у вас размер жёсткого диска позволяет создавать такие бэкапы, можете воспользоваться этим, без сомнения, более простым способом создания бэкапа и восстановления из него. Я же в этой статье покажу путь создания и восстановления из бэкапа меньшего размера, чем даже размер Линукса.
Допустим, нужный раздел, где будет храниться бэкап системы Линукс у нас уже создан. Пусть сам Линукс — это /dev/sdaX, а дополнительный раздел (для бэкапа) — это /dev/sdaY. Вместо X и Y поставьте те номера, которые относятся к вашей системе. У меня, например, /dev/sdaX — это /dev/sda7, а /dev/sdaY — это /dev/sda6. У вас это могут быть другие номера разделов диска.
Если раздел для хранения бэкапа не создан, его предварительно нужно создать программой Menu —> Administration —> GParted установочного диска Линукс и отформатировать в той же файловой системе, в которой отформатирован раздел с установленным Линуксом, например, в ext4.

Создаём в корневом разделе загруженного liveCD две папки: корневую, к которой примонтируем наш Линукс, который требует бэкапа, и бэкаповскую, к которой примонтируем дополнительный логический диск, на который будем писать файл бэкапа. Делаем это так.
Запускаем терминал.

Код: Выделить всё

sudo mkdir /mnt/{root,backup}
Эта команда создаёт сразу две папки: /mnt/root и /mnt/backup. В команде текст "/mnt/{root,backup}" нужно писать без пробелов. Пароль для sudo он не просит, в liveCD его вводить, вообще говоря, не требуется.
Монтируем оба раздела. Корневой раздел на всякий случай монтируем с опцией (-о) "read-only":

Код: Выделить всё

sudo mount /dev/sdaX /mnt/root -o ro
sudo mount /dev/sdaY /mnt/backup
Далее запускаем создание архива (в папке backup из содержимого папки root):

Код: Выделить всё

cd /mnt/root && sudo tar -cvzpf /mnt/backup/mintarchive.tar.gz *
Этой команды нет в исходной статье, из-за чего упаковка и распаковка происходила в неправильные папки. Здесь мне тоже подсказали, как делать уважаемые форумчане. Мы переходим в папку /mnt/root и всё содержимое оттуда ("звёздочка") отправляем в архив mintarchive.tar.gz, находящийся в папке /mnt/backup.
Перед cd писать sudo не надо, так как sudo не воспринимает команду cd, а перед tar писать sudo надо!, иначе некоторые файлы не смогут добавиться в архив с выдачей сообщения “Permission denied”. (Проверить потом, все ли файлы и папки добавились в архив, можно в терминале с помощью меню “Search / Find” Ctrl+Shift+F и искать по фразе или по куску фразы “Permission denied”).
Бэкап 6,7 Гигабайт Линукса у меня выполняется порядка 16 минут и в результате имеет объём в районе 2,1 Гигабайт (сжатие в три раза). Узнать время выполнения можно, щёлкнув затем правой кнопкой на архиве бэкапа, и вычислив в свойствах файла разницу между значениями времени Modified и Created. Также можно использовать в терминале команду date перед началом архивирования и сразу после него (эта команда выдаёт дату и время).
Ключ -p здесь обозначает сохранение владельцев и прав доступа к файлам. Ключ -c — это создание архива (в отличие от ключа -x, распаковки архива). Ключ -v — вывод всех добавляемых файлов на экран. Ключ -z — тип создаваемого архива (tar.gz). Ключ -f — нужен для упаковки файлов в файл. Находил информацию, что без этого ключа tar будет брать данные из потоков консоли (stdin, stdout), но что это вообще такое и к чему приведёт tar без -f на практике, не вникал. Проще этот ключ поставить, раз он нужен. :smile:
Когда бэкап выполнился (в терминале появится снова приглашение ввода), делаем возврат в Домашнюю папку и отмонтирование смонтированных разделов:

Код: Выделить всё

cd ~
sudo umount /mnt/{root,backup}
После этого папки в liveCD root и backup должны быть пустыми, а сам архив-бэкап системы должен находиться на дополнительном диске бэкапов Линукса, который для этого создавался и форматировался. Этот архив можно скопировать на всякий случай даже на раздел Windows и хранить его там (у меня две системы на компьютере: Windows XP и Линукс). Но для восстановления бэкапа, его следует предварительно скопировать на дополнительный диск Линукса (на /dev/sdaY).

Теперь посмотрим на то, как делается восстановление из бэкап-архива.
Загружаемся с установочного диска Линукс. Копируем бэкап-архив оттуда, где мы его храним, на дополнительный логический раздел Линукс /dev/sdaY (если этого файла архива там нет).
Создаём в терминале точки монтирования для корневого раздела и раздела, на котором хранится бэкап-архив:

Код: Выделить всё

sudo mkdir /mnt/{root,backup}
Примонтируем раздел с бэкап-архивом:

Код: Выделить всё

sudo mount /dev/sdaY /mnt/backup -o ro
Здесь можно пойти в программу GParted, которая есть на установочном диске liveCD и отформатировать старый раздел с Линуксом /dev/sdaX. Но это может привести к непредсказуемым последствиям, с которыми я столкнулся, когда сделал это: от падения выборщика загрузки GNU GRUB до неясных ошибок, типа "Адрес не является папкой" из-за того, что при форматировании меняется шестнадцатеричный код раздела UUID, а дальнейшая смена этого кода в файле /etc/fstab, как написано в указанной в начале статье, недостаточна для восстановления работоспособности Линукса. В каких ещё файлах хранится UUID и где его следует поменять ещё — непонятно. Поэтому мне был предложен более прогрессивный вариант с удалением старых файлов Линукса. Поэтому ничего форматировать не нужно.
Примонтируем раздел со старыми (которые нужно заменить бэкап-архивными) файлами Линукса к /mnt/root:

Код: Выделить всё

sudo mount /dev/sdaX /mnt/root
Заходим в папку /mnt/root

Код: Выделить всё

cd /mnt/root
И удаляем всё, что там находится:

Код: Выделить всё

sudo rm -frdv *
Эта команда удаляет всё. Выполняется быстро (у меня примерно за 1 минуту).
Ключи команды: -f — усиленное (forced) удаление, то есть удалить всё, не задавая никаких вопросов; -r — удаляет каталоги и их содержимое рекурсивно; -d — удаляет пустые каталоги; -v — выводит на экран список удалённого.
Проверить потом, всё ли удалено, можно в окне папки /mnt/root, или введя для /mnt/root в терминале команду ls.
Теперь распаковываем содержимое архива на место:

Код: Выделить всё

cd /mnt/backup
sudo tar --preserve-permissions --same-owner --directory=/mnt/root -xvf mintarchive.tar.gz
Команде tar здесь даны указания сохранить разрешения и владельцев файлов и каталогов; распаковать содержимое архива в папку /mnt/root.
Распаковка архива с чистым Линуксом у меня заняла примерно 6 минут.
Делаем в терминале размонтировку всех смонтированных разделов, предварительно вернувшись в Домашнюю папку, так как после распаковки архива находимся в /mnt/backup:

Код: Выделить всё

cd ~
sudo umount /mnt/{root,backup}
Перезагружаем компьютер. Во время перезагрузки DVD-ROM отдаёт диск liveCD, и мы заходим в Линукс. GNU GRUB не слетел. Менять UUID не надо. Несколько часов работы на обновлённом бэкапом Линуксе казусов не выявили.
Надеюсь, что эта информация кому-нибудь из новичков будет полезна. Спасибо за внимание!

Аватара пользователя

symon2014
Сообщения: 5924
Зарегистрирован: 16 дек 2017, 21:59
Решено: 36
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 747 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#2

25 дек 2019, 10:42

Не по теме
alexander8560, много пакетов отдали линуксу душу со времени написания статьи. :-D
https://forum.ubuntu.ru/index.php?topic=192844.0

Аватара пользователя

Whowka
Сообщения: 1899
Зарегистрирован: 20 июл 2018, 19:50
Решено: 13
Откуда: Питер
Благодарил (а): 777 раз
Поблагодарили: 948 раз

Как делать бэкап системы Линукс с помощью tar в терминале

#3

25 дек 2019, 23:30

На случай, если новички не осилят "терминал" ,как альтернатива:
FSarchiver
Кому-как, а мне понравилась. Вот тока флешку отдельную нужно делать, или из другой системы бэкап делать.

no avatar

Автор темы
alexander8560
Сообщения: 31
Зарегистрирован: 12 ноя 2019, 11:02
Благодарил (а): 48 раз
Поблагодарили: 1 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#4

07 янв 2020, 13:10

Добавка к моему посту:
После распаковки архива вместо старой системы Линукс, то есть в самом конце, нужно Домашней папке в папке /media установить повышенные привилегии, потому что дальнейшая работа показала, что могут таки быть глюки: не хочет монтировать другие локальные диски. А после повышения привилегий этого незамечено. :smile:
Я не знаю, какие там были привилегии с самого начала, поэтому, ставлю сразу разрешения по максимуму, "три семёрки". :smile:
Делается это так:

Код: Выделить всё

cd /media
sudo chmod 777 homefolder
У меня, например, домашняя папка - это /home/alex, поэтому вместо homefolder я просто пишу alex

Аватара пользователя

symon2014
Сообщения: 5924
Зарегистрирован: 16 дек 2017, 21:59
Решено: 36
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 747 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#5

07 янв 2020, 13:13

alexander8560 писал(а):
07 янв 2020, 13:10
Делается это так:
Не делается это так. Подход неверный.

no avatar

Автор темы
alexander8560
Сообщения: 31
Зарегистрирован: 12 ноя 2019, 11:02
Благодарил (а): 48 раз
Поблагодарили: 1 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#6

07 янв 2020, 13:15

Хорошо, а как надо?

Аватара пользователя

symon2014
Сообщения: 5924
Зарегистрирован: 16 дек 2017, 21:59
Решено: 36
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 747 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#7

07 янв 2020, 13:17

alexander8560 писал(а):
07 янв 2020, 13:15
Хорошо, а как надо?
Повышение привилегий без необходимости плохой подход.

Аватара пользователя

Ctyx
Сообщения: 62
Зарегистрирован: 03 май 2019, 08:29
Решено: 1
Откуда: Donbass, LPR
Благодарил (а): 64 раза
Поблагодарили: 5 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#8

07 янв 2020, 13:34

Читаю и въехать не могу, если всё равно нужно будет загружаться через liveCD, то не проще ли использовать TimeShift и восстановить систему с сохранённого ранее снимка - делов минут на 5 и без лишних телодвижений?

Аватара пользователя

symon2014
Сообщения: 5924
Зарегистрирован: 16 дек 2017, 21:59
Решено: 36
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 747 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#9

07 янв 2020, 13:36

Ctyx писал(а):
07 янв 2020, 13:34
Читаю и въехать не могу,
И не надо , это тема для обсуждения а не просьба о помощи.

Аватара пользователя

slant
Сообщения: 4469
Зарегистрирован: 21 июн 2017, 18:09
Решено: 95
Благодарил (а): 51 раз
Поблагодарили: 1966 раз
Контактная информация:

Как делать бэкап системы Линукс с помощью tar в терминале

#10

07 янв 2020, 19:03

alexander8560 писал(а):
07 янв 2020, 13:15
Хорошо, а как надо?
Через chown -R поправить владельца каталога. Привилегии там не сбиваются, сбивается обычно UID (соответствие строковому имени пользователя).

Закрыто

Вернуться в «Загрузка системы, бэкапы и восстановление»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя