-
首先,在一个
test
目录下创建两个txt文件:mkdir test cd test touch test1.txt test2.txt
-
如果要将这两个文本文件压缩到
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
结论:压缩大小一样,可能需要测试更大的文件了,这个就留给读者验证吧
-
如果要将这两个文本文件压缩到其他目录下,比如
test2/
目录下,可以运行:tar zcvf ~/test2/pack.tar.gz test1.txt test2.txt
-
我们继续3中的结果,将
test2/
下的pack.tar.gz
解压到test/
下,运行:tar zxvf ~/test2/pack.tar.gz -C ~/test
我们可以看到,如果不是解压到当前文件下,必须使用
-C
来指定目标解压路径,如果不使用-C
参数,则会报找不到路径的错误 -
进一步的,如果我们要压缩一个目录
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/`
-
那如果我们不想保留
dir/
,只想把dir/
下的文件222.txt
给压缩呢?可以运行:tar zcvf pack.tar -C dir/ .
上面的`.`不能忘了哦~ 输出: ./ ./222.txt 所以,是没有保留`dir/`
当然了,可以先切入到
dir/
下,再运行:tar zcvf pack.tar *
tar 命令整理
最新推荐文章于 2024-08-02 21:59:01 发布