压缩、解压缩命令:
1.compress/uncompress:压缩格式为Z,文件后缀为.Z
compress /path/to/file
uncompress /path/to/file.Z
2.gzip/gunzip/zcat:压缩格式为gz,文件后缀为.gz
gzip [OPTION] /path/to/file:压缩文件保存在被压缩文件的目录,压缩完成后会删除原文件
-v|verbose:显示指令执行过程
-d:解压缩,解压缩完成后删除原压缩文件
-#:1-9,指定压缩比,默认为6,数值越高,压缩比越高,用时越长
gunzip /path/to/file.gz:解压缩文成后删除原文件
zcat /path/to/file.gz:不解压的情况,查看文本文件的内容
3.bzip2/bunzip2/bzcat:压缩格式为bz2,比gzip有着更大压缩比的压缩工具,使用格式近似
bzip2 [OPTION] /path/to/file
-v|verbose:显示指令执行过程
-k:压缩或解压缩时保留原文件
-d:解压缩
-#:1-9,默认是6
bunzip2 /path/to/file.bz2
bzcat /path/to/file.bz2
4.xz/unxz/xzdec/xzcat:压缩格式为xz
xz [OPTION] /path/to/file
-#: 1-9, 默认是6
-k: 压缩时保留原文件
-d:解压缩
unxz|xzdec /path/to/file.xz
xzcat /path/to/file.xz
5.zip:即可以归档又可以压缩的工具
zip file.zip file1 file2 ...:默认压缩后不删除原文件
-r:recurse将目录内的全部文件压缩,zip -r foo.zip foo
-v|verbose:显示指令执行过程
unzip file.zip
-v|verbose:不压缩显示文件列表
归档(打包)命令:
tar:文件格式为.tar
-c:创建归档文件
-x:展开归档
-t:不展开归档,直接查看归档的文件列表
-f file.tar:操作的归档文件
--xattrs:归档时保留文件的扩展属性信息
-p:使用原文件的原属性
-C:指定工作目录,用于解压时指定解压文件的路径
注意:选项cxt只能同时使用一个
-zcf file.tar.gz:归档并调用gzip压缩
-zxf file.tar.gz:调用gzip解压缩并展开归档,-z选项可省略
-jcf file.tar.bz2:归档并调用bzip2压缩
-jxf file.tar.bz2:调用bzip2解压缩并展开归档
-Jcf file.tar.xz:归档并调用xz压缩
-Jxf file.tar.xz:调用xz解压缩并展开归档
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file
如果加 j 参数,则以 .tar.bz2 来作为附档名
上述指令在执行的时候,会显示一个警告讯息:
范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说
我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz
则解开的目录会在 /usr/local/src/etc ,另外,如果您进入 /usr/local/src/etc
则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
范例五:我要备份 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例六
[root@linux ~]#tar -cvf file2.tar /home/usr2/file2
tar: Removing leading '/' from members names
home/usr2/file2
该命令可以将/home/usr2/file2文件打包到当前目录下的file2.tar中,需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来。