Linux 环境如何压缩和解压缩文件 打包和压缩的区别 打包和压缩是不同的概念,打包是将多个文件/文件夹合并为一个文件,而压缩则是通过压缩算法来减小文件体积。要注意的是,打包并不意味着减小体积,压缩也不意味着要把文件合并到一起。尽管大部分时候我们习惯了“打包并压缩”,有时候并不需要对它们进行区分,但了解它们的区别有助于更好地认知 Linux 系统中的相关命令。
打包和解包(tar) 只打包不压缩 使用tar命令将多个文件/文件夹打包为一个文件:
shtar -cvf archive.tar file1 file2 file3其中archive.tar打包后的文件,file1, file2 和 file3是要打包的文件/文件夹。
针对每一个被打包的文件,会有输出:
sha file1
a file2
a file3打包并压缩 tar命令也集成了压缩功能,可以使用 gzip 或 bzip2 压缩算法,对应的参数分别是-z和-j:
sh# 使用gzip压缩,文件名后面加上 .gz
tar -zcvf archive.tar.gz file1 file2 file3
# 使用gzip压缩,文件名后缀使用 .tgz
tar -zcvf archive.tgz file1 file2 file3
# 使用bzip2压缩,文件名后面加上 .bz2
tar -jcvf archive.tar.bz2 file1 file2 file3
# 使用bzip2压缩,文件名后缀使用 .tbz2
tar -jcvf archive.tbz2 file1 file2 file3解包 shtar -xvf archive.tar如果需要解包到指定目录,则加上-C参数:
shtar -xvf archive.tar -C /path/to/destination/directory如果有压缩的话,加上对应的-z或者-j参数即可:
sh# 解压缩gzip格式的压缩包
tar -zxvf archive.tar.gz
# 解压缩bzip2格式的压缩包
tar -jxvf archive.tar.bz2压缩和解压缩文件 gzip压缩 gzip命令用来压缩文件,值得注意的是,它会覆盖原文件,即使用gzip命令压缩后,原文件会消失:
sh# file会消失,新产生一个file.gz
gzip file如果将gzip直接应用到目录上没有任何效果,因为gzip只能压缩文件,而不能压缩目录。但可以使用-r参数来递归压缩目录中的所有文件:
sh# dirname目录中的所有文件都会被压缩,每个文件生成一个对应的.gz文件,原文件消失
gzip dirnamegzip解压缩 解压单个文件,使用-d参数:
sh# 将file.gz文件解压缩,新产生一个file
gzip -d file.gz增加-r参数可针对目录进行递归解压缩,和压缩时的递归类似,也是将目录中的所有文件都解压缩:
sh# 将dirname及子目录下的所有gzip压缩文件全部解压缩
gzip -dr dirnamezip压缩 zip可以同时完成打包和压缩2个动作。
打包压缩:
shzip archive.zip file1 file2 file3输出:
shadding: file1 (stored 0%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)如果有目录需要一起打包压缩,需要加上-r参数,此外可以使用-q参数关闭输出:
shzip -qr archive.zip dirnamezip解压缩 当前目录下直接解压缩:
shunzip archive.zip如需要解压到指定目录,可使用-d参数,此外-o参数可以不询问直接覆盖已有文件:
shunzip -d /path/to/destination/directory -o archive.zip速查总结 后缀打包/压缩解包/解压缩.tartar -cvf archive.tar file1 file2tar -xvf archive.tar -C /dest/path.tar.gz/.tgztar -zcvf archive.tar file1 file2tar -zxvf archive.tar -C /dest/path.tar.bz2/.tbz2tar -jcvf archive.tar file1 file2tar -jxvf archive.tar -C /dest/path.gzgzip filegzip -d file.gz.zipzip -r archive.zip file1 file2unzip -d /dest/path -o archive.zip