Создание и сжатие архивов в Linux: tar и gzip

Tar — программа для соединения нескольких файлов в один архив. Первым параметром tar принимает команду, а затем идут остальные параметры.

Для создания архива используется команда --create или -c:

user01@debian-server:~$ tar -c -f backup.tar file1.txt file2.txt 
user01@debian-server:~$ ls
backup.tar  file1.txt  file2.txt
1
2
3

За параметром -f следует название файла-архива, который сделает tar. Затем идет список файлов который нужно включить в архив. В архив можно включать как отдельные файлы, так и каталоги с файлами.

Для просмотра списка файлов в архиве используется команда --list или -t, так же с опцией -f и именем архива.

user01@debian-server:~$ tar -t -f backup.tar 
file1.txt
file2.txt
1
2
3

В архиве сохраняются права на файлы, владелец файла и группа файла, всё это можно посмотреть опцией --verbose или -v:

user01@debian-server:~$ tar -tv -f backup.tar 
-rw-r--r-- user01/user01     5 2023-11-16 07:46 file1.txt
-rw-r--r-- user01/user01    10 2023-11-16 07:46 file2.txt
1
2
3

Для распаковки архива используется команда --extract или -x, архив распаковывается в текущую директорию.

user01@debian-server:~$ rm file1.txt file2.txt 
user01@debian-server:~$ ls
backup.tar
user01@debian-server:~$ tar -x -f backup.tar 
user01@debian-server:~$ ls
backup.tar  file1.txt  file2.txt
1
2
3
4
5
6

Tar содержит опции для сжатия файлов в архиве, или можно воспользоваться отдельной программой.

Программа gzip позволяет уменьшить размер файлов, сжимая их. По умолчанию gzip берет данные из stdin и передаёт их в сжатом виде в stdout. Для распаковки файла используется опция -d.

user01@debian-server:~$ cat file1.txt 
text
user01@debian-server:~$ cat file1.txt | gzip > ar.gz
user01@debian-server:~$ cat ar.gz | gzip -d
text
1
2
3
4
5

Через перенаправление потоков ввода и вывода можно объединить tar и gzip для сжатия архива:

user01@debian-server:~$ cat file1.txt 
text
user01@debian-server:~$ tar -c file1.txt file2.txt | gzip > files.tar.gz
user01@debian-server:~$ rm file1.txt file2.txt 
user01@debian-server:~$ ls
files.tar.gz
user01@debian-server:~$ cat files.tar.gz | gzip -d | tar -x
user01@debian-server:~$ ls
file1.txt  file2.txt  files.tar.gz
user01@debian-server:~$ cat file1.txt 
text
1
2
3
4
5
6
7
8
9
10
11

Ссылки

Последниее изменение: 29.11.2023, 18:04:20