Архивирование и сжатие файлов в Linux
tar
tar - утилита архивирования
В tar добавлена возможность одновременно производить сжатие tar-архива
-c Создайте архив. -v Отображение хода выполнения в терминале при создании архива, также известное как «подробный» режим. Знак -v в этих командах необязателен, но может быть полезен. -f Позволяет указать имя файла архива.tar Работает рекурсивно. Выполняет требуемое действие для каждого последующего каталога внутри указанного каталога.
Синтаксис команды tar выглядит следующим образом:
tar [ОПЕРАЦИЯ_И_ПАРАМЕТРЫ] [ИМЯ_АРХИВА] [ИМЯ_ФАЙЛА(ФАЙЛОВ)]
OPERATION
Допускается и требуется только один аргумент операции. Наиболее часто используемые операции:
--create (-c)
Создайте новый архив tar.
--extract (-x)
Извлеките из архива весь архив целиком или один или несколько файлов.
--list (-t)
Отображение списка файлов, входящих в архив.
OPTIONS Чаще всего используются следующие варианты: --verbose (-v) Отображение файлов, обрабатываемых командой tar . --file=archive-name (-f archive-name) Указывает имя архивного файла. ARCHIVE_NAME Название архива. FILE_NAME(S) Список имен файлов, разделенных пробелами, которые необходимо извлечь. Если список не указан, извлекается весь архив.
#Создание архива
tar -cvf archive.tar stuff
#заархивировать сразу несколько каталогов, перечислим их через пробел
tar -cvf archive.tar stuff1 stuff2
#извлечь архив с помощью tar:
tar -xvf archive.tar
#извлечь содержимое архива в определенную папку, мы используем -C
tar -xvf archive.tar -C /tmp
#создает tar-архив дерева подкаталогов и вызывает gzip для выполнения сжатия
#исключение составляют скрытые файлы
tar czvf archive_name.tar.gz *
( cd folder && tar -cf - . ) | ( cd test-folder && tar xpvf - )
cd - переход из каталога в каталог
&& - все команды после будут выполнены только если будут успешно выполнены команды до оператора
tar -сf - .
-с - создание архива
-f - задает файл архива
- - в качестве файла архива задается stdout
. - текущая директория и ее содержимое
tar -xvpf -
-x - разархивирование
--delete - удалить файлы из архива
-r - добавить файлы в существующий архив
-A - добавить tar-файлы в существующий архив
-t - список файлов в архиве
-u - обновить архив
-z - обработка архива с помощью gzip
-j - обработка архива с помощью bzip2
-v - подробный режим
-p - сохранение владельца и прав
-f - - файл архива stdin
"-" - это не самостоятельный оператор bash, а скорее опция распознаваемая некоторыми утилитами linux, которые выводят результат своей работы в stdout или принмает ввод в stdin
echo "test" | cat
test
#
#В данном случае diff принимает с помощью "-" второй параметр
cat file1 | diff file2 -
#Что аналогично команде
diff file2 file1
gzip
Утилита сжатия заменившая утилиту compress
Для декомпрессии используется gunzip, что является эквивалентом gzip -d
Для работы со сжатыми файлами используется zcat, который выводит результат своей работы на stdout, допускает пеенаправление вывода
Эквивалент команды zcat является команда gzip -dc
Сжатие с помощью tar
Команда GNU tar, входящая в состав дистрибутивов Linux, позволяет создать .tar-архив, а затем сжать его с помощью gzip или bzip2-сжатия с помощью одной команды
Хотя gzip-сжатие чаще всего используется для создания .tar.gz или .tgz файлов, tar также поддерживает bzip2-сжатие. Это позволяет создавать bzip2-сжатые файлы, которые часто называют .tar.bz2-, .tar.bz- или .tbz-файлами.
gzip работает быстрее, но обычно сжимает файлы чуть хуже, поэтому размер файла получается немного больше. bzip2 работает медленнее, но сжимает файлы чуть лучше, поэтому размер файла получается немного меньше. В целом gzip и bzip2 практически не отличаются друг от друга и работают одинаково.
#сжатый файл с использованием алгоритма gzip (-z).
tar -czvf name-of-archive.tar.gz stuff
#bzip2-сжатие
#Для этого мы заменяем -z на -j bzip2:
tar -cjvf name-of-archive.tar.bz stuff
#Чтобы распаковать файл, мы заменяем -c на -x, где x означает «извлечь»:
tar -xzvf archive.tar.gz
gzip ФАЙЛ ДЛЯ СЖАТИЯ gzip создает сжатый файл с тем же именем, но с расширением .gz в конце. gzip удаляет исходные файлы после создания сжатого файла. Команда bzip2 работает аналогичным образом. Для распаковки файлов мы используем gunzip или bunzip2 в зависимости от алгоритма сжатия.
bzip2
Утилита сжатия, которая дает более высокую степень сжатия, но работает медленнее чем gzip
Для декомпрессии используется bunzip2
unarc, unarj, unrar
Набор утилит предназначен для распаковки архивов DOS архиваторов rar
Команда cpio
cpio означает «вставить, скопировать». Используется для обработки архивных файлов, таких как *.cpio или *.tar файлы.
cpio выполняет следующие операции:
Копирование файлов в архив.
Извлечение файлов из архива.
#Чтобы создать архив cpio , мы используем:
ls | cpio -o > archive.cpio
# извлечь архив
cpio -id < archive.cpio
Для извлечения используется опция -i . Опция -d создает папку назначения. Символ < обозначает стандартный ввод. Извлекаемый входной файл — archive.cpio.
Опция -o указывает cpio на необходимость создания выходного файла. В данном случае создается выходной файл archive.cpio. Команда ls выводит список содержимого текущего каталога, которое необходимо заархивировать.
Команда dd
dd копирует данные из одного места в другое
#команда скопирует содержимое oldfile в newfile, где if= — входной файл, а of= — выходной
dd if=oldfile of=newfile
Команда dd обычно ничего не выводит на экран до тех пор, пока не завершит работу. Если указать параметр status=progress, консоль будет отображать объем работы, выполняемой командой. Например: dd status=progress if=oldfile of=newfile.
dd Также используется для преобразования данных в верхний/нижний регистр или для записи непосредственно на блочные устройства, такие как /dev/sdb
#скопирует все содержимое oldfile в newfile и сделает весь текст заглавными буквами
dd if=oldfile of=newfile conv=ucase
#команда создаст резервную копию всего жесткого диска, расположенного по адресу /dev/sda, в файл с именем backup.dd
dd if=/dev/sda of=backup.dd bs=4096
Источники
Связанные темы
Использование команды tee в Linux
Использование wget и curl в Linux
Команда chattr и lsattr в Linux
Использование awk Linux Alpine
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Полезные команды и скрипты Linux
Использование регулярных выражений в Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux
Compression and Decompression Nginx






