Linux tar命令简介:
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
tar 命令语法如下:
1.命令格式:
tar[必要参数][选择参数][文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩(gzip bzip2等命令)功能实现的
3.命令参数:
主要选项
-
c 创建新的归档(打包)文件。
-
r 把要归档(打包)的文件追加到档案文件的末尾。
-
t 列出档案文件的内容,查看已经备份了哪些文件。
-
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
-
x 从归档的文件中提取文件
辅助选项
-b N该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(
20×
512 bytes)
-
f 指定打包压缩文件或设备,这个选项通常是必选的。
-
k 保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。
-
m 在还原文件时,把所有文件的修改时间设定为当前时间
-
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
-
w 每一步都要求确认。
-
J代表调用“xz”程序进行文件的压缩
-A,--catenate,--
concatenate 新增压缩文件到已存在的压缩
-d,--
diff,--
compare 比较归档(打包)与当前文件的不同之处将一归档(打包)与已有的归档(打包)合并
--
delete 从归档文件中删除-C,--
directory DIR 解压到指定的目录-h,--
dereference 不转储动态链接,转储动态链接指向的文件。
-k,--keep-old-
files 保存现有文件;从归档中展开时不进行覆盖
#-N,--after-
date DATE,--
newer DATE 仅存储时间较新的文件(藐视linux上tar不支持)
-P,--absolute-paths 以绝对路径打包文件,不要从文件名中去除
'/'
--remove-
files 建立存档后删除源文件
--
exclude FILE 不把指定文件包含在内
-X,--exclude-
from FILE 从指定文件中读入不想包含的文件的列表
-j 代表使用‘
bzip2’程序进行文件的压缩
-Z,--compress,--
uncompress 用 compress 对存档压缩或解压
-z,--
gzip,--ungzip 用
gzip 对存档压缩或解压
示例1:-c 创建一个归档文件
[root@localhost ~
]# ll
total 9468
-rw-------.
1 root root
1304 May
26 2017 anaconda-
ks.cfg
-rw-r--r--.
1 root root
507 May
26 12:
30 group
-rw-r--r--.
1 root root
11301 May
26 12:
37 passwd
-rw-r--r--.
1 root root
9665555 May
26 13:
16 tmp.
tar.bz2
-rw-r--r--.
1 root root
2301 May
26 12:
49 tmp.tg
-rw-r--r--.
1 root root
674 May
26 12:
57 tmp.tgz
[root@localhost ~]#
tar cvf /tmp/root.
tar .
/*
./anaconda-ks.cfg
./group
./passwd
./tmp.tar.bz2
./tmp.tg
./tmp.tgz
示例2:-t 查看归档内容
[root@localhost ~]#
tar tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
26 15:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
26 12:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
26 12:
37 ./
passwd
-rw-r--r-- root/root
9665555 2017-
05-
26 13:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
26 12:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
26 12:
57 ./tmp.tgz
示例 3:-r 追加文件到归档(tar)文件中
[root@localhost ~]#
tar tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
26 15:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
26 12:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
26 12:
37 ./
passwd
-rw-r--r-- root/root
9665555 2017-
05-
26 13:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
26 12:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
26 12:
57 ./
tmp.tgz
[root@localhost ~]#
tar -rvf /tmp/root.
tar /etc/
issue
tar: Removing leading `/
' from member names #若以绝对路径打包的话,tar默认会将'/
'去除
/etc/
issue
[root@localhost ~]#
tar tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
26 15:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
26 12:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
26 12:
37 ./
passwd
-rw-r--r-- root/root
9665555 2017-
05-
26 13:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
26 12:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
26 12:
57 ./
tmp.tgz
-rw-r--r-- root/root
23 2016-
11-
29 13:
12 etc/issue
示例 4:-u 更新归档文件
[root@localhost ~]#
tar tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
26 15:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
26 12:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
26 12:
37 ./
passwd
-rw-r--r-- root/root
9665555 2017-
05-
26 13:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
26 12:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
26 12:
57 ./
tmp.tgz
-rw-r--r-- root/root
23 2016-
11-
29 13:
12 etc/
issue
[root@localhost ~]#
tar -uvf /tmp/root.
tar /etc/sysconfig/
network
tar: Removing leading `/
' from member names
/etc/sysconfig/
network
[root@localhost ~]#
tar tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
26 15:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
26 12:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
26 12:
37 ./
passwd
-rw-r--r-- root/root
9665555 2017-
05-
26 13:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
26 12:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
26 12:
57 ./
tmp.tgz
-rw-r--r-- root/root
23 2016-
11-
29 13:
12 etc/
issue
-rw-r--r-- root/root
22 2017-
05-
26 15:
47 etc/sysconfig/network
示例5:-x 从归档的文件中提取文件
[root@localhost root_tar]#
tar xvf /tmp/root.
tar
./anaconda-
ks.cfg
./
group
./
passwd
./root_tar/
./root_tar/anaconda-
ks.cfg
./root_tar/
group
./root_tar/
passwd
./root_tar/tmp.
tar.bz2
./root_tar/
tmp.tg
./root_tar/
tmp.tgz
./tmp.
tar.bz2
./
tmp.tg
./tmp.tgz
示例 6:-C 提取 tar 文件到指定目录
[root@localhost tmp]#
tar xvf root.
tar -C /root/root_tar/
./anaconda-
ks.cfg
./
group
./
passwd
./root_tar/
./root_tar/anaconda-
ks.cfg
./root_tar/
group
./root_tar/
passwd
./root_tar/tmp.
tar.bz2
./root_tar/
tmp.tg
./root_tar/
tmp.tgz
./tmp.
tar.bz2
./
tmp.tg
./
tmp.tgz
[root@localhost tmp]# ls -al /root/root_tar/
total 9468
drwxr-xr-x.
3 root root
120 Sep
19 09:
42 .
dr-xr-x---.
3 root root
258 May
26 13:
30 ..
-rw-------.
1 root root
1304 May
26 15:
47 anaconda-
ks.cfg
-rw-r--r--.
1 root root
507 May
26 12:
30 group
-rw-r--r--.
1 root root
11301 May
26 12:
37 passwd
drwxr-xr-x.
2 root root
104 May
26 13:
30 root_tar
-rw-r--r--.
1 root root
9665555 May
26 13:
16 tmp.
tar.bz2
-rw-r--r--.
1 root root
2301 May
26 12:
49 tmp.tg
-rw-r--r--.
1 root root
674 May
26 12:
57 tmp.tgz
示例7:-m 在还原文件时,把所有文件的修改时间设定为当前时间
[root@localhost ~]#
tar -tvf /tmp/root.
tar
-rw------- root/root
1304 2017-
05-
27 03:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
27 00:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
27 00:
37 ./
passwd
drwxr-xr-x root/root
0 2017-
05-
27 01:
30 ./root_tar/
-rw------- root/root
1304 2017-
05-
27 03:
47 ./root_tar/anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
27 00:
30 ./root_tar/
group
-rw-r--r-- root/root
11301 2017-
05-
27 00:
37 ./root_tar/
passwd
-rw-r--r-- root/root
9665555 2017-
05-
27 01:
16 ./root_tar/tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
27 00:
49 ./root_tar/
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
27 00:
57 ./root_tar/
tmp.tgz
-rw-r--r-- root/root
9665555 2017-
05-
27 01:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
27 00:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
27 00:
57 ./
tmp.tgz
[root@localhost ~]# ll /root/root_tar/
total 0
[root@localhost ~]#
tar xmvf /tmp/root.
tar ./root_tar/
./root_tar/
./root_tar/anaconda-
ks.cfg
./root_tar/
group
./root_tar/
passwd
./root_tar/tmp.
tar.bz2
./root_tar/
tmp.tg
./root_tar/
tmp.tgz
[root@localhost ~]# ll /root/root_tar/
total 9468
-rw-------.
1 root root
1304 Sep
19 21:
55 anaconda-
ks.cfg
-rw-r--r--.
1 root root
507 Sep
19 21:
55 group
-rw-r--r--.
1 root root
11301 Sep
19 21:
55 passwd
-rw-r--r--.
1 root root
9665555 Sep
19 21:
55 tmp.
tar.bz2
-rw-r--r--.
1 root root
2301 Sep
19 21:
55 tmp.tg
-rw-r--r--.
1 root root
674 Sep
19 21:
55 tmp.tgz
[root@localhost ~]#
date
Tue Sep 19 21:
55:
57 CST
2017
示例8:-A,--catenate,--concatenate 新增归档文件到已存在的归档文件
tar Avf 追加的归档文件 新增归档文件
[root@localhost tmp]#
tar tvf tmp.
tar
-rw-r--r-- root/root
27627520 2017-
09-
19 21:
59 ./etc.
tar
lrwxrwxrwx root/root
0 2017-
05-
27 00:
30 ./group -> /root/
group
-rwx------ root/root
836 2017-
05-
27 03:
47 ./ks-script-
hjy08p
-rw-r--r-- root/root
11301 2017-
05-
27 00:
39 ./
pass
lrwxrwxrwx root/root
0 2017-
05-
27 00:
30 ./
passwd -> /root/
passwd
drwx------ root/root
0 2017-
05-
26 21:
15 ./systemd-private-85aa472335ef4117a4ffab639e34b392-httpd.service-WejRSA/
drwxrwxrwt root/root
0 2017-
05-
26 21:
15 ./systemd-private-85aa472335ef4117a4ffab639e34b392-httpd.service-WejRSA/tmp/
-rw-r--r-- root/root
0 2017-
05-
27 00:
53 ./
tar.txt
drwxr-xr-x root/root
0 2017-
05-
27 00:
46 ./test/
-rw------- root/root
0 2017-
05-
27 03:
43 ./
yum.log
[root@localhost tmp]# tar Avf tmp.
tar root.
tar
[root@localhost tmp]# tar tvf tmp.
tar
-rw-r--r-- root/root
27627520 2017-
09-
19 21:
59 ./etc.
tar
lrwxrwxrwx root/root
0 2017-
05-
27 00:
30 ./group -> /root/
group
-rwx------ root/root
836 2017-
05-
27 03:
47 ./ks-script-
hjy08p
-rw-r--r-- root/root
11301 2017-
05-
27 00:
39 ./
pass
lrwxrwxrwx root/root
0 2017-
05-
27 00:
30 ./
passwd -> /root/
passwd
drwx------ root/root
0 2017-
05-
26 21:
15 ./systemd-private-85aa472335ef4117a4ffab639e34b392-httpd.service-WejRSA/
drwxrwxrwt root/root
0 2017-
05-
26 21:
15 ./systemd-private-85aa472335ef4117a4ffab639e34b392-httpd.service-WejRSA/tmp/
-rw-r--r-- root/root
0 2017-
05-
27 00:
53 ./
tar.txt
drwxr-xr-x root/root
0 2017-
05-
27 00:
46 ./test/
-rw------- root/root
0 2017-
05-
27 03:
43 ./
yum.log
dr-xr-x--- root/root
0 2017-
09-
19 21:
50 root/
-rw-r--r-- root/root
18 2013-
12-
29 10:
26 root/
.bash_logout
-rw-r--r-- root/root
176 2013-
12-
29 10:
26 root/
.bash_profile
-rw-r--r-- root/root
176 2013-
12-
29 10:
26 root/
.bashrc
-rw-r--r-- root/root
100 2013-
12-
29 10:
26 root/
.cshrc
-rw-r--r-- root/root
129 2013-
12-
29 10:
26 root/
.tcshrc
-rw------- root/root
1304 2017-
05-
27 03:
47 root/anaconda-
ks.cfg
-rw------- root/root
5021 2017-
05-
27 00:
16 root/
.bash_history
-rw------- root/root
73 2017-
05-
27 00:
51 root/
.lesshst
-rw-r--r-- root/root
11301 2017-
05-
27 00:
37 root/
passwd
-rw-r--r-- root/root
507 2017-
05-
27 00:
30 root/
group
-rw-r--r-- root/root
2301 2017-
05-
27 00:
49 root/
tmp.tg
-rw-r--r-- root/root
9665555 2017-
05-
27 01:
16 root/tmp.
tar.bz2
drwxr-xr-x root/root
0 2017-
09-
19 21:
55 root/root_tar/
-rw------- root/root
1304 2017-
09-
19 21:
55 root/root_tar/anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
09-
19 21:
55 root/root_tar/
group
-rw-r--r-- root/root
11301 2017-
09-
19 21:
55 root/root_tar/
passwd
-rw-r--r-- root/root
9665555 2017-
09-
19 21:
55 root/root_tar/tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
09-
19 21:
55 root/root_tar/
tmp.tg
-rw-r--r-- root/root
674 2017-
09-
19 21:
55 root/root_tar/
tmp.tgz
-rw-r--r-- root/root
674 2017-
05-
27 00:
57 root/
tmp.tgz
-rw------- root/root
5189 2017-
09-
19 21:
50 root/.viminfo
示例9:--delete 从归档文件中删除指定文件
[root@localhost ~]#
tar tvf rootbak.
tar
-rw------- root/root
1304 2017-
05-
27 03:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
27 00:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
27 00:
37 ./
passwd
drwxr-xr-x root/root
0 2017-
09-
19 21:
55 ./root_tar/
-rw------- root/root
1304 2017-
09-
19 21:
55 ./root_tar/anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
09-
19 21:
55 ./root_tar/
group
-rw-r--r-- root/root
11301 2017-
09-
19 21:
55 ./root_tar/
passwd
-rw-r--r-- root/root
9665555 2017-
09-
19 21:
55 ./root_tar/tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
09-
19 21:
55 ./root_tar/
tmp.tg
-rw-r--r-- root/root
674 2017-
09-
19 21:
55 ./root_tar/
tmp.tgz
-rw-r--r-- root/root
9665555 2017-
05-
27 01:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
05-
27 00:
49 ./
tmp.tg
-rw-r--r-- root/root
674 2017-
05-
27 00:
57 ./
tmp.tgz
[root@localhost ~]#
tar --delete -vf rootbak.
tar ./
tmp.tg
[root@localhost ~]#
tar tvf rootbak.
tar
-rw------- root/root
1304 2017-
05-
27 03:
47 ./anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
05-
27 00:
30 ./
group
-rw-r--r-- root/root
11301 2017-
05-
27 00:
37 ./
passwd
drwxr-xr-x root/root
0 2017-
09-
19 21:
55 ./root_tar/
-rw------- root/root
1304 2017-
09-
19 21:
55 ./root_tar/anaconda-
ks.cfg
-rw-r--r-- root/root
507 2017-
09-
19 21:
55 ./root_tar/
group
-rw-r--r-- root/root
11301 2017-
09-
19 21:
55 ./root_tar/
passwd
-rw-r--r-- root/root
9665555 2017-
09-
19 21:
55 ./root_tar/tmp.
tar.bz2
-rw-r--r-- root/root
2301 2017-
09-
19 21:
55 ./root_tar/
tmp.tg
-rw-r--r-- root/root
674 2017-
09-
19 21:
55 ./root_tar/
tmp.tgz
-rw-r--r-- root/root
9665555 2017-
05-
27 01:
16 ./tmp.
tar.bz2
-rw-r--r-- root/root
674 2017-
05-
27 00:
57 ./tmp.tgz
示例9:--exclude FILE 不把指定文件包含在内
[root@localhost root_tar]# ll
total 9456
-rw-------.
1 root root
1304 Sep
19 21:
55 anaconda-
ks.cfg
-rw-r--r--.
1 apache apache
11301 Sep
19 21:
55 passwd
-rw-r--r--.
1 root root
9665555 Sep
19 21:
55 tmp.
tar.bz2
[root@localhost root_tar]# tar cvf test.
tar .
/* --exclude tmp.tar.bz2
./anaconda-ks.cfg
./passwd
[root@localhost root_tar]# tar tvf test.tar
-rw------- root/root 1304 2017-09-19 21:55 ./anaconda-ks.cfg
-rw-r--r-- apache/apache 11301 2017-09-19 21:55 ./passwd
示例 10:创建并压缩归档文件(.tar.gz 或 .tgz)
假设我们需要打包 /etc文件夹,并用 gzip 工具将其压缩。可以在 tar 命令中使用 -z 选项来实现。这种 tar 文件的扩展名可以是 .tar.gz 或者 .tgz。
[root@localhost ~]#
tar -zcpvf myarchive.
tar.gz /etc
或
[root@localhost ~]#
tar -zcpvf myarchive.tgz /etc
示例 11:创建并压缩归档文件(.tar.bz2 或 .tbz2)
假设我们需要打包 /etc文件夹,并使用 bzip2 压缩。可以在 tar 命令中使用 -j 选项来实现。这种 tar 文件的扩展名可以是 .tar.bz2 或者 .tbz。
[root@linuxtechi ~]#
tar -jcpvf myarchive.
tar.bz2 /
etc
或
[root@linuxtechi ~]#
tar -jcpvf myarchive.tbz2 /etc
示例 12:列出 .tar.gz /.tgz或.tar.bz2/.tbz2 文件中的内容
[root@localhost root_tar]#
tar t[z|j]vf myarchive.
tar.gz |
less
drwxr-xr-x root/root
0 2017-
05-
27 01:
31 etc/
-rw-r--r-- root/root
465 2017-
05-
27 03:
43 etc/
fstab
-rw------- root/root
0 2017-
05-
27 03:
43 etc/
crypttab
lrwxrwxrwx root/root
0 2017-
05-
27 03:
43 etc/mtab -> /proc/self/
mounts
-rw-r--r-- root/root
101 2017-
05-
26 19:
57 etc/
resolv.conf
drwxr-xr-x root/root
0 2017-
05-
27 03:
44 etc/pki/
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/rpm-gpg/
-rw-r--r-- root/root
1690 2016-
11-
30 02:
12 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
7
-rw-r--r-- root/root
1004 2016-
11-
30 02:
12 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-
7
-rw-r--r-- root/root
1690 2016-
11-
30 02:
12 etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-
7
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/
-rw-r--r-- root/root
166 2016-
11-
05 00:
34 etc/pki/ca-trust/
README
-rw-r--r-- root/root
980 2016-
11-
05 00:
34 etc/pki/ca-trust/ca-
legacy.conf
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/
-rw-r--r-- root/root
560 2016-
11-
05 00:
34 etc/pki/ca-trust/extracted/
README
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/java/
-rw-r--r-- root/root
726 2016-
11-
05 00:
34 etc/pki/ca-trust/extracted/java/
README
-r--r--r-- root/root
194984 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/java/
cacerts
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/openssl/
-rw-r--r-- root/root
787 2016-
11-
05 00:
34 etc/pki/ca-trust/extracted/openssl/
README
-r--r--r-- root/root
346654 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/openssl/ca-
bundle.trust.crt
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/pem/
-rw-r--r-- root/root
898 2016-
11-
05 00:
34 etc/pki/ca-trust/extracted/pem/
README
-r--r--r-- root/root
262042 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/pem/tls-ca-
bundle.pem
-r--r--r-- root/root
208874 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/pem/email-ca-
bundle.pem
-r--r--r-- root/root
208976 2017-
05-
27 03:
43 etc/pki/ca-trust/extracted/pem/objsign-ca-
bundle.pem
drwxr-xr-x root/root
0 2017-
05-
27 03:
43 etc/pki/ca-trust/source/
-rw-r--r-- root/root
932 2016-
11-
05 00:
34 etc/pki/ca-trust/source/
README
drwxr-xr-x root/root
0 2016-
11-
06 01:
45 etc/pki/ca-trust/source/anchors/
drwxr-xr-x root/root
0 2016-
11-
06 01:
45 etc/pki/ca-trust/source/blacklist/
...
示例 13:解压 .tar.gz 或 .tgz 文件
使用 -x 和 -z 选项来解压 .tar.gz 或 .tgz 文件。如下:
[root@localhost ~]#
tar -zxpvf myarchive.tgz -C /tmp/
以上命令将 tar 文件解压到 /
tmp 目录。
注:现今的 tar 命令会在执行解压动作前自动检查文件的压缩类型,这意味着我们在使用
tar 命令是可以不用指定文件的压缩类型。如下:
[root@localhost ~]#
tar -xpvf myarchive.tgz -C /tmp/
示例 14:解压 .tar.bz2 或 .tbz2 文件
使用 -j 和 -x 选项来解压 .tar.bz2 或 .tbz2 文件。如下:
[root@localhost ~]#
tar -jxpvf myarchive.tbz2 -C /tmp/
或
[root@localhost ~]#
tar xpvf myarchive.tbz2 -C /tmp/
示例 15:使用 -T 及 -X 创建压缩归档文件
想像这样一个场景:把想要归档和压缩的文件及目录记录到到一个文件,然后把这个文件当做 tar 命令的传入参数来完成归档任务;而有时候则是需要排除上面提到的这个文件里面记录的特定路径后进行归档和压缩。
在 tar 命令中使用 -T 选项来指定该输入文件,使用 -X 选项来指定包含要排除的文件列表。
假设要归档 /root 目录,并排除 /root/rootbak.tar和 /root/tmp.tar.bz2文件,可以创建 /root/tar-include 和 /root/tar-exclude 然后分别输入以下内容
[root@localhost ~]#
cat tar-
include
/
root
[root@localhost ~]#
cat tar-
exclude
/root/rootbak.
tar
/root/tmp.
tar.bz2
运行以下命令来创建一个压缩归档文件。
[root@localhost ~]#
tar zcpvf mybackup-$(
date +%Y-%m-%d).tgz -T /root/
tar-include -X /root/
tar-exclude
示例 16:查看 .tar、.tgz 和 .tbz2 文件的大小
使用如下命令来查看 (压缩) tar 文件的体积。
[root@localhost tmp]#
tar czf - root.
tar |
wc -
c
48227906
[root@localhost tmp]# tar czf - tmp.
tar |
wc -
c
29090060
示例 17:分割体积庞大的 tar 文件为多份小文件
类 Unix 系统中使用 split 命令来将大体积文件分割成小体积文件。大体积的 tar 当然也可以使用这个命令来进行分割。
假设需要将 “mybackup-2017-09-19.tgz” 分割成每份 6 MB 的小文件。Syntax : split -b <Size-in-MB> .<extension> “prefix-name”
[root@localhost tmp]# split -b 6M mybackup-2017-09-19.tgz mybackup-parts
以上命令会在当前目录分割 mybackup-2017-09-19.tgz文件成为多个 6 MB 的小文件,文件名为 mybackup-partsaa ~ mybackup-partsag。如果在要在分割文件后以数字而非字母来区分,可以在以上的 split 命令使用-d 选项。
[root@localhost tmp]#
split -b 6M mybackup-
2017-
09-
19.tgz mybackup-
parts
[root@localhost tmp]# ll
total 157888
-rw-r--r--.
1 root root
27627520 Sep
19 21:
59 etc.
tar
-rwx------.
1 root root
836 May
27 03:
47 ks-script-
hjy08p
-rw-r--r--.
1 root root
19223011 Sep
19 22:
40 mybackup-
2017-
09-
19.tgz
-rw-r--r--.
1 root root
6291456 Sep
19 22:
46 mybackup-
partsaa
-rw-r--r--.
1 root root
6291456 Sep
19 22:
46 mybackup-
partsab
-rw-r--r--.
1 root root
6291456 Sep
19 22:
46 mybackup-
partsac
-rw-r--r--.
1 root root
348643 Sep
19 22:
46 mybackup-
partsad
-rw-r--r--.
1 root root
11301 May
27 00:
39 pass
-rw-r--r--.
1 root root
48537600 Sep
19 22:
42 root.
tar
drwx------.
3 root root
17 May
26 21:
15 systemd-private-85aa472335ef4117a4ffab639e34b392-httpd.service-
WejRSA
-rw-r--r--.
1 root root
0 May
27 00:
53 tar.txt
drwxr-xr-x.
2 root root
6 May
27 00:
46 test
-rw-r--r--.
1 root root
47042560 Sep
19 22:
01 tmp.
tar
-rw-------.
1 root root
0 May
27 03:
43 yum.log
然后通过网络将这些分割文件转移到其他服务器,就可以合并成为一个单独的 tar 文件了,如下:
[root@localhost mnt]# ll
total 18776
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsaa
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsab
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsac
-rw-r--r--.
1 root root
348643 Sep
19 22:
48 mybackup-
partsad
[root@localhost mnt]# cat mybackup-partsa* > mybackup-
2017-
09-
19.tgz
[root@localhost mnt]# ll
total 37552
-rw-r--r--.
1 root root
19223011 Sep
19 22:
48 mybackup-
2017-
09-
19.tgz
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsaa
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsab
-rw-r--r--.
1 root root
6291456 Sep
19 22:
48 mybackup-
partsac
-rw-r--r--.
1 root root
348643 Sep
19 22:
48 mybackup-
partsad
[root@localhost mnt]# du -
sh .
/*
19M ./mybackup-2017-09-19.tgz
6.0M ./mybackup-partsaa
6.0M ./mybackup-partsab
6.0M ./mybackup-partsac
344K ./mybackup-partsad
[root@localhost mnt]# du -sh /tmp/mybackup-2017-09-19.tgz
19M /tmp/mybackup-2017-09-19.tgz
***********************************************************
学习永远不晚。——高尔基
***********************************************************
转载于:https://www.cnblogs.com/chengd/p/7541495.html
相关资源:JAVA上百实例源码以及开源项目