请稍侯

Linux Tar

01 April 2015
更多

Tar 用法:

* 虽然一直都在用这个命令,但是一般也只是解压、压缩,并没有用到其他
* 今天好好写点常用的的用法

先讲讲常用选项:

* -c 创建一个新归档,也就是压缩啦
* -x 从归档中抽取文件,也就是解压整个压缩包所有文件
* -C 指定文件被解压文件存放的文件夹(必须已存在),一般和-x一起使用; 可选项
* -v 显示文件归档进度,也就是压缩/解压等过程
* -f (用于指定压缩或解压等具体文件名, 一般不独立使用):
    * 当与-c一起使用时,-f用于指定常见压缩文件的文件名,没有-f或报错: 压缩文件不存在
    * 当与-x一起使用时,-f指定要被压缩的文件名, 否则没文件怎么解压
* -t 显示包括在tar文件中的文件列表
* -u 向压缩文档中添加新文件,或更新文件
* --delete 删除某个/某些文件
* 3种压缩格式:
    * -z : 最常用之一, 使用gzip来压缩/解压tar文件, 文件名: .tar.gz, .tgz
    * -j : 最常用之一,使用bzip2来压缩/解压tar文件, 文件名: tar.bz2 等
    * -J : 使用xz方式压缩解压tar文件, 比较少用,但是压缩率非常高,kernel.org的内核源文件一般都是这种压缩格式, 文件名: .tar.xz等

常用的几种:

* 1. 解压文件:
    * tar.gz,tgz文件: tar -zxvf filename.tar.gz/filename.tgz -C 指定被解压的文件夹
      * `-C 是可选项`, 如果没-C则默认是当前文件夹
    * tar.bz2等文件: tar -jxvf filename.tar.bz2
    * tar.xz等文件: tar -Jxvf filename.tar.xz
* 2. 压缩文件:
    * tar.gz, tgz文件: tar -zcvf 压缩后的文件名.tar.gz 要被压缩的文件或文件夹
      * `压缩后,原文件/文件夹都还在`
    * tar.bz2 : ... -j
    * tar.zx : ... -J
* 3. 只查看压缩文件,不解压:
    * 查看所有: tar -ztvf filename.tar.gz
    * 查看关键字文件: 借助 grep: tar -ztvf filename.tar.gz | grep -i keyword
* 4. 向已存在的文档中添加新文件(不一定不存在,更新也可以, 记得指明压缩文件中的相对路劲)
  * tar -uvf filename.tar file1 \[ file2... \]
* 5. 删除某个或某个文档中的文件:
    * tar --delete -vf file.tar 必须指明归档文件中要被删除的具体的路径的文件
注意: 归档: 只是把文件打包, tarball, tar -cvf file.tar (注意是tar格式)
      压缩: 有多中压缩方式 gzip / bzip2 / xz等
      其实: tar.gz = tar + gz,也就是 先打包成tar文件,再压缩:
          ==> 1. tar -cvf file.tar file1 file2 directory1
          ==> 2. gzip -c file.tar > file.tar.gz
* 6. 提取单个文件:
    * tar -zxvf file.tar.gz "./new/abc.txt"
* 7. 提取多个文件:
    * tar -zxvf file.tar.gz "./new/abx.txt" "./new/ccc.txt"
* 8. 使用通配符解压多个文件:
    * tar -zxvf filename.tar.gz --wildcards "*.txt"
* 9. `通过tar进行备份`:
    * `tar -zcvf backup-file-$(date +%Y%m%d).tar.gz filesOrDirectories`