shell归档与备份

将会介绍以下命令:

  • gzip – 压缩或者展开文件

  • bzip2 – 块排序文件压缩器

归档程序:

  • tar – 磁带打包工具

  • zip – 打包和压缩文件

还有文件同步程序:

  • rsync – 同步远端文件和目录

压缩文件

[hjw@localhost ~]$ less hjw.txt
[hjw@localhost ~]$ ls -l hjw.txt
-rw-rw-r--. 1 hjw hjw 1054 9月  25 19:45 hjw.txt
[hjw@localhost ~]$ gzip hjw.txt
[hjw@localhost ~]$ ls
bin  bin.txt  hello.txt  hjw2.txt  hjw_error.txt  hjw.txt.gz  ls.txt  redis-3.2.9
[hjw@localhost ~]$ ls -l hjw.txt*
-rw-rw-r--. 1 hjw hjw 349 9月  25 19:45 hjw.txt.gz
[hjw@localhost ~]$ gunzip hjw.txt.gz 
[hjw@localhost ~]$ ls
bin  bin.txt  hello.txt  hjw2.txt  hjw_error.txt  hjw.txt  ls.txt  redis-3.2.9
[hjw@localhost ~]$ less hjw.txt 
[hjw@localhost ~]$ ls -l hjw.txt 
-rw-rw-r--. 1 hjw hjw 1054 9月  25 19:45 hjw.txt

hjw.txt文件中是一些目录列表,我们可以看到刚开始它的大小为1054,压缩后原文件被压缩文件替换了,大小也变小了。再解压原文件替换压缩文件,大小恢复原来的大小,文件内容不会变。并且他们的权限与时间戳也不会变化。

gzip

还有一些可选参数:

-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。

可以与管道配合来使用

[hjw@localhost ~]$ ls -l | gzip > hjw.txt.gz

这里将ls的标准输出内容压缩到了hjw.txt.gz文件中
如果我们只想查看压缩文件的内容而不想解压它可以使用命令:

[hjw@localhost ~]$ gunzip -c hjw.txt.gz | less
或者是
[hjw@localhost ~]$ zcat hjw.txt.gz  | less

归档文件

tar

我们经常看到扩展名为 .tar 或者 .tgz 的文件,它们各自表示“普通” 的 tar 包和被 gzip 程序压缩过的 tar 包。一个 tar 包可以由一组独立的文件,一个或者多个目录,或者 两者混合体组成。
语法:

    tar mode[options] pathname...
    mode是它的模式,首先需要指定模式再加选项

模式

c   为文件和/或目录列表创建归档文件。
x   抽取归档文件。
r   追加具体的路径到归档文件的末尾。
t   列出归档文件的内容。

选项

-A或–catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或–create:建立新的备份文件;
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或–extract或–get:从备份文件中还原文件;
-t或–list:列出备份文件的内容;
-z或–gzip或–ungzip:通过gzip指令处理备份文件;
-Z或–compress或–uncompress:通过compress指令处理备份文件;
-f备份文件或–file=备份文件:指定备份文件;
-v或–verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或–same-permissions:用原来的文件权限还原文件;
-P或–absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N 日期格式 或 –newer=日期时间:只将较指定日期更新的文件保存到备份文件里;
–exclude=范本样式:排除符合范本样式的文件。

解压缩

tar -xvf /tmp/mdm_installer/apache-tomcat-9.0.0.M26.tar.gz -C /usr/local/

打包与压缩

仅打包,不压缩
[hjw@localhost ~]$ tar -cvf hjw.tar hjw2.txt hjw_error.txt  

打包后,以gzip压缩
[hjw@localhost ~]$ tar -zcvf hjw.tar.gz hjw2.txt hjw_error.txt  

查看打包压缩的内容
[hjw@localhost ~]$ tar -ztvf hjw.tar.gz  

从打包压缩的文件中解压单个文件出来
[hjw@localhost ~]$ tar -zxvf hjw.tar.gz hjw2.txt   

同步文件和目录

rsync 程序能同步本地与远端的目录,通过使用 rsync 远端更新协议,此协议 允许 rsync 快速地检测两个目录的差异,执行最小量的复制来达到目录间的同步。比起其它种类的复制程序, 这就使 rsync 命令非常快速和高效。
语法:

rsync 选项 源 目标

其中源 与 目标是为下列三种选项之一:

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

你可能感兴趣的:(Linux)