运维日记012 - Linux下的tar命令
Tar是Linux下的“打包工具”。所谓“打包”,就是将多个目录或者文件打包成一个大文件。而且tar命令还可以通过调用gzip/bzip2等压缩命令将打包文件进行压缩。Tar的本意是TAp aRchive,即操作磁带文档,但基于共同的文件系统机制,tar同样也适用于普通磁盘文件。目前tar是Linux环境下最常用的备份工具之一。
Tar命令的常用参数
Tar的选项极多,但通常只需要记住几个常用的即可,这里列出我认为必要的:
三个基本动作
特别注意:-c、-t、-x三个参数不能同时出现
参数 | 说明 |
---|---|
-c | 新建打包文件 |
-t | 查看打包文件的内容含有哪些文件 |
-x | 解包 |
与压缩有关的参数
这几个参数配合-c或者-x参数使用,通过调用相关的压缩命令对打包文件进行压缩或者解压。
参数 | 说明 |
---|---|
-z | 调用gzip进行压缩或解压 |
-j | 调用bzip2进行压缩或解压 |
-J | 调用xz进行压缩或解压 |
如果用gzip压缩,则生成的目标文件名最好按照习惯将后缀名命名为.gz;如果是bzip2压缩,最好是.bz2;而xz压缩,则最好是.xz。
其他参数
参数 | 说明 |
---|---|
-v | 显示详细信息,verbose |
-f filename | -f后面指定文件名 |
-C | 指定解包的目录,如不指定将在当前目录解包 |
-P | (大写)保留文件的权限与属性 |
-p | (小写)保留绝对路径 |
–exclude=FILE | 在备份过程中,不要将FILE打包 |
Tar命令的使用
Tar命令的使用非常简单,只要记住以下三种方式即可:
- 打包压缩
$ tar -czvf filename.tar.gz file_or_dir_name
该命名将文件或目录file_or_dir_name打包并用gzip压缩为filename.tar.gz。你也可以使用-j或者-J参数调用bzip2或者xz压缩,对应的参数组合为-cjvf
和-cJvf
。有的人喜欢把-f参数单独写,也不失为一种好的习惯,如:
$ tar -czv -f filename.tar.gz file_or_dir_name
当然你喜欢第一种写法也没错,只是要记住,-f后面必须紧跟要处理的文件名,而前面三个参数的顺序随意可变。
- 查询
$ tar -xzv -f filename.tar.gz
该命令查询filename.tar.gz这个打包压缩文件里面包含了哪些文件和目录。
- 解压解包
$ tar -xzv -f filename.tar.gz -C dir_name
该命令将打包压缩文件filename.tar.gz解压解包到指定目录dir_name中。如果不跟-C参数的话,就会解到当前目录中。
实战举例
案例:写一个脚本,每天会自动备份一次/etc目录下的所有文件,将备份文件存放在/tmp目录下,并且文件名自动命名为etc-备份日期.tar.gz,如2016年9月15日备份的文件名为etc-2016-09-15.tar.gz。
1、写shell脚本
# vim ~/backup.sh
#! /bin/bash
tar czvf /tmp/etc-`date +%F.tar.gz /etc`
2、添加定时器任务
# crontab -e
自动打开vim,在其中编辑定时器任务,设置每日凌晨2点0分执行备份操作。
# crontab -l
0 2 * * * /root/backup.sh
设置完毕!