解压&压缩文件
tar是把文件打成一个包,并不压缩;
gz是用gzip把打成包的.tar文件压缩;
所以成了一个.tar.gz的文件
压缩
$ tar cvfz backup.tar.gz /xxx/
-c, --create
create a new archive
-v, --verbose
verbosely list files processed
-f, --file [HOSTNAME:]F
use archive file or device F (default /dev/rmt0)
-z, --gzip, --ungzip
filter the archive through gzip
解压
$ tar -zxvf xxx.tar.gz
这样会生成一个以文件名命名的文件夹
-z, --gzip, --ungzip
filter the archive through gzip
-x, --extract, --get
extract files from an archive
-v, --verbose
verbosely list files processed
-f, --file [HOSTNAME:]F
use archive file or device F (default /dev/rmt0)
查看文件列表
$ tar -tvzf * .tar.gz
-t, --list
list the contents of an archive
tar,gzip的使用方法
- 1.压缩一组文件为tar.gz后缀:
$ tar cvf backup.tar /etc # gzip -q backup.tar
或
$ tar cvfz backup.tar.gz /etc/
- 2.释放一个后缀为tar.gz的文件:
$ gunzip backup.tar.gz #tar xvf backup.tar
或
$ tar xvfz backup.tar.gz
- 3.用一个命令完成压缩
$ tar cvf - /etc/ | gzip -qc > backup.tar.gz
- 4.用一个命令完成释放
$ gunzip -c backup.tar.gz | tar xvf -
- 如何解开tar.Z的文件?
$ tar xvfz backup.tar.Z
或
$ uncompress backup.tar.Z #tar xvf backup.tar
- 5.如何压缩和解压缩.bz2的包?
$ bzip2 /etc/smb.conf 这将压缩文件smb.conf成smb.conf.bz2
$ bunzip2 /etc/smb.conf.bz2 这将在当前目录下还原smb.conf.bz2为smb.conf
注:.bz2压缩格式不是很常用,可以man bzip2
-6. 如何解压tar.bz2的包?
$ tar jxf linux-2.8.18.8.tar.bz2
下面详细介绍一下Linux中不同格式的压缩与解压:
Linux中几种格式的解压与压缩
- 约定:
FileName表示文件名,不能是目录名
name表示可以是文件名,也可以是目录名。
DirName表示目录名
可以用vim预览压缩包里的东西,例如:
$ vim Filename.tar.xz
防止解压出一堆散的文件污染目标文件夹
解压
rar
- 解压到当前目录
$ rar e FileName.rar
(其中'e':extract的e)
- 解压到指定目录:
$ rar x FileName.rar DirName/
(其中'x':extract的x) DirName后面一定要加'/',例如~/lalala
创建
$ rar a FileName.rar DirName
(注:DirName后加不加“/”都行
如果要指定目标文件路径,可以在FileName指定。如~/backup/sth.rar)
zip(unzip)
- 解压到当前目录:
$ unzip FileName.zip
- 解压到指定目录(-d)
$ unzip FileName.zip -d DirName
- 创建(-r)
$ zip FileName.zip -r DirName
.tar(-xvf)
- 解压到当前目录
$ tar -xvf FileName.tar
x: 解压文件(extract里的x)
v: 打印详细信息(verbose)
f: 指定文件名(file)
- 解压到指定目录(-C)
$ tar -xvf FileName.tar -C DirName
C: 解压到制定目录
凡是用tar命令解压,都可以使用这个选项来指定输出路径,如tar.gz和tar.xz
- 创建(-cvf.files)
$ tar -cvf FileName.tar files
其中files可以是文件夹名,也可以是表示文件的正则表达式(如*.jpg)
Pay attention:
c: 压缩(compress)上面的files不要使用绝对路径如/usr/share/fonts,甚至/backup也不行(因为”“会被翻译成/home/用户名)。tar加入文件时会把文件的相对位置也加进去,解压出来的文件都根据它们的相对位置放到解压到的目录。因此进行压缩时要cd到要压缩的文件或文件夹所在目录。
##.gz(gzip -d)
- 解压到当前目录
$ gzip -d FileName.gz
d: 解压(decompress)
会自动把原来的FileName.gz删除并生成解压后的文件。
$ gzip -dk FileName.gz
- 压缩到当前目录
$ gzip FileName
会自动把原文件删掉并创建FileName.gz。
gzip的常用选项:
k: 保留源文件(keep)
gzip其他常用选项
v: 打印详细信息(verbose)
.tar.gz(tar -zxvf、-zcvf)
.tar.gz就是对tar文件用gzip压缩得到的文件。所以解压可以先解压gz,再解压tar,压缩也可以先压缩成tar,再压缩成gz。
- 解压到当前目录
$ tar -zxvf FileName.tar.gz
z表示gz
- 解压到指定目录
$ tar -zxvf FileName.tar.gz -C path
- 创建
$ tar -zcvf FileName.tar.gz files
其中files可以是文件夹名,也可以是表示文件的正则表达式(如*.jpg)
.xz
xz格式压缩率极高,但是压缩和解压也极慢
- 单线程解压到当前目录
$ xz -d FileName.xz
会自动把源文件删除,然后生成文件FileName。可以用选项k保存源文件
$ xz -dk FileName.xz
k:keep
- 解压为指定文件名
$ xz -dc FileName.xz > FileName2
c: 把压缩文件输出到stdout。不删除源文件
- 单线程压缩到当前目录
$ xz -z FileName
c: 把压缩文件输出到stdout。不删除源文件
$ xz -zk FileName
- 多线程压缩
$ xz -zkT0 FileName
T: 使用多线程,后面跟线程数。如果参数是0,则表示使用[机器核心数]个线程。
这种方法只能压缩文件。多线程压缩目录的方法见.tar.xz