标签 归档 下的文章

linux中的tar命令

tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令。

其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩。

在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子。

使用tar命令

tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件。

tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可以创建非压缩归档文件。

1.解压一个tar.gz归档

一般常见的用法是用来解压归档文件,下面的命令将会把文件从一个tar.gz归档文件中解压出来。

$ tar -xvzf tarfile.tar.gz

这里对这些参数做一个简单解释-

x - 解压文件

v - 冗长模式,在解压每个文件时打印出文件的名称。

z - 该文件是一个使用 gzip 压缩的文件。

f - 使用接下来的tar归档来进行操作。

这些就是一些需要记住的重要选项。

解压 tar.bz2/bzip 归档文件

具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是需要通过使用“j”选项来替换“z”选项。

$ tar -xvjf archivefile.tar.bz2

2.将文件解压到一个指定的目录或路径

为了将文件解压到一个指定的目录中,使用“-C”选项来指定路径,此处的“C”是大写“C”。

$ tar -xvzf abc.tar.gz -C /opt/folder/

然后,首先需要确认目标目录是否存在,毕竟tar命令并不会为你创建目录,所以如果目标目录不存在的情况下该命令会失败。

3. 提取出单个文件

为了从一个归档文件中提取出单个文件,只需要将文件名按照以下方式将其放置在命令后面。

$ tar -xz -f abc.tar.gz "./new/abc.txt"

在上述命令中,可以按照以下方式来指定多个文件。

$ tar -xz -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"

4.使用通配符来解压多个文件

通配符可以用来解压于给定通配符匹配的一批文件,例如所有以".txt"作为扩展名的文件。

$ tar -xz -f abc.tar.gz --wildcards "*.txt"

5. 列出并检索tar归档文件中的内容

如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”(test)选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。

$ tar -tz -f abc.tar.gz
./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/abc.txt
...

可以将输出通过管道定向到grep来搜索一个文件,或者定向到less命令来浏览内容列表。 使用"v"冗长选项将会打印出每个文件的额外详细信息。

对于 tar.bz2/bzip文件,需要使用"j"选项。

结合上述的命令和grep命令来检索归档文件,如下所示。简单吧!

$ tar -tvz -f abc.tar.gz | grep abc.txt
-rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt

6.创建一个tar/tar.gz归档文件

现在我们已经学过了如何解压一个tar归档文件,是时候开始创建一个新的tar归档文件了。tar命令可以用来将所选的文件或整个目录放入到一个归档文件中,以下是相应的样例。

下面的命令使用一个目录来创建一个tar归档文件,它会将该目录中所有的文件和子目录都加入到归档文件中。

$ tar -cvf abc.tar ./new/
./new/
./new/cde.txt
./new/abc.txt

上述命令不会创建一个压缩的的归档文件,只是一个普通的归档文件,只是将多个文件放入到一个归档文件中并没有真正地压缩每个文件。

为了使用压缩,可以分别使用“z”或“j”选项进行gzip或bzip压缩算法。

$ tar -cvzf abc.tar.gz ./new/
文件的扩展名其实并不真正有什么影响。“tar.gz” 和“tgz”是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名(LCTT 译注:归档是否是压缩的和采用哪种压缩方式并不取决于其扩展名,扩展名只是为了便于辨识。)。

7. 在添加文件之前进行确认

一个有用的选项是“w”,该选项使得tar命令在添加每个文件到归档文件之前来让用户进行确认,有时候这会很有用。

使用该选项时,只有用户输入“y”时的文件才会被加入到归档文件中,如果你不输入任何东西,其默认表示是一个“n”。

# 添加指定文件

$ tar -czw -f abc.tar.gz ./new/*
add ‘./new/abc.txt’?y
add ‘./new/cde.txt’?y
add ‘./new/newfile.txt’?n
add ‘./new/subdir’?y
add ‘./new/subdir/in.txt’?n

#现在列出所有被加入的文件

$ tar -t -f abc.tar.gz 
./new/abc.txt
./new/cde.txt
./new/subdir/

8. 加入文件到存在的归档文件中

“r”选项可以被用来将文件加入到已存在的归档文件中,而不用创建一个新的归档文件,下面是一个简单的样例:

$ tar -rv -f abc.tar abc.txt
文件并不能加入到已压缩的归档文件中(gz 或 bzip)。文件只能被加入到普通的归档文件中。

9. 将文件加入到压缩的归档文件中(tar.gz/tar.bz2)

之前已经提到了不可能将文件加入到已压缩的归档文件中,然而依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。

$ gunzip archive.tar.gz
$ tar -rf archive.tar ./path/to/file
$ gzip archive.tar

对于bzip文件分别使用bzip2和bunzip2。

10.通过tar来进行备份

一个真实的场景是在固定的时间间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 :

$ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/

使用cron来运行上述的命令会保持创建类似以下名称的备份文件 :'archive-20150218.tar.gz'。

当然,需要确保日益增长的归档文件不会导致磁盘空间的溢出。

11. 在创建归档文件时进行验证

"W"选项可以用来在创建归档文件之后进行验证,以下是一个简单例子。

$ tar -cvW -f abc.tar ./new/
./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/newfile.txt
./new/abc.txt
Verify ./new/
Verify ./new/cde.txt
Verify ./new/subdir/
Verify ./new/subdir/in.txt
Verify ./new/newfile.txt                                                                                                                              
Verify ./new/abc.txt

需要注意的是验证动作不能在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。

这次就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。


via: http://www.binarytides.com/linux-tar-command/

作者:Silver Moon 译者:theo-l 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

很多时候,通过互联网发送或接收大文件和图片是一件令人头疼的事。压缩及解压缩工具正好可以应对这个问题。下面让我们快速浏览一些可以使得我们的工作更加轻松的开源工具。

Tar

Tar 由 'Tape archiver(磁带归档器)' 衍生而来,最初被用来在磁带上归档和存储文件。Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已有的归档文件进行相关操作。在存储、备份以及传输文件方面,它是很有用的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。

基本用法如下:

a) 创建归档 (c / --create)

tar --create --verbose --file=archive.tar file1 file2 file3

tar cvf archive.tar file1 file2 file3

tar cvf

创建一个归档

b) 列出归档文件内容 ( t / --list)

tar --list archive.tar

tar tvf

列出归档中包含的文件

c) 提取归档 (x / --extract)

tar xvf archive.tar

tar xvf archive.tar --wildcards '*.c'    
-  从归档中提取后缀名为 *.c 的文件。

tar xvf

提取文件

tar xvf --wildcards

只提取需要的文件

d) 对归档文件进行更新 ( u / --update)

tar uvf archive.tar newfile.c     
-  假如归档的newfile.c  要比先前已经归档的新,则添加更新的 newfile.c 到归档里面.

tar uvf

更新一个归档

e) 从归档中删除文件 (--delete)

tar --delete -f archive.tar file1.c   
- 从压缩包'archive.tar' 中删除文件'file1.c' 

tar --delete

删除文件

更加具体的使用方法请参考tar 主页

Gzip / Gunzip

Gzip 即 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为'*.gz' 。

基本用法如下:

a) 压缩文件

gzip file(s)

每个文件将被单独压缩

gzip

压缩文件

通常在压缩完成后,它会将原来的文件删除。我们可以使用 -c 选项来保留原来的文件。

gzip -c file > file.gz

gzip-c

压缩后保留原有文件

我们也可以将一组文件压缩到一个单独的文件中

cat file1 file2 file3 | gzip > archieve.gz

gz group

压缩一组文件

b) 检查压缩比

被压缩文件的压缩比可以使用 ‘-l’ 选项来进行检验。

gzip -l archieve.gz

gzip -l

检查压缩率

c) 解压文件

Gunzip 用来解压文件,在这里,原有的(压缩)文件在被解压后同样会被删除。使用 -c选项来保留原始文件。

gunzip -c archieve.gz

gunzip -c

解压文件

gzip 加上'-d'选项 和 gunzip 对压缩文件有同样的效果。

更多细节可以从 gzip 主页 得到。

Bzip2 / Bunzip2

同 gzip 一样,Bzip2 也是一个压缩工具,与其他传统的工具相比,它可以将文件压缩到更小,但其缺点为:运行速度比 gzip 慢。

基本用法如下:

a) 压缩文件

一般情况下,针对压缩而言,Bzip2 不用什么选项,将被压缩的文件被传递为它的参数。每个文件被单独压缩,且压缩文件以 'bz2' 为后缀名。

bzip2 file1 file2 file3

bzip2

文件压缩

使用 '-k' 选项可以使得在压缩或解压缩之后保留原有的文件。

bzip2 -k

在压缩后保留原有文件

b) 解压

'-d' 选项被用来解压缩。

bzip2 -d

使用 -d 选项解压缩文件

也可以使用 bunzip2 来解压缩。

bunzip2 filename

bunzip2

解压文件

bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 和 tbz 的文件在压缩后,后缀名将变为'.tar' 。

bzip2 -dc   
-   执行解压文件到标准输出的功能。

7-zip

7-zip 是另一个开源压缩软件。它使用 7z 这种新的压缩格式,并支持高压缩比。因此,它被认为是比先前提及的压缩工具更好的软件。在 Linux 下,可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件: 7z, 7za 和 7zr,读者可以参考 p7zip wiki 来了解这三个二进制文件之间的不同。在本篇中,我们将使用 7zr 来解释 7-zip 的用法。归档文件以 '.7z' 为后缀名。

基本用法如下:

a) 创建归档

7zr a archive-name.7z file-name(s) / directory-name(s)

7zr a

创建一个归档文件

b) 列出归档包含文件

7zr l archive-name.7z

7zr l

列出归档中包含的文件

c) 提取归档文件

7zr e archive-name.7z

7zr e

提取归档

d) 更新归档文件

7zr u archive-name.7z new-file

7zr u

更新一个归档文件

e) 从归档文件中删除文件

7zr d archive-name.7z file-to-be-deleted

7zr d

删除文件

7zr l

确认文件删除


via: http://linoxide.com/tools/linux-compress-decompress-tools/

作者:B N Poornima 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出