在Linux中,tar实用程序是用于创建、管理和提取存档的常用命令。
tar实用程序的常用选项
执行tar操作需要以下tar命令操作之一:
- -c ,--create :创建存档文件(即压缩文件)。
- -t,--list:列出存档的内容。
- -x,--extract:提取存档。(解压缩操作)
通常包括以下常用的tar命令选项:
- -v,--verbose:显示在tar操作期间存档或提取的文件。
- -f,--file:在此选项后面加上要创建或打开的存档文件名。
- -p:提取时保留原始文件的文件权限。
以下tar命令压缩选项用于选择算法:
- -a:使用存档的后缀来确定要使用的算法。
- -z,--gzip:使用gzip压缩算法,这会生成.tar.gz后缀。
- -j,--bzip2:使用bzip2压缩算法,这会生成.tar.bz2后缀。
- -J,--xz:使用xz算法,这会生成.tar.xz后缀。
tar -cf archive.tar foo bar #这个命令的作用是将目录或文件 foo 和 bar 归档到一个名为 archive.tar 的 tar 文件中。
[root@localhost ~]# touch file.cfg project.txt
[root@localhost ~]# tar -cf archive.tar file.cfg file.cfg
使用tar -xf命令可以提取存档的内容;
使用tar命令p选项可保留提取的文件的原始存档权限。
tar命令支持包括如下在内的多种压缩方式:
- gzip压缩是传统的、最快的方法,可以跨平台使用。
创建压缩存档:
[root@localhost ~]# cp /etc/*.conf /tmp/
[root@localhost ~]# tar -czf /opt/tmpbackup.tar.gz /tmp/*.conf
[root@localhost ~]# ll -lh /opt/tmpbackup.tar.gz
-rw-r--r--. 1 root root 36K Jul 12 19:07 /opt/tmpbackup.tar.gz
[root@localhost ~]# file /opt/tmpbackup.tar.gz
/opt/tmpbackup.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 133120
[root@localhost ~]# tar -xzf /opt/tmpbackup.tar.gz -C /tmp/ #提取格式为gzip的存档
- bzip2压缩可创建较小的存档,但使用不如gzip广泛。
创建压缩存档:
[root@localhost ~]# tar -cjf /opt/tmpbackup.tar.bz2 /tmp/*.conf
[root@localhost ~]# ll -lh /opt/
total 72K
-rw-r--r--. 1 root root 33K Jul 12 19:09 tmpbackup.tar.bz2
-rw-r--r--. 1 root root 36K Jul 12 19:07 tmpbackup.tar.gz
[root@localhost ~]# file /opt/tmpbackup.tar.bz2
/opt/tmpbackup.tar.bz2: bzip2 compressed data, block size = 900k
[root@localhost ~]# tar -xjf /opt/tmpbackup.tar.bz2 -C /tmp/
- xz压缩是更新的技术,提供的压缩率在可用方法中最好。
创建压缩存档:
[root@localhost ~]# tar -cJf /opt/tmpbackup.tar.xz /tmp/*.conf
[root@localhost ~]# ll -lh /opt/
total 108K
-rw-r--r--. 1 root root 33K Jul 12 19:09 tmpbackup.tar.bz2
-rw-r--r--. 1 root root 36K Jul 12 19:07 tmpbackup.tar.gz
-rw-r--r--. 1 root root 33K Jul 12 19:10 tmpbackup.tar.xz
[root@localhost ~]# file /opt/tmpbackup.tar.xz
/opt/tmpbackup.tar.xz: XZ compressed data
提取压缩存档的内容:
[root@localhost ~]# tar -xJf /opt/tmpbackup.tar.xz -C /tmp/
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
[root@localhost tmp]# touch file.txt
[root@localhost tmp]# gzip file.txt
[root@localhost tmp]# ll
total 4
-rw-r--r--. 1 root root 29 Jul 13 20:03 file.txt.gz
gunzip 是个使用广泛的解压缩程序,它用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz。
[root@localhost tmp]# gunzip file.txt.gz
[root@localhost tmp]# ls
file.txt
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
[root@localhost tmp]# touch file{a..j}.txt
[root@localhost tmp]# zip files.zip file{a..j}.txt
adding: filea.txt (stored 0%)
adding: fileb.txt (stored 0%)
adding: filec.txt (stored 0%)
adding: filed.txt (stored 0%)
adding: filee.txt (stored 0%)
adding: filef.txt (stored 0%)
adding: fileg.txt (stored 0%)
adding: fileh.txt (stored 0%)
adding: filei.txt (stored 0%)
adding: filej.txt (stored 0%)
[root@localhost tmp]# ls
filea.txt filec.txt filee.txt fileg.txt filei.txt files.zip
fileb.txt filed.txt filef.txt fileh.txt filej.txt
unzip为.zip压缩文件的解压缩程序。
[root@localhost tmp]# unzip files.zip
Linux bzip2命令是.bz2文件的压缩程序。
Linux bunzip2命令是.bz2文件的解压缩程序。