tar命令
tar命令选项
备份站点目录html
[root@cs6 ~]# mkdir -p /var/www/html/oldboy/test [root@cs6 ~]# touch /var/www/html/{1..10}.html [root@cs6 ~]# ls /var/www/html/ 10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html oldboy [root@cs6 ~]# cd /var/www/ [root@cs6 www]# ls html [root@cs6 www]# tar zcvf www.tar.gz ./html ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# ll -h www.tar.gz -rw-r--r--. 1 root root 255 May 12 18:20 www.tar.gz [root@cs6 www]# tar ztvf www.tar.gz #<一使用选项-t不解压就可以查看压缩包的内容,选项v可以显示文件的属性。 drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/ -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/4.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/7.html drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/oldboy/ drwxr-xr-x root/root 0 2019-05-12 18:19 ./html/oldboy/test/ -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/9.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/2.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/5.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/3.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/6.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/10.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/1.html -rw-r--r-- root/root 0 2019-05-12 18:19 ./html/8.html [root@cs6 www]# tar ztf www.tar.gz #<==省略v选项。 ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html
[root@cs6 www]# tar tf www.tar.gz #<=如果不指定z选项,那么tar命令也会自动判断压缩包的类型,自动调用gzip命令。 ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html
解开压缩包
[root@cs6 www]# tar zxvf www.tar.gz -C /tmp/ ./html/ ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# ls /tmp/html/ 10.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html oldboy [root@cs6 www]# tar xf www.tar.gz -C /tmp/ #去掉v选项也可以,只要涉及解压的操作,tar命令都能自动识别压缩包的质缩类型,但是压缩时必须要加上z选项。
排除打包
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test ./html/ #<==test目录结尾不要加/,否则不会成功。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test --exclude=html/oldboy ./html/ #<-=排除2个以上目录的方法:并列使用多个--exclude。 ./html/4.html ./html/7.html ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html
排除多个文件打包参数-X
[root@cs6 www]# cat list.txt 10.html 8.html 1.html 7.html 5.html [root@cs6 www]# tar zcvfX paichu.tar.gz list.txt ./html/ ./html/ ./html/4.html ./html/oldboy/ ./html/oldboy/test/ ./html/9.html ./html/2.html ./html/3.html ./html/6.html
打包链接文件
[root@cs6 www]# cd /etc/ [root@cs6 etc]# tar zcf local.tar.gz ./rc.local [root@cs6 etc]# tar tvf local.tar.gz lrwxrwxrwx root/root 0 2019-05-05 23:11 ./rc.local -> rc.d/rc.local [root@cs6 etc]# tar zcfh local_h.tar.gz ./rc.local [root@cs6 etc]# tar tvf local_h.tar.gz -rwxr-xr-x root/root 220 2018-06-20 00:12 ./rc.local
解决tar使用-exclude 选项时遇到的问题。
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=/var/www/html/oldboy/test ./html/ #<==打包路径为相对路径,--exclude的路径为绝对路径。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/oldboy/test/ #<==没有成功排除。 ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test ./html/ #<==打包路径为相对路径,--exclude的路径为相对路径。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=oldboy/test ./html/ #<==--exclude的相对路径去掉html也可以。 ./html/4.html ./html/7.html ./html/oldboy/ ./html/9.html ./html/2.html ./html/5.html ./html/3.html ./html/6.html ./html/10.html ./html/1.html ./html/8.html [root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=/var/www/html/oldboy/test tar: Removing leading `/' from member names #<==打包路径为绝对路径,--exclude的路径为绝对路径。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html [root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=html/oldboy/test tar: Removing leading `/' from member names #<==打包路径为绝对路径,--exclude的路径为相对路径。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html [root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=oldboy/test tar: Removing leading `/' from member names #<== --exclude的相对路径去择html也可以。 /var/www/html/ /var/www/html/4.html /var/www/html/7.html /var/www/html/oldboy/ /var/www/html/9.html /var/www/html/2.html /var/www/html/5.html /var/www/html/3.html /var/www/html/6.html /var/www/html/10.html /var/www/html/1.html /var/www/html/8.html
打包/etc目录下所有的普通文件
[root@cs6 /]# ls etc adjtime DIR_COLORS init.d motd [root@cs6 /]# tar zcvf /tmp/etc.tar.gz `find etc/ -type f` #<==使用find找到所有的普通文件,在tar上命令语句中嵌套一个反引号包含的find命令语句。 [root@cs6 /]# ll -h /tmp/etc.tar.gz -rw-r--r--. 1 root root 8.7M May 12 18:46 /tmp/etc.tar.gz