5.打包与压缩
本章同步视频:https://edu.51cto.com/sd/e4874
5.2 打包指令: tar
5.2.1 tar语法
[dmtsai@study ~]$ tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename…<==打包与压缩
[dmtsai@study ~]$ tar [-z|-j|-J] [tv] [-f 既有的 tar檔名] <==察看檔名
[dmtsai@study ~]$ tar [-z|-j|-J] [xv] [-f 既有的 tar檔名] [-C 目录] <==解压缩
-c :建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename)
-t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-z :透过gzip的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-J :透过xz的支持进行压缩/解压缩:此时档名最好为 *.tar.xz
特别留意, -z, -j, -J 不可以同时出现在一串指令列中
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
5.2.2 tar打包与压缩
[root@localhost tmp]# tar -cvf dir.tar dir/
[root@localhost tmp]# tar -zcv -f dir.tar.gz dir/
[root@localhost tmp]# tar -jvc -f dir.tar.bz dir/
[root@localhost tmp]# tar -Jcv -f dir.tar.xz dir/
drwxrwxrwx. 2 root root 70 Mar 30 22:05 dir
-rw-r–r–. 1 root root 10240 Mar 30 22:01 dir.tar
-rw-r–r–. 1 root root 2541 Mar 30 22:07 dir.tar.bz
-rw-r–r–. 1 root root 2093 Mar 30 22:05 dir.tar.gz
-rw-r–r–. 1 root root 1956 Mar 30 22:08 dir.tar.xz
5.2.3 查看打包内容
[root@localhost tmp]# tar -ztv -f dir.tar.gz
drwxrwxrwx root/root 0 2020-03-30 22:05 dir/
-rw-r–r– root/root 2003 2020-03-30 21:05 dir/passwd
-rw-r–r– root/root 864 2020-03-30 21:05 dir/passwd.xz
-rw-r–r– root/root 864 2020-03-30 21:46 dir/passwd.9.xz
-rw-r–r– root/root 45 2020-03-30 22:05 dir/dir.tar.gz
[root@localhost tmp]# tar -jtv -f dir.tar.bz
drwxrwxrwx root/root 0 2020-03-30 22:05 dir/
-rw-r–r– root/root 2003 2020-03-30 21:05 dir/passwd
-rw-r–r– root/root 864 2020-03-30 21:05 dir/passwd.xz
-rw-r–r– root/root 864 2020-03-30 21:46 dir/passwd.9.xz
-rw-r–r– root/root 45 2020-03-30 22:05 dir/dir.tar.gz
[root@localhost tmp]# tar -Jtv -f dir.tar.xz
drwxrwxrwx root/root 0 2020-03-30 22:05 dir/
-rw-r–r– root/root 2003 2020-03-30 21:05 dir/passwd
-rw-r–r– root/root 864 2020-03-30 21:05 dir/passwd.xz
-rw-r–r– root/root 864 2020-03-30 21:46 dir/passwd.9.xz
-rw-r–r– root/root 45 2020-03-30 22:05 dir/dir.tar.gz
[root@localhost tmp]# tar -tv -f dir.tar
drwxrwxrwx root/root 0 2020-03-30 21:46 dir/
-rw-r–r– root/root 2003 2020-03-30 21:05 dir/passwd
-rw-r–r– root/root 864 2020-03-30 21:05 dir/passwd.xz
-rw-r–r– root/root 864 2020-03-30 21:46 dir/passwd.9.xz
5.2.4 解压
[root@localhost tmp]# tar -xv -f dir.tar
[root@localhost tmp]# tar -xv -f dir.tar -C /root
[root@localhost tmp]# tar -zvx -f dir.tar.gz #解压到当前目录
[root@localhost tmp]# tar -zvx -f dir.tar.gz -C /root #解压到/root
[root@localhost tmp]# tar -jvx -f dir.tar.bz #解压到当前目录
[root@localhost tmp]# tar -jvx -f dir.tar.bz -C /root #解压到/root
[root@localhost tmp]# tar -Jvx -f dir.tar.xz #解压到当前目录
[root@localhost tmp]# tar -Jvx -f dir.tar.xz -C /root #解压到/root
5.2.5 特殊用法
[root@localhost tmp]# tar -t -f dir.tar #查看压缩文件
[root@localhost tmp]# ll dir #查看dir源目录里的内容(用于验证实验)
-rw-r–r–. 1 root root 45 Mar 30 22:05 dir.tar.gz
-rw-r–r–. 1 root root 864 Mar 30 21:46 passwd.9.xz
-rw-r–r–. 1 root root 864 Mar 30 21:05 passwd.xz
[root@localhost tmp]# tar -xv -f dir.tar dir/passwd #解压指定文件
[root@localhost tmp]# ll dir #再次查看dir源目录里的内容
-rw-r–r–. 1 root root 45 Mar 30 22:05 dir.tar.gz
-rw-r–r–. 1 root root 2003 Mar 30 21:05 passwd
-rw-r–r–. 1 root root 864 Mar 30 21:46 passwd.9.xz
-rw-r–r–. 1 root root 864 Mar 30 21:05 passwd.xz
-rw-r–r–. 1 root root 45 Mar 30 22:05 dir.tar.gz
-rw-r–r–. 1 root root 864 Mar 30 21:46 passwd.9.xz
-rw-r–r–. 1 root root 864 Mar 30 21:05 passwd.xz
[root@localhost tmp]# tar -Jcv -f dir.tar.xz –exclude=dir/passwd.xz dir/
[root@localhost tmp]# tar -Jtv -f dir.tar.xz
drwxrwxrwx root/root 0 2020-03-30 22:34 dir/
-rw-r–r– root/root 45 2020-03-30 22:05 dir/dir.tar.gz
-rw-r–r– root/root 864 2020-03-30 21:46 dir/passwd.9.xz
[root@localhost tmp]# touch -m -d “20200501” dir/passwd.xz
-rw-r–r–. 1 root root 45 Mar 30 22:05 dir.tar.gz
-rw-r–r–. 1 root root 864 Mar 30 21:46 passwd.9.xz
-rw-r–r–. 1 root root 864 May 1 2020 passwd.xz
[root@localhost tmp]# tar -jcv -f dir.tar.bz2 –newer-mtime=”20200404″ dir
tar: Option –newer-mtime: Treating date `20200404′ as 2020-04-04 00:00:00
tar: dir/dir.tar.gz: file is unchanged; not dumped #未备份
tar: dir/passwd.9.xz: file is unchanged; not dumped #未备份
drwxrwxrwx. 2 root root 57 Mar 30 22:50 dir
-rw-r–r–. 1 root root 1296 Mar 30 22:52 dir.tar.bz2 #备份文件
-rw-r–r–. 1 root root 1144 Mar 30 22:36 dir.tar.xz
-rwxrw—-. 1 root root 6 Mar 19 10:24 root
-rw-r–r–. 1 root root 65 Mar 12 11:04 test
[root@localhost tmp]# tar -jtv -f dir.tar.bz2 #查看备份文件的内容