linux每天一个命令:tar

chengd chengd     2022-09-20     503

关键词:

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 创建一个归档文件

[[email protected] ~]# 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
[[email protected] ~]# tar cvf /tmp/root.tar ./*
./anaconda-ks.cfg
./group
./passwd
./tmp.tar.bz2
./tmp.tg
./tmp.tgz

示例2:-t 查看归档内容 

[[email protected] ~]# 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)文件中 

[[email protected] ~]# 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
[[email protected] ~]# tar -rvf /tmp/root.tar /etc/issue
tar: Removing leading `/ from member names    #若以绝对路径打包的话,tar默认会将/去除
/etc/issue
[[email protected] ~]# 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 更新归档文件

[[email protected] ~]# 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
[[email protected] ~]# tar -uvf /tmp/root.tar /etc/sysconfig/network
tar: Removing leading `/ from member names
/etc/sysconfig/network
[[email protected] ~]# 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 从归档的文件中提取文件

[[email protected] 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 文件到指定目录

[[email protected] 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
[[email protected] 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 在还原文件时,把所有文件的修改时间设定为当前时间

[[email protected] ~]# 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
[[email protected] ~]# ll /root/root_tar/
total 0
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# date
Tue Sep 19 21:55:57 CST 2017

示例8:-A,--catenate,--concatenate 新增归档文件到已存在的归档文件

tar Avf 追加的归档文件 新增归档文件

[[email protected] 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
[[email protected] tmp]# tar Avf tmp.tar root.tar 
[[email protected] 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 从归档文件中删除指定文件

[[email protected] ~]# 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
[[email protected] ~]# tar --delete -vf rootbak.tar ./tmp.tg
[[email protected] ~]# 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 不把指定文件包含在内

[[email protected] 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
[[email protected] root_tar]# tar cvf test.tar ./* --exclude tmp.tar.bz2
./anaconda-ks.cfg
./passwd
[[email protected] 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。

[[email protected] ~]# tar -zcpvf myarchive.tar.gz /etc
或
[[email protected] ~]# tar -zcpvf myarchive.tgz /etc

示例 11:创建并压缩归档文件(.tar.bz2 或 .tbz2)

假设我们需要打包 /etc文件夹,并使用 bzip2 压缩。可以在 tar 命令中使用 -j 选项来实现。这种 tar 文件的扩展名可以是 .tar.bz2 或者 .tbz。

[[email protected] ~]# tar -jcpvf myarchive.tar.bz2 /etc
或
[[email protected] ~]# tar -jcpvf myarchive.tbz2 /etc

示例 12:列出 .tar.gz /.tgz或.tar.bz2/.tbz2 文件中的内容

[[email protected] 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 文件。如下:

[[email protected] ~]# tar -zxpvf myarchive.tgz -C /tmp/

以上命令将 tar 文件解压到 /tmp 目录。

注:现今的 tar 命令会在执行解压动作前自动检查文件的压缩类型,这意味着我们在使用 tar 命令是可以不用指定文件的压缩类型。如下:

[[email protected] ~]# tar -xpvf myarchive.tgz -C /tmp/

示例 14:解压 .tar.bz2 或 .tbz2 文件

使用 -j 和 -x 选项来解压 .tar.bz2 或 .tbz2 文件。如下:

[[email protected] ~]# tar -jxpvf myarchive.tbz2 -C /tmp/

或

[[email protected] ~]# 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 然后分别输入以下内容

[[email protected] ~]# cat tar-include 
/root
[[email protected] ~]# cat tar-exclude 
/root/rootbak.tar
/root/tmp.tar.bz2
运行以下命令来创建一个压缩归档文件。

[[email protected] ~]# tar zcpvf mybackup-$(date +%Y-%m-%d).tgz -T /root/tar-include -X /root/tar-exclude

示例 16:查看 .tar、.tgz 和 .tbz2 文件的大小

使用如下命令来查看 (压缩) tar 文件的体积。

[[email protected] tmp]# tar czf - root.tar | wc -c
48227906
[[email protected] 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”

[[email protected] tmp]# split -b 6M mybackup-2017-09-19.tgz mybackup-parts

以上命令会在当前目录分割 mybackup-2017-09-19.tgz文件成为多个 6 MB 的小文件,文件名为 mybackup-partsaa ~ mybackup-partsag。如果在要在分割文件后以数字而非字母来区分,可以在以上的 split 命令使用-d 选项。

[[email protected] tmp]# split -b 6M mybackup-2017-09-19.tgz mybackup-parts
[[email protected] 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 文件了,如下:

[[email protected] 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
[[email protected] mnt]# cat mybackup-partsa* > mybackup-2017-09-19.tgz
[[email protected] 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
[[email protected] mnt]# du -sh ./*
19M    ./mybackup-2017-09-19.tgz
6.0M    ./mybackup-partsaa
6.0M    ./mybackup-partsab
6.0M    ./mybackup-partsac
344K    ./mybackup-partsad
[[email protected] mnt]# du -sh /tmp/mybackup-2017-09-19.tgz 
19M    /tmp/mybackup-2017-09-19.tgz

 

 

 

 

***********************************************************

 学习永远不晚。——高尔基

***********************************************************

每天一个linux命令(28):tar命令

通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。tar命令可以为linux的文件和目录创建档案。利用tar,... 查看详情

每天一个linux命令(22):tar命令

通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。tar命令可以为linux的文件和目录创建档案。利用tar,... 查看详情

(转)每天一个linux命令(28):tar命令

场景:Linux环境中压缩和解压的命令经常会使用到,所以学好这个命令很有必要!原文出处:http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html1引言通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是... 查看详情

每天一个linux命令(28):tar命令

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案... 查看详情

每天一个linux命令(文件上传下载文件操作):转载tar命令

  通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。  tar命令可以为linux的文件和目录创建档案。... 查看详情

2018/04/17每日一个linux命令之tar

...要看会其他知识。但是也不应该给自己找理由,还是应该每天的坚持下去--tar用于在linux解压缩/文件这个命令下面的参数非常多,想看的可以去看下,这里只写出常用的解压缩命令。Linuxtar命令--压缩例如我们要把/etc目录打包1:... 查看详情

每天一个linux命令(28)--gzip命令

  减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、... 查看详情

每天一个linux命令(文件上传下载文件操作):转载gzip命令

  减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、... 查看详情

转载每天一个linux命令

每天一个linux命令(1) :ls命令每天一个linux命令(2) :cd命令每天一个linux命令(3) :pwd命令每天一个linux命令(4) :mkdir命令每天一个linux命令(5) :rm命令每天一个linux命令(6) :rmdir命令每天一个linux命令(7) :... 查看详情

每天一个linux命令(24)--linux文件类型与扩展名

  linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt file.tar.gz。这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称... 查看详情

每天一个linux命令(24):linux文件类型与扩展名

Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为... 查看详情

每天一个linux命令目录(转)

一.文件目录操作命令:   1.每天一个linux命令(1):ls命令   2.每天一个linux命令(2):cd命令  3.每天一个linux命令(3):pwd命令   4.每天一个linux命令(4):mkdir命令  5.每天一个linux命令(5... 查看详情

每天一个linux命令

   开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为:  1.《鸟哥的linux私房菜》  2.http://codingstandards.iteye.com/blog/786653  3.linux命令五分钟系列  ... 查看详情

每天一个linux命令

开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为:  1.《鸟哥的linux私房菜》  2.http://codingstandards.iteye.com/blog/786653  3.linux命令五分钟系列   4.其他互... 查看详情

linux每天一个命令

sudofuser-k80/tcp 查看详情

每天一个linux命令

1:hostnamehostname //查看centos主机名centos6.0  使用命令 hostnamewebserver 则立即生效centos7.0  使用命令 hostnamectlset-hostnamewebserver立即生效2:linux文件系统目录含义LINUX文件系统中,每一个目录都代表着其各 查看详情

每天一个linux命令(33)--df命令

  周末是学习的好时光。  每天一个Linux命令,接下来是磁盘存储相关的,df, du命令  Linux中df 命令的功能是用来检查Linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目... 查看详情

每天一个linux命令4

Linux系统关机命令shutdown-h时间    init0      poweroff      Linux系统注销命令logout      或者是快捷键  Ctrl+d  Linux系统重启命令reboot     Linux软件包管理1、查询包是否安装  #rpm-q包名选项... 查看详情