免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1015 | 回复: 0
打印 上一主题 下一主题

压缩档案:tarfile--tarball [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-27 09:30 |只看该作者 |倒序浏览
基本名称: tarfile, tarball
另外值得一提的是,tar 打包出来的档案有没有进行压缩所得到档案称呼不同喔! 如果仅是打包而已,就是‘ tar -cv -f file.tar ’而已,这个档案我们称呼为 tarfile 。 如果还有进行压缩的支援,例如‘ tar -jcv -f file.tar.bz2 ’时,我们就称呼为 tarball (tar 球?)! 这只是一个基本的称谓而已,不过很多书籍与网路都会使用到这个 tarball 的名称! 所以得要跟您介绍介绍。
此外,tar 除了可以将资料打包成为档案之外,还能够将档案打包到某些特别的装置去,举例来说, 磁带机 (tape) 就是一个常见的例子。磁带机由于是一次性读取/写入的装置,因此我们不能够使用类似 cp 等指令来复制的! 那如果想要将 /home, /root, /etc 备份到磁带机 (/dev/st0) 时,就可以使用:
‘tar -cv -f /dev/st0 /home /root /etc’,很简单容易吧! 磁带机用在备份 (尤其是企业应用) 是很常见的工作喔!
特殊应用:利用管线命令与资料流
在 tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的资料流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的档案一边打包一边解压缩到目标目录去。 关于资料流重导向与管线命令更详细的资料我们会在第十一章 bash 再跟大家介绍, 底下先来看一个例子吧!
# 1. 将 /etc 整个目录一边打包一边在 /tmp 解开
[root@www ~]#
cd /tmp
[root@www ~]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在于输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
# 简单的想法中,你可以将 - 想成是在记忆体中的一个装置(缓冲区)。
# 更详细的资料流与管线命令,请翻到 bash 章节啰!
例题:系统备份范例
系统上有非常多的重要目录需要进行备份,而且其实我们也不建议你将备份资料放置到 /root 目录下! 假设目前你已经知道重要的目录有底下这几个:
/etc/ (设定档)
/home/ (使用者的家目录)
/var/spool/mail/ (系统中,所有帐号的邮件信箱)
/var/spool/cron/ (所有帐号的工作排成设定档)
/root (系统管理员的家目录)
/home/loop* 不需要备份,而且 /root 底下的压缩档也不需要备份,另外假设你要将备份的资料放置到 /backups , 并且该目录仅有 root 有权限进入! 此外,每次备份的档名都希望不相同, 例如使用:backup-system-20091130.tar.bz2 之类的档名来处理。 那你该如何处理这个备份资料呢? (请先动手作看看,再来察看一下底下的参考解答!)
# 1. 先处理要放置备份资料的目录与权限:
[root@www ~]#
mkdir /backups
[root@www ~]# chmod 700 /backups
[root@www ~]# ll -d /backups
drwx------ 2 root root 4096 Nov 30 16:35 /backups
# 2. 假设今天是 2009/11/30 ,则建立备份的方式如下:
[root@www ~]#
tar -jcv -f /backups/backup-system-20091130.tar.bz2 \
> --exclude=/root/*.bz2 --exclude=/root/*.gz --exclude=/home/loop* \
> /etc /home /var/spool/mail /var/spool/cron /root

....(过程省略)....
[root@www ~]#
ll -h /backups/
-rw-r--r-- 1 root root 8.4M Nov 30 16:43 backup-system-20091130.tar.bz2
我的范例
[root@www ~]#
vi /etc/bashrc
.......
alias tgzmysql='tar zcvf /backup/mysql`date +%y-%m-%d`.tgz /var/lib/mysql'
.......
[root@www ~]#
tgzmysql
[root@www tmp]# ls -al /backup/mysql*
-rw-r--r-- 1 root root 2989684 Nov 10 17:14 /var/lib/mysql mysql2008-11-10.tgz

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108545/showart_2131861.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP