tar 并不是压缩程序,因为它打包之后的大小跟原来一样大。所以它不是压缩程序,而是打包程序。而我们习惯上会先打包,产生一个.tar 文件,再把这个包裹拿去压缩。 .tar.gz 的文件名就是这么来的。也有人觉的 .tar.gz 这样的名称太长了,其实浓缩为 .tgz意思也是一样的。
命令:tar [-选项] [打包文件名] [文件]
操作tar命令-常用
选项:
c:打包产生新文件
t:列出包中的文件
x:解开包
v:列出存档内容
-f:输出到默认的设备, -f后面直接接文件名。 -f
和上面所有参数连用
选项:
r:往包中再增加文件
u:更新,更新包中的某些文件
p:在提取文档时保留文件和目录的权限,而不去除umask
z:借用gzip的压缩功能 ,-czf 生成.tar.gz或者.tgz文件
j:使用bzip2压缩,产生.tar.bz2后缀文件,压缩率比gzip高
J:使用xz压缩,产生.tar.xz后缀文件,压缩率比bzip2高
使用tar归档文件和目录
创建名为archive.tar的存档,其内容为用户主目录中的file1、
file2、 file3
tar cf archive.tar file1 file2 file 3
tar czvf $(date +%Y-%m-%d)_archive.tar.gz /etc/*
ls archive.tar
注意:
要使tar可以归档选定的文件,执行tar命令的用户必须要能够读取这些文件
Tar存在默认情况下不存储的其他属性,如SELinux上下文和ACL。存档时要存储这些属性,在创建时使用--xattrs选项
列出tar存档的内容
实例:
tar cf /root/etc.tar /etc
tar tf /root/etc.tar
提取用tar创建的存档
tar存档通常应提取到空目录中,以确保它不会覆盖任何现有的文件。如果由root用户提取文件、 tar将尝试保留文件的原始用户和组所有权。如果由普通用户使用tar提取文件,则提取的文件由该用户所有
实例:
mkdir /root/etcbackup
cd /root/etcbackup
tar xf /root/etc.tar
默认情况下,从存档中提取文件时,将从存档内容的权限中去除umask。可防止提取的普通文件默认收到执行权限。保留存档文件的权限,可在存档时使用p选项
创建压缩的tar存档
tar命令支持三种不同的压缩方式:gzip压缩速度最快,历史最久,使用最广泛。bzip2压缩成的文档通常比gzip生成的文件小,但可用性不如gzip广泛
xz压缩方式相对较新,通常提供可用方式中最佳的压缩率
选项:
z:用于gzip压缩,格式.tar.gz或.tgz
提取压缩的tar存档
实例:
mkdir /tmp/etcbackup
cd /etc/etcbackup
[root@desktop0 etc]# tar xf etc.tar.gz -C /root/rsc #-C解压到指定的目录
tar xzf /root/etcbackup.tar.gz
mkdir /tmp/logbackup
cd /tmp/logbackup
tar xjf /root/logbackup.tar.bz2
mkdir /tmp/sshbackup
cd /tmp/sshbackup
tar xJf /root/sshbackup.tar.xz