Linux tar 命令是归档或分发文件时的强大武器。GNU tar 归档包可以包含多个文件和目录,还能保留其文件权限,它还支持多种压缩格式。Tar 表示 "Tape Archiver",这种格式是 POSIX 标准。
Tar 文件格式tar 压缩等级简介:
常见的格式是 tar.gz 和 tar.bz2。如果你想快速压缩,那么就是用 gzip。如果归档文件大小比较重要,就是用 tar.bz2。
tar 命令用来干什么?下面是一些使用 tar 命令的常见情形。
备份服务器或桌面系统
文档归档
软件分发
安装 tar大部分 Linux 系统默认都安装了 tar。如果没有,这里有安装 tar 的命令。
CentOS在 CentOS 中,以 root 用户在 shell 中执行下面的命令安装 tar。
yum install tar
Ubuntu下面的命令会在 Ubuntu 上安装 tar。“sudo” 命令确保 apt 命令是以 root 权限运行的。
sudoapt-get install tar
Debian下面的 apt 命令在 Debian 上安装 tar。
apt-get install tar
Windowstar 命令在 Windows 也可以使用,你可以从 Gunwin 项目中下载它。
创建 tar.gz 文件下面是在 shell 中运行 tar 命令 的一些例子。下面我会解释这些命令行选项。
tar pczf myarchive.tar.gz /home/till/mydocuments
这个命令会创建归档文件 myarchive.tar.gz,其中包括了路径 /home/till/mydocuments 中的文件和目录。命令行选项解释:
[p] 这个选项表示 “preserve”,它指示 tar 在归档文件中保留文件属主和权限信息。
[c] 表示创建。要创建文件时不能缺少这个选项。
[z] z 选项启用 gzip 压缩。
[f] file 选项告诉 tar 创建一个归档文件。如果没有这个选项 tar 会把输出发送到标准输出( LCTT 译注:如果没有指定,标准输出默认是屏幕,显然你不会想在屏幕上显示一堆乱码,通常你可以用管道符号送到其它程序去)。
Tar 命令示例示例 1: 备份 /etc 目录
创建 /etc 配置目录的一个备份。备份保存在 root 目录。
tar pczvf /root/etc.tar.gz /etc
用 tar 备份 /etc 目录
要以 root 用户运行命令确保 /etc 中的所有文件都会被包含在备份中。这次,我在命令中添加了 [v] 选项。这个选项表示 verbose,它告诉 tar 显示所有被包含到归档文件中的文件名。
示例 2: 备份你的 /home 目录
创建你的 home 目录的备份。备份会被保存到 /backup 目录。
tar czf /backup/myuser.tar.gz /home/myuser
用你的用户名替换 myuser。这个命令中,我省略了 [p] 选项,也就不会保存权限。
示例 3: 基于文件的 MySQL 数据库备份
在大部分 Linux 发行版中,MySQL 数据库保存在 /var/lib/mysql。你可以使用下面的命令来查看:
ls/var/lib/mysql
使用 tar 基于文件备份 MySQL
用 tar 备份 MySQL 数据文件时为了保持数据一致性,首先停用数据库服务器。备份会被写到 /backup 目录。
1) 创建 backup 目录
mkdir/backup
chmod600/backup
2) 停止 MySQL,用 tar 进行备份并重新启动数据库。
service mysql stop
tar pczf /backup/mysql.tar.gz /var/lib/mysql
service mysql start
ls-lah /backup
基于文件的 MySQL 备份
提取 tar.gz 文件提取 tar.gz 文件的命令是:
tar xzf myarchive.tar.gz
tar 命令选项解释[x] x 表示提取,提取 tar 文件时这个命令不可缺少。
[z] z 选项告诉 tar 要解压的归档文件是 gzip 格式。
[f] 该选项告诉 tar 从一个文件中读取归档内容,本例中是 myarchive.tar.gz。
上面的 tar 命令会安静地提取 tar.gz 文件,除非有错误信息。如果你想要看提取了哪些文件,那么添加 “v” 选项。
tar xzvf myarchive.tar.gz
[v] 选项表示 verbose,它会向你显示解压的文件名。
提取 tar.gz 文件