将多个文件或目录包成一个大文件的命令功能,我们可以称呼他是一种『打包命令』啦! 那 Linux 有没有这种打包命令呢?是有的!那就是鼎鼎大名的 tar 这个玩意儿了! tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩! 更有趣的是,由於 tar 的使用太广泛了,目前 Windows 的 WinRAR 也支持 .tar.gz 档名的解压缩呢! 很不错吧!所以底下我们就来玩一玩这个咚咚!
tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询罗!
[root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩[root@www ~]# tar [-j|-z] [tv] [-f 创建的档名] <==察看档名[root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录] <==解压缩选项与参数: |
其实最简单的使用 tar 就只要记忆底下的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
仅备份比某个时刻还要新的文件
某些情况下你会想要备份新的文件而已,并不想要备份旧文件!此时 --newer-mtime 这个选项就粉重要啦! 其实有两个选项啦,一个是『 --newer 』另一个就是『 --newer-mtime 』,这两个选项有何不同呢? 我们在 第七章的 touch 介绍中谈到过三种不同的时间参数, 当使用 --newer 时,表示后续的日期包含『 mtime 与 ctime 』,而 --newer-mtime 则仅是 mtime 而已! 这样知道了吧! ^_^ 。那就让我们来尝试处理一下罗!
# 2. 好了,那么使用 tar 来进行打包吧!日期为上面看到的 2008/09/29
[root@www ~]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 \
> --newer-mtime="2008/09/29" /etc/*
....(中间省略)....
/etc/smartd.conf <==真的有备份的文件
....(中间省略)....
/etc/yum.repos.d/ <==目录都会被记录下来!
tar: /etc/yum.repos.d/CentOS-Base.repo: file is unchanged; not dumped
# 最后行显示的是『没有被备份的』,亦即 not dumped 的意思!
tar 打包出来的文件有没有进行压缩所得到文件称呼不同喔! 如果仅是打包而已,就是『 tar -cv -f file.tar 』而已,这个文件我们称呼为 tarfile 。 如果还有进行压缩的支持,例如『 tar -jcv -f file.tar.bz2 』时,我们就称呼为 tarball (tar 球?)! 这只是一个基本的称谓而已,不过很多书籍与网络都会使用到这个 tarball 的名称!