====== Архивация ====== ===== tar ===== Утилита для архивации файлов/каталогов.\\ Никогда не перемещает и не удаляет какие бы то ни было файлы, только архивные копии.\\ Права на файлы передаются создающему архив. * **-c** - создание нового архива. * **-r** - добавление в существующий. * **-x** - извлечение из архива. * **-v** - подробный вывод. * **-f** - имя нового файла * **-z** - перенаправить вывод в команду **gzip**, для сжатия. * **--one-file-system** - исключает файлы из любой ФС кроме текущей, например псевдо-файловые системы. * **--exclude=path** - исключает указанный путь из архивации. * **- (дефис, после аргументов)** - выводит содержимое стандартным выводом. **Архивирование** текущей директории. Указание точки вместо звездочки, добавит даже **скрытые файлы**. tar -cvf myarhive.tar * # Текущая директория за исключением указанных папок, бекап тек директории tar -czvf backups/previous_version.tar.gz --exclude={log,backups} * # или так tar -czvf old_instance.tar.gz --exclude="*/log" --exclude="*/backups" * # Просмотр содержимого архива tar -tvf my_arhive.tar.gz **Архивирование и сжатие** указанных файлов. # tar -czvf myarhive.tar.gz /home/user/*.mp4 **Перенаправление потока.** Можно сразу отправить архив по сети, без промежуточного сохранения. # tar czvf - ~/sourcedir/ | ssh user@host "cat > ~/myarhive.tar.gz" **Архивация всей системы.** Исключая временные разделы и папку **/home/andy/**, включая **/var/** и **/usr/**. # tar czvf - --one-file-system / /usr /var --exclude=/home/andy/ | ssh user@host "cat > ~/arh.tar.gz" **Поиск и архивация.** Для поиска используем команду [[main:linux:общие_средства:поиск|find]]. # find /var/dir/ -iname "*.mp4" -exec tar -rvf arh.tar {} \; **Разархивировать в указанное место** # tar -xzvf name-arh.tar.gz -C /.../exist-folder ==== Разделение архивов на части ==== С помощью команды **split** можно разделять файлы (архивы) на части, не более указанного размера.\\ Аргумент **-b** позволяет указать размер.\\ **Разбиение** архива на части. # split -b 1G myarhive.tar.gz "myarhive.tar.gz.part" **Соединить** архив обратно. # cat myarhive.tar.gz.part* > myarhive.tar.gz ===== dd ===== Создание (побайтовых) образов разделов.\\ * **if** - исходный раздел. * **of** - файл/расположение назначения. * **bs** - указание кол-ва байтов, копирования за один раз. **Создаем архив диска** # dd if=/dev/sda of=~/sdadisk.img **Восстановление из образа** # dd if=~/sdadisk.img of=/dev/sda **Форматирование раздела** метод с перезаписыванием (if=/dev/random - случайными символами) # dd if=/dev/zero of=/dev/sda1 ===== ddrescue ===== Как и **dd**, это утилита для побайтового копирования дисков/разделов, но в отличии от первой, достаточно успешно копирует данные с поврежденных дисков.\\ Копировать лучше с не примонтированного диска или в режиме **ro**. Запросто может добить диск (уничтожить данные), при допущении ошибок в работе с утилитой.\\ # ddrescue [options] infile outfile [mapfile=logfile] * **-f** - перезапись диска **outfile** * **-n** - пропускает попытки чтения самых трудных частей * **-r n** - кол-во повторных попыток чтения поврежденных частей (особо не рекомендуется) * **-i bytes** - откуда начать чтение **infile** * **-v** - подробный вывод **Восстановление всего диска** # ddrescue -fn /dev/sdb /dev/sdc ~/disk.log **Произошла ошибка** на байте 12350000, переподключили диск, ребутнули и продолжили # ddrescue -fn -i 12350000 /dev/sdb /dev/sdc ~/disk.log