tar命令
上次的压缩命令大多只能对单一的文件进行压缩,对目录却无能为力,虽然 gzip, bzip2, xz 也能够针对目录来进行压缩不过, 这几个指令对目录的压缩指的是“将目录内的所有文件 “分别” 进行压缩”的动作。在Windows 的系统,可以使用类似 WinRAR 这一类的压缩软件来将好多数据“包成一个文件”的样式。不过在linux中,也存在将很多个文件,目录打包成一个大文件,也就是打包指令,那就是神奇的tar,同时还可以通过 gzip/bzip2/xz 的支持,将该文件同时进行压缩。
tar的命令实在太多,以下只说一下常用的几个,其他的可以在linux上找man来解决。
用法:
先看一下参数:
- -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 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
- -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
- -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
打包:tar -cv -f filename.tar 要打包的文件1 要打包的文件2 要打包的目录
root@localhost:/tmp# tar -cvf many.tar test.txt test2.txt direc
test.txt
test2.txt
direc/
以上命令的意思是将test.txt test2.txt 文件,direc目录打包在一起名字叫many.tar,注意这只是打包,并没有压缩,c的意思是将文件打包,v是打包的过程中显示文件名,f后是打包之后的名字。注意f要跟其他参数放一起时只能放在最后。
压缩:上面说了打包的命令,接下来只要加一个参数即可进行压缩
tar -c[zjJ]v -f filename.tar
-z
root@localhost:/tmp# tar -czvf many.tar.gz test.txt test2.txt direc
test.txt
test2.txt
direc/
root@localhost:/tmp# ls -l
-rw-r--r-- 1 root root 240 6月 15 15:59 many.tar.gz
-j
root@localhost:/tmp# tar -cjvf many.tar.bz2 test.txt test2.txt direc
test.txt
test2.txt
direc/
root@localhost:/tmp# ls -l
-rw-r--r-- 1 root root 251 6月 15 16:01 many.tar.bz2
-J
root@localhost:/tmp# tar -cJvf many.tar.xz test.txt test2.txt direc
test.txt
test2.txt
direc/
root@localhost:/tmp# ls -l
-rw-r--r-- 1 root root 268 6月 15 16:03 many.tar.xz
解压:
解压缩:tar -x[zjJ]v -f filename.tar.bz2 -C 欲解压缩的目录,与压缩不一样,c换成了x,x是将打的包解开与c是相反的意思。中括号中的参数根据压缩时参数进行选择,只能选择一个
以J示例:
root@localhost:/tmp# tar -xJvf many.tar.xz
test.txt
test2.txt
direc/
小结:
总结
- *.tar 用 tar -xvf 解包-未压缩
- *.gz 用 gzip -d或者gunzip 解压(未被打包的文件)
- .tar.gz和*.tgz 用 tar -xvzf 解压,解压的出的文件一一列出。
- *.bz2 用 bzip2 -d或者用bunzip2 解压(未被打包的文件)
- *.tar.bz2用tar -xvjf 解压,解压的出的文件一一列出
- *.Z 用 uncompress 解压
- *.tar.Z 用tar -xvZf 解压
- *.rar 用 unrar e解压
- *.zip 用 unzip 解压
- *.tar.xz用tar -xvJf来解压,解压的出的文件一一列出
- *.xz 用xz -d 来解压
tar的神奇之处有很多,不懂就问man