Linux运维中,对于压缩常用的命令主要有tar、gzip/gunzip和bzip2和bunzip2,而使用最多的就是tar指令,tar指令参数非常多,功能也很强大,但使用最频繁的参数只有几个,也就是只需要记住这几个参数就能轻松玩转tar命令了。
tar是Linux下经常使用的归档工具,可以对文件或者目录进行打包归档,归成一个文件,但是并不进行压缩。其格式如下:
tar [主选项 + 辅助选项] 文件或者目录
tar 命令主选项含义
主选项 | 含 义 |
---|---|
-c (--create) | 创建新的文件 |
-r (--append) | 把要归档的文件追加到档案文件的末尾 |
-t (--list) | 列出档案文件中已经归档的文件列表 |
-x (--extract) | 从打包的档案文件中还原出文件 |
-u (--update) | 更新档案文件,用新的文件替换档案中的原始文件 |
tar 命令辅助选项含义
辅助选项 | 含 义 |
---|---|
-z | 调用 gzip 命令在文件打包的过程中压缩/解压文件 |
-w | 在还原文件时,把所有文件的修改时间设定为现在时间 |
-j | 调用 bzip2 命令在文件打包的过程中压缩/解压文件 |
-Z | 调用compress命令过滤档案 |
-f | -f 选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在 -f 选项之后不能再跟任何其他选项,也就是说 -f 必须是 tar 命令的最后一个选项 |
-v | 指定在创建归档文件过程中,显示各个归档文件的名称 |
-p | 在文件归档的过程中,保持文件的属性不发生变化 |
-N "yyyy/mm/dd" | 在指定日期之后的文件才会被打包到档案文件中 |
--exclude file | 在打包过程中,不将指定 file 文件打包 |
下面看几个 tar 命令使用的例子
将 /etc 目录下的所有文件打包,并显示打包的详细文件,设置打包文件名未 etc.tar ,同时保存文件到 /opt 目录下
tar -cvf /opt/etc.tar /etc
这里的档案名为 etc.tar , 档案名可以随意起,Linux上利用 tar 命令打包出来的档案文件一般用 .tar 作为标识。
将 /etc 目录下的所有文件打包并压缩,然后显示打包的详细文件,设置打包文件名为 etc.tar.gz,同时保存文件到 /opt 目录下。
- tar -zxvf /opt/etc.tar.gz /etc
-
- tar -jcvf /opt/etc.tar.bz2 /etc
zcvf 选项表示在打包完成后调用 gzip 命令对档案文件进行压缩,这里的档案名 etc.tar.gz 也可以随意起, .tar 表示是用 tar 命令打包的, .gz 表示调用了 gzip 命令进行了压缩。同理,jcvf 选项表示在打包完成后调用 bzip2 命令对档案文件进行压缩,档案命名标识中 .bz2 表示调用了 bzip2 命令进行了压缩处理。
查阅上面 /opt/etc.tar.gz 压缩包的内容
- tar -ztvf /opt/etc.tar.gz
-
- tar -jvvf /opt/etc.tar.bz2
将 /opt/etc.tar.gz 解压到 /ust/local/src 下
- cd /usr/local/src
-
- tar -zxvf /opt/etc.tar.gz
将 /etc 目录下的所有文件打包备份到 /opt 目录下,并保存每个文件的权限。
- cd /opt
-
- tar -zcvpf /opt/etc.tar.gz /etc
在 /opt 目录下,仅解压 /opt/etc.tar.gz 压缩文件中的 /etc/inittab 文件夹
- cd /opt
-
- tar -zxvf /opt/etc.tar.gz etc/inittab
首先可以通过 tar -zxvf 查看 etc.tar.gz 文件中包含的文件然后找到需要解压的文件,通过上面的方式解压。后面指定的需要解压出来的文件一定要是通过 tar -ztvf 显示出来的文件完整路径。这样就在 /opt 目录下解压出了一个 etc 目录,而 etc 目录下的 inittab 就是需要的文件。
打包备份 /var/log 目录中 2019/7/21 以后的文件。
- tar -N "2019/7/21" -zcvf log.tar.gz /var/log
-
- pwd
-
- /opt/oracle
-
- ls
-
- log.tar.gz
打包备份 /home 目录和 /etc 目录,但是不备份 /home 下的 ixdba 目录。
tar -exclude /home/ixdba -zcvf myfile.tar.gz /home/* /etc
将 /etc 目录打包压缩后直接解压到 /opt