linux(7)

1.gzip – 压缩一个或多个文件

当执行 gzip 命令时,则原始文件的压缩版会替代原始文件。相对应的 gunzip 程序被用来把压缩文件复原为没有被压缩的版本。

$ ls -l /etc > foo.txt
$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2017-08-01 07:15 foo.txt
$ gzip foo.txt
$ ls -l foo.*
-rw-r--r-- 1 me me 3230 2017-08-01 07:15 foo.txt.gz
$ gunzip foo.txt.gz
$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2017-08-01 07:15 foo.txt

参数:

-c 把输出写入到标准输出,并且保留原始文件。也有可能用–stdout 和 –to-stdout 选项来指定。

-d 解压缩。正如 gunzip 命令一样。也可以用 –decompress 或者 –uncompress 选项来指定.

-f 强制压缩,即使原始文件的压缩文件已经存在了,也要执行。也可以用 –force 选项来指定。

-h 显示用法信息。也可用 –help 选项来指定。

-l 列出每个被压缩文件的压缩数据。也可用 –list 选项。

-r 若命令的一个或多个参数是目录,则递归地压缩目录中的文件。也可用 –recursive 选项来指定。

-t 测试压缩文件的完整性。也可用 –test 选项来指定。

-v 显示压缩过程中的信息。也可用 –verbose 选项来指定。

-number 设置压缩指数。number 是一个在 1(最快,最小压缩)到9(最慢,最大压缩)之间的整数。数值 1 和 9 也可以各自用 –fast 和 –best 选项来表示。默认值是整数 6。

注:
(1)对应于 gzip 还有一个程序,叫做 zcat,它等同于带有 -c 选项的 gunzip 命令。它可以被用来如 cat 命令作用于 gzip 压缩文件
(2)zless

$ zcat foo.txt.gz | less    //和zless 程序是相同的功能。

2.bzip2

与 gzip 程序相似,但是使用了不同的压缩算法,舍弃了压缩速度,而实现了更高的压缩级别

$ ls -l /etc > foo.txt
$ ls -l foo.txt
-rw-r--r-- 1 me me 15738 2017-08-01 13:51 foo.txt
$ bzip2 foo.txt
$ ls -l foo.txt.bz2
-rw-r--r-- 1 me me 2792 2017-08-01 13:51 foo.txt.bz2
$ bunzip2 foo.txt.bz2

3.tar – 归档文件

tar mode[options] pathname…

c 为文件和/或目录列表创建归档文件。

x 抽取归档文件。

r 追加具体的路径到归档文件的末尾。

t 列出归档文件的内容

//创建了一个名为 playground.tar 的 tar 包,其包含整个 playground 目录层次结果

$ tar cf playground.tar playground
//抽取 tar 包 playground 到一个新位置

$ mkdir foo
$ cd foo
$ tar xf ../playground.tar
//tar 命令经常结合 find 命令一起来制作归档文件

$ find playground -name 'file-A' -exec tar rf playground.tar'{}' '+'

使用 find 命令来匹配 playground 目录中所有名为 file-A 的文件,然后使用-exec行为,来唤醒带有追加模式(r)的 tar 命令,把匹配的文件添加到归档文件playground.tar 里面。

$ find playground -name 'file-A' | tar cf - --files-from=-| gzip > playground.tgz

使用 find 程序产生了一个匹配文件列表,然后把它们管道到 tar 命令中。如果指定了文件名“-”,则其被看作是标准输入或输出,这个 –file-from 选项导致 tar 命令从一个文件而不是命令行来读入它的路径名列表。最后,这个由 tar 命令产生的归档文件被管道到 gzip 命令中,然后创建了压缩归档文件 playground.tgz。此.tgz 扩展名是命名由 gzip 压缩的 tar 文件的常规扩展名。有时候也会使用.tar.gz 这个扩展名。

注:
“-”来表示标准输入/输出的惯例,也被大量的其它程序使用
–file-from 选项也可以用 -T 来指定

4.zip – 既是压缩工具,也是一个打包工具

//制作一个 playground 的 zip 版本的文件包

$ zip -r playground.zip playground
//使用 unzip 程序,来直接抽取一个 zip 文件的内容

$ cd foo
$ unzip ../playground.zip

注意:对于 zip 命令(与 tar 命令相反)要注意一点,就是如果指定了一个已经存在的文件包,其被更新而不是被替代。这意味着会保留此文件包,但是会添加新文件,同时替换匹配的文件。

//通过 -@ 选项,有可能把一系列的文件名管道到 zip 命令

$ cd
$ find playground -name "file-A" | zip -@ file-A.zip

使用 find 命令产生一系列与“file-A”相匹配的文件列表,并且把此列表管道到zip 命令,然后创建包含所选文件的文件包 file-A.zip

//把 ls 命令的输出管道到 zip 命令
$ ls -l /etc/ | zip ls-etc.zip -

5.同步文件和目录
rsync
rsync options source destination

这里 source 和 destination 是下列选项之一:

  • 一个本地文件或目录
  • 一个远端文件或目录,以 [user@]host:path 的形式存在
  • 一个远端 rsync 服务器,由 rsync://[user@]host[:port]/path 指定

rsync 不支持远端到远端的复制

// -a 选项(递归和保护文件属性)和 -v 选项(冗余输出),来在 foo 目录中制作一个 playground 目录的镜像。

$ rsync -av playground foo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章