Linux一一第八章、文件与文件系统的压缩,打包与备份

8.2 Linux系统常见的压缩指令

列出几个常见的压缩文件扩展名:

Linux一一第八章、文件与文件系统的压缩,打包与备份

8.2.1 gzip,zcat/zmore/zless/zgrep

Linux一一第八章、文件与文件系统的压缩,打包与备份

gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的文件名,原始文件就不再存在了。 这点与一般习惯使用windows 做压缩的朋友所熟悉的情况不同喔!要注意!要注意! 此外,使用 gzip 压缩的文件在 Windows 系统中,竟然可以被 WinRAR/7zip 这个软件解压缩呢!

Linux一一第八章、文件与文件系统的压缩,打包与备份

  • &lt; stands for the less-than sign ( < )
  • &gt; stands for the greater-than sign ( > )
  • &le; stands for the less-than or equals sign ( ≤ )
  • &ge; stands for the greater-than or equals sign ( ≥ )

范例四的重点在那个 -c 与> 的使用啰!-c 可以将原本要转成压缩文件的数据内容,将它变成文字类型从屏幕输出, 然后我们可以通过大于 (>) 这个符号,将原本应该由屏幕输出的数据,转成输出到文件而不是屏幕,所以就能够创建出压缩挡了。只是文件名也要自己写, 当然最好还是遵循 gzip 的压缩文件名要求较佳喔!!


8.2.2 bzip2, bzcat/bzmore/bzless/bzgrep

若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代gzip 并提供更佳的压缩比而来的。
Linux一一第八章、文件与文件系统的压缩,打包与备份

可以发现到 bzip2 的压缩率确实比 gzip 要好些!不过,对于大容量文件来说,bzip2 压缩时间会花比较久喔!


8.2.3 xz, xzcat/xzmore/xzless/xzgrep

xz 这个压缩比更高的软件!这个软件的用法也跟 gzip/bzip2 几乎一模一样
Linux一一第八章、文件与文件系统的压缩,打包与备份

8.3 打包指令: tar

上述指令通常仅能针对一个文件来压缩与解压缩,tar 可以将多个目录或文件打包成一个大文件,同时还可以通过 gzip/bzip2/xz 的支持,将该文件同时进行压缩!


8.3.1 tar

Linux一一第八章、文件与文件系统的压缩,打包与备份
其实最简单的使用 tar 就只要记忆下面的方式即可:
       压 缩:tar -j<u>c</u>v -f filename.tar.bz2 要被压缩的文件或目录名称
       查 询:tar -j<u>t</u>v -f filename.tar.bz2
       解压缩:tar -j<u>x</u>v -f filename.tar.bz2 -C 欲解压缩的目录
测试用例:使用tar加入-z,-j或-J的参数备份/etc/目录

Linux一一第八章、文件与文件系统的压缩,打包与备份

加上“ -p ”这个选项的原因是为了保存原本文件的权限与属性!


查阅 tar 文件的数据内容 (可察看文件名) ,与备份文件名有否根目录的意义
Linux一一第八章、文件与文件系统的压缩,打包与备份

加上 -v 这个选项时,详细的文件权限/属性都会被列出来!如果只是想要知道文件名而已, 那么就将 -v 拿掉即可。

如果你确定你就是需要备份根目录到 tar 的文件中,那可以使用 -P (大写) 这个选项,请看下面的例子分析:

Linux一一第八章、文件与文件系统的压缩,打包与备份

如果加上 -P 选项,那么文件名内的根目录就会存在喔!不过建议,还是不要加上 -P 这个选项来备份!


将备份的数据解压缩,并考虑特定目录的解压缩动作 (-C 选项的应用)
Linux一一第八章、文件与文件系统的压缩,打包与备份

此时该打包文件会在“本目录下进行解压缩”的动作! 所以,你等一下就会在主文件夹下面发现一个名为 etc 的目录啰!
如果你想要将该文件在 /tmp 下面解开,可以使用 -C 这个选项
Linux一一第八章、文件与文件系统的压缩,打包与备份

仅解开单一文件的方法
如果我只想要解开打包文件内的其中一个文件而已,只要使用 -jtv 找到你要的文件名,然后将该文件名解开即可
Linux一一第八章、文件与文件系统的压缩,打包与备份

上述&#124代表|符号,参见:https://www.w3.org/MarkUp/html-spec/html-spec_13.html

打包某目录,但不含该目录下的某些文件之作法
假设我们想要打包 /etc/ /root 这几个重要的目录,但却不想要打包 /root/etc* 开头的文件
Linux一一第八章、文件与文件系统的压缩,打包与备份

上面的指令是一整列的~其实你可以打成:“tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root”,如果想要两行输入时,最后面加上反斜线 (\) 并立刻按下 [enter] , 就能够到第二行继续输入了。


仅备份比某个时刻还要新的文件
某些情况下你会想要备份新的文件而已,并不想要备份旧文件!此时 --newer-mtime 这个选项就粉重要啦! 其实有两个选项啦,一个是“ --newer ”另一个就是“ --newer-mtime ”
当使用newer 时,表示后续的日期包含“ mtime 与 ctime ”,而 --newer-mtime 则仅是 mtime 而已
Linux一一第八章、文件与文件系统的压缩,打包与备份

基本名称: tarfile, tarball ?
如果仅是打包而已,就是“ tar -cv -f file.tar ”而已,这个文件我们称呼为 tarfile
如果还有进行压缩的支持,例如“ tar -jcv -f file.tar.bz2 ”时,我们就称呼为 tarball


特殊应用:利用管线命令与数据流
在 tar 的使用中,有一种方式最特殊,那就是通过标准输入输出的数据流重导向(standardinput/standard output) , 以及管线命令 (pipe) 的方式,将待处理的文件一边打包一边解压缩到目标目录去。
Linux一一第八章、文件与文件系统的压缩,打包与备份

8.4 XFS 文件系统的备份与还原

8.4.1 XFS 文件系统备份 xfsdump

Linux一一第八章、文件与文件系统的压缩,打包与备份