Копирование командой tar в Linux
Синтаксис команд для создания и распаковки архива практически не отличается (в том числе с утилитами сжатия bzip2 или gzip).
Синтаксис для содания копии:
tar опции архив.tar файлы_для_архивации
Синтаксис для распаковки копии:
tar опции архив.tar
Функции, которые может выполнять команда:
Короткий формат функции
|
Длинный формат
|
Описание
|
---|---|---|
-A
|
--concatenate
|
Присоединить существующий архив к другому |
-c
|
--create
|
Создать новый архив |
-d
|
--diff
|
Проверить различие между архивами |
-
|
--delete
|
Удалить из существующего архива файл |
-r
|
--append
|
Присоединить файлы к концу архива |
-t
|
--list
|
Сформировать список содержимого архива |
-u
|
--update
|
Обновить архив более новыми файлами с тем же именем |
-x
|
--extract
|
Извлечь файлы из архива |
При определении каждой функции используются параметры, которые регламентируют выполнение конкретных операций с tar-архивом:
Короткий формат параметра
|
Длинный формат
|
Описание
|
---|---|---|
-C dir
|
--directory=DIR
|
Сменить директорию перед выполнением операции на dir |
-f file
|
--file
|
Вывести результат в файл (или на устройство) file |
-j
|
--bzip2
|
Перенаправить вывод в команду bzip2 |
-p
|
--same-permissions
|
Сохранить все права доступа к файлу |
-v
|
--verbose
|
Выводить подробную информацию процесса |
-
|
--totals
|
Выводить итоговую информацию завершенного процесса |
-z
|
--gzip
|
Перенаправить вывод в команду gzip |
Создание архива tar
С помощью следующей команды создается архив archive.tar
с подробным выводом информации, включающий файлы file1
, file2
, file3
:
tar --totals --create --verbose --file archive.tar file1 file2 file3
Но длинные опции и параметры можно заменить (при возможности) однобуквенными значениями:
tar --totals -cvf archive.tar file1 file2 file3
Просмотр содержимого архива
Вывод содержимого архива, не распаковывая:
tar -tf archive.tar
Распаковка архива
Распаковывает архив test.tar
с выводом файлов на экран:
tar -xvf archive.tar
Чтобы сделать это в другой каталог, можно воспользоваться параметром -C
:
tar -C "Test" -xvf archive.tar
Создание сжатого архива tar
Следует помнить, что tar
только создаёт архив, но не сжимает. Для этого используются упомянутые компрессорные утилиты bzip2
и gzip
. Файлы, сжатые с их помощью, имеют соответствующие расширения .tar.bz2
и .tar.gz
. Чтобы создать сжатый архив с помощью bzip2
, введите:
tar -cjvf archive.tar.bz2 file1 file2 file3
Синтаксис для gzip
отличается одной буквой в параметрах, и меняется окончание расширения архива:
tar -czvf archive.tar.gz file1 file2 file3
Распаковка сжатого архива
При распаковке tar-архивов
со сжатием следует указывать соответствующую опцию.
Распаковка архива с сжатием bzip2
:
tar -C "Test" -xjvf arhive.tar.bz2
Распаковка архива с сжатием gzip
:
tar -xzvf archive.tar.gz
Создание резервной копии сервера
Чтобы сделать бекап вашей системы используйте следующую команду:
tar -cvpzf <имя_файла>.tar.gz --exclude=имя_файла --one-file-system целевой_каталог
Например:
tar -cvpzf backup.tar.gz --exclude=/root/backup.tar.gz --one-file-system /
c
создать новый резервный архивv
подробный режим, при котором выводится информация о текущих действияхp
сохранить права доступа на файлыz
сжать с помощью утилиты gzipf <имя_файла>
полное имя файла с резервной копией--exclude=<имя_файла>
имена файлов или каталогов, которые необходимо исключить из резервной копии. Во избежании ошибок обязательно нужно исключить файл с резервной копией--one-file-system
создать копию только одной файловой системы, т.е. если у вас есть смонтированные носители с другими файловыми системами, то они не будут включены в копию, их необходимо резервировать отдельно или использовать дополнительные опции/
в конце нужно указать каталог, запасную копию которого необходимо создать
Восстановление резервной копии сервера
Проверим достаточно ли свободного пространства:
sudo df -h
Если сервер другой с чистой системой, создадим директорию и скопируем в неё копию директории /boot
с загрузчиком и файл /etc/fstab
:
sudo mkdir /OLD
sudo cp -R /boot/ /OLD/
sudo cp /etc/fstab /OLD/
Для восстановления из резервной копий вашей системы используйте следующую команду:
sudo tar -xvpzf <имя_файла> -C <имя_каталога> --numeric-owner
Например:
sudo tar -xvpzf /OLD/backup.tar.gz -C / --numeric-owner
f <имя_файла>
полное имя файла с резервной копией-C <имя_каталога>
каталог в который произойдет восстановление--numeric-owner
опция позволяет восстановить пользователей файлов по числовому дескриптору, а не по имени, во избежании ошибок
Возвращаем директорию /boot
и файл fstab
:
sudo cp -R /OLD/boot/ /boot/
sudo cp /OLD/fstab /etc/fstab
Убедимся что копирование прошло успешно и в файлах /boot/grub/grub.cfg
и /etc/fstab
указан верный UUID
, посмотреть UUID
разделов в текущей системе можно командой:
sudo lsblk -o NAME,UUID
Смотрим UUID
в файле /boot/grub/grub.cfg
:
nano /boot/grub/grub.cfg
Смотрим UUID
в файле /etc/fstab
:
nano /etc/fstab
Перезагружаем систему:
sudo reboot