Chinaunix首页 | 论坛 | 博客
  • 博客访问: 901541
  • 博文数量: 113
  • 博客积分: 3160
  • 博客等级: 少校
  • 技术积分: 1801
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-19 10:09
文章分类

全部博文(113)

分类: Python/Ruby

2012-08-24 21:26:34


1 tar命令详解 

1.1 tar命令的完整格式: 

tar [options]
其中:
 - operation:用于指定tar要进行的操作
 - options:用于指定一系列的选项
 - files\_to\_backup\_or\_restore:给出要备份的文件或者目录名,指定目录时包
   括下面所有的文件。

1.2 tar命令的操作选项 

A         连接多个归档文件为一个归档文件。                     
c         用于创建一个新的存档文件。                           
x         从归档文件中恢复备份文件。
t         用于列出一个存档文件中的文件名。                     
u        
  仅仅添加比存档文件中更新的文件。即,用新增的文件取代原备份文件,如果在归档文件中找不到要更新的文件,则把它追加到备份文件的最后                         
d         将归档文件的内容与文件系统上的当前文件作比较。       
r         将文件追加到指定的归档文件中。                       
--delete   从归档文件中删除指定指定的文件                       

1.3 tar命令的常用选项 
 
-f name       使用name指定存档文件名或设备名。                    
-v            列出处理的详细信息。                            
-z            用GNU的gzip压缩文件或解压。                   
-j            用GNU的bzip2压缩文件或解压。                  
-C  directory 将当前目录切换到 directory。          
-M            创建/列出/恢复多卷存档文件,以便在几个备份介质中存放         
-N   DATE     指定仅对那些比DATE新的文件进行操作。        
-p            表示希望保留文件许可权限。                      
-P            保留文件的绝对路径,即不去掉/。                 
-w            要求等待用户确认每一个操作。                    
-W            表示在写入备份内容到备份设备以后再读出来进行验证以提高可靠性 
-T   filename 从指定的文件中读需要备份或恢复的文件名              
-X   filename 不处理给定文件中列出的文件。                        
--exclude=PATTERN   不处理指定的文件。                                           

1.4 使用tar备份 

仅仅打包,不压缩:
tar -cvf /tmp/home.tar /home

结合gzip打包并压缩,一般后缀名为.tar.gz:
tar -zcvf /tmp/home.tar.gz /home 

结合bzip2打包并压缩,一般后缀名为.tar.bz2:
tar -jcvf /tmp/home.tar.bz2 /home 
  

1.5 查阅压缩文件内容 

由于使用gzip压缩,查看的时候必须加上z参数;如果是bzip2压缩文件,加上j参数:
tar -ztvf /tmp/home.tar.gz

1.6 解压缩 

x选项用来解压缩
tar -zxvf /home /tmp/home.tar.gz

1.7 仅仅解压缩某一个文件 

解压缩home下hic目录,注意home.tar.gz 内的根目录 /没有了
tar -zxvf /tmp/home.tar.gz home/hic

1.8 备份时保存权限 

p选项可以在备份时保存文件的权限:
tar -zxvpf /tmp/etc.tar.gz /etc

1.9 仅备份比指定日期新的文件 

tar -N '2005/06/01' -zcvf home.tar.gz /home

1.10 剔除无需备份的文件或目录 

tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 

1.11 将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件 

cd /tmp
tar -cvf – /etc | tar -xvf –

1.12 批量备份 

我们可以将要备份的目录和文件放到一个文件中,由tar读取备份:
# cat whatsbackup.txt
/home
/etc
/usr/local
/root
# tar -zcvpf /backups/full-backup.tar.gz -T whatsbackup.txt

-T 参数后指定的文件中,不能使用文件通配符

2 我的备份脚本 

点击(此处)折叠或打开

  1. #!/bin/sh
  2.   
  3.   # 实现功能:对/home 进行备份
  4.   
  5.   # 保存备份的目录,如果不存在就创建
  6.   backupdir="/media/E/backup"
  7.   
  8.   if [ ! -d $backupdir ];then
  9.       mkdir -p $backupdir
  10.   fi
  11.   
  12.   # 获得当前的日期,从而得到备份目录的完整路径
  13.   today=`date +%Y-%m-%d_%H_%M_%S`
  14.   fpath=$backupdir/$today
  15.   # 如果不存在就创建
  16.   if [ ! -d $fpath ];then
  17.       mkdir -p $fpath
  18.   fi
  19.   
  20.   # 删除7天以前的归档文件
  21.   find $backupdir -type f -mtime +7 -print -exec rm -rf {} ;
  22.   
  23.   # 重要文件复制,复制可以保留权限
  24.   FL=`cat ~/backup/file`
  25.   for i in $FL ;do
  26.       cp -Rpv $i $fpath
  27.   done
  28.   
  29.   # 备份脚本和文件
  30.   cp -rpv $0 $fpath
  31.   cp -rpv file $fpath
  32.   
  33.   # 将备份的东西进行打包
  34.   cd $backupdir
  35.   
  36.   tar cvzf $today.tar.gz $today
  37.   rm -rf $today
  38.   cd -
  39.   
  40.   exit 0
 
 

阅读(3780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~