tar 命令整理

  1. 首先,在一个test目录下创建两个txt文件:

    mkdir test
    cd test
    touch test1.txt test2.txt
    
  2. 如果要将这两个文本文件压缩到test/目录下,可以运行:

    tar zcvf pack.tar.gz test1.txt test2.txt 
    

    也可以运行:

    tar zcvf pack.tar.gz *
    

    你或许知道另外一个后缀名.tar,那这个和.tar.gz有什么区别呢?
    简单的讲,.tar.gz是在.tar的基础上,使用gzip进行了深度压缩,可以大大减少压缩包的大小,我们可以通过命du -sh *.tar*来对比验证一下
    注意了: 因为这两种压缩方式对小文件的压缩效果差别不明显,所以这里我在test/下copy了一个data文件夹,里面包含了很多图像数据,用这个文件夹来做测试,对比结果如下:

    349M	pack.tar
    349M	pack.tar.gz
    

    结论:压缩大小一样,可能需要测试更大的文件了,这个就留给读者验证吧

  3. 如果要将这两个文本文件压缩到其他目录下,比如test2/目录下,可以运行:

    tar zcvf ~/test2/pack.tar.gz test1.txt test2.txt
    
  4. 我们继续3中的结果,将test2/下的pack.tar.gz解压到test/下,运行:

    tar zxvf ~/test2/pack.tar.gz -C ~/test
    

    我们可以看到,如果不是解压到当前文件下,必须使用-C来指定目标解压路径,如果不使用-C参数,则会报找不到路径的错误

  5. 进一步的,如果我们要压缩一个目录test/dir,但是想保留目录的前缀dir,可以运行:

    tar zcvf pack.tar dir
    

    通过解压来验证:

    dir  pack.tar  test1.txt  test2.txt
    

    如果不想要dir,想直接压缩dir/下的所有文件,可以改为:

    tar zcvf pack.tar dir/
    
    上面命令会输出:
    dir/
    dir/222.txt
    所以,是保留了`dir/`
    
  6. 那如果我们不想保留dir/,只想把dir/下的文件222.txt给压缩呢?可以运行:

    tar zcvf pack.tar -C dir/ .
    
    上面的`.`不能忘了哦~
    输出:
    ./
    ./222.txt
    所以,是没有保留`dir/`
    

    当然了,可以先切入到dir/下,再运行:

    tar zcvf pack.tar *
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值