linux文件夹压缩命令 linux 压缩 文件夹

linux tar压缩解压缩文件夹、文件命令详解linux tar压缩解压缩文件夹、文件命令详解
直接先上三个常用命令
1.压缩当前目录下文件夹/文件yk到yk.tar.gz:
2.解压缩当前目录下的yk.tar.gz到file:
参数详解
五个命令中必选一个
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这几个参数是可选的
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f必选参数
-f: 使用档案名字,这个参数是最后一个参数,后面只能接档案名 。
查看
在不解压的情况下查看压缩包的内容:
说说 Linux 中的压缩与解压缩指令(tar) tar 的功能类似于 Windows 中的 WinRAR 。它可以将多个目录或文件打包成一个大文件,在打包的过程中还可以透过 gzip/bzip2/xz 的支持,对文件进行压缩 1。
tar 的选项参数很多,主要用到的有以下这些:
【linux文件夹压缩命令 linux 压缩 文件夹】 还是太多 , 记不住怎么办? 记住下面这些最常用的命令即可:
总结一下:z 为gzip;j 为bzip2;J 为xz 。c 为压缩;t 为查询;x 为解压缩 。最后跟着 vf 。f 一定要是最后一个 , 如果放在其他选项之前 , tar 就会把文件名搞错 。比如tar -zcfv xxx命令,tar 指令就会认为压缩文件名为 v!
压缩的文件名称要根据压缩算法加上响应的后缀:
只有知道了压缩算法,我们才能解的出来,你说是吗?所以文件名规范很重要 。
假设我们需要备份 /etc 文件夹,把它打成一个压缩包 1。这在实际应用中很常见,因为 /etc 文件夹存放了系统主要配置文件 。在英文中完整单词是etc.,也就是后面会带上一个句点,表示“等等”之意 。
接下来,我们分别使用 gzip、bzip2与 xz 算法对 /etc 文件夹进行打包压缩 。
gzip 压缩指令: time tar -zpcvf /root/etc.tar.gz /etc
bzip2压缩指令: time tar -jpcvf /root/etc.tar.bz2 /etc
xz 压缩指令: time tar -Jpcvf /root/etc.tar.xz /etc
从 real 中可以看出: gzip 的压缩速度最快,而 xz 的压缩速度最慢 。
从大小上来看,xz 的压缩率最高,而gzip 压缩率最差 。
压缩率高,自然需要时间成本 。因此需要压缩的文件夹很大 , 那么就要多多考虑时间成本咯 。因为 gzip 压缩速度快,这也是 *.tar.gz 比较流行的原因之一 。
假设有这样一种场景:我们需要打包某个文件夹(/root),但这个文件夹中的某个文件或者子文件夹不想打包进去(带 etc 前缀) 。也就是希望这个文件夹部分打包 , 部分不打包 。可以执行以下指令:
tar -zcvf /root/test.tar.gz --exclude=/root/etc* --exclude=/root/test.tar.gz /root
加了--exclude=/root/test.tar.gz是为了排除自身,否则压缩包中会包含一个大小为 0 的自身文件,这恐怕不是我们希望看到的:
通过tar -ztvf test.tar.gz就可以查看刚刚新打的压缩包中所包含的文件列表:
使用命令tar -ztvf etc.tar.gz查看刚刚打好的压缩包 。注意要使用匹配的解压缩算法才能正确解压,比如示例中是 gz 作为后缀 , 所以加了 -z 选项表示使用 gzip 算法进行解压 。
部分输出内容:
可以看到该命令把文件的权限、账户以及归属组也一并打印出来了 。
而且还有一点很关键,这些文件都没有根目录 。如果没有拿掉根目录,解压缩后的文件名就会是绝对路径,亦即解压缩后的数据一定会被放置 到 /etc/xxx 去 1 !这样系统的 /etc 文件夹就会被覆盖,后果很严重 。所以,tar 打包指令默认都会去除放入包中文件的根目录 。除非通过 -P 显示要求保留这些文件的根目录 。

推荐阅读