tar命令

上次的压缩命令大多只能对单一的文件进行压缩,对目录却无能为力,虽然 gzip, bzip2, xz 也能够针对目录来进行压缩不过, 这几个指令对目录的压缩指的是“将目录内的所有文件 “分别” 进行压缩”的动作。在Windows 的系统,可以使用类似 WinRAR 这一类的压缩软件来将好多数据“包成一个文件”的样式。不过在linux中,也存在将很多个文件,目录打包成一个大文件,也就是打包指令,那就是神奇的tar,同时还可以通过 gzip/bzip2/xz 的支持,将该文件同时进行压缩。

tar的命令实在太多,以下只说一下常用的几个,其他的可以在linux上找man来解决。

用法:

先看一下参数:

  1. -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)

  2. -t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了;

  3. -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开

    特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。

以上三个是与打包解包相关的命令,命令串中只能出现其中一个。

  1. -z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz

  2. -j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2

  3. -J :通过 xz的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz

    特别留意, -z, -j, -J 不可以同时出现在一串命令行中

以上三个参数是压缩时选用的哪种压缩方式,压缩指令参数只能有一个。

  1. -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
  2. -f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记)
  3. -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
  4. -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
  5. -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

打包:tar -cv -f filename.tar 要打包的文件1 要打包的文件2 要打包的目录

1
2
3
4
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

1
2
3
4
5
6
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

1
2
3
4
5
6
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

1
2
3
4
5
6
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示例:

1
2
3
4
root@localhost:/tmp# tar -xJvf many.tar.xz
test.txt
test2.txt
direc/

小结:

总结

  1. *.tar 用 tar -xvf 解包-未压缩
  2. *.gz 用 gzip -d或者gunzip 解压(未被打包的文件)
  3. .tar.gz和*.tgz 用 tar -xvzf 解压,解压的出的文件一一列出。
  4. *.bz2 用 bzip2 -d或者用bunzip2 解压(未被打包的文件)
  5. *.tar.bz2用tar -xvjf 解压,解压的出的文件一一列出
  6. *.Z 用 uncompress 解压
  7. *.tar.Z 用tar -xvZf 解压
  8. *.rar 用 unrar e解压
  9. *.zip 用 unzip 解压
  10. *.tar.xz用tar -xvJf来解压,解压的出的文件一一列出
  11. *.xz 用xz -d 来解压

tar的神奇之处有很多,不懂就问man