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 我的备份脚本
- #!/bin/sh
-
- # 实现功能:对/home 进行备份
-
- # 保存备份的目录,如果不存在就创建
- backupdir="/media/e/backup"
-
- if [ ! -d $backupdir ];then
- mkdir -p $backupdir
- fi
-
- # 获得当前的日期,从而得到备份目录的完整路径
- today=`date %y-%m-%d_%h_%m_%s`
- fpath=$backupdir/$today
- # 如果不存在就创建
- if [ ! -d $fpath ];then
- mkdir -p $fpath
- fi
-
- # 删除7天以前的归档文件
- find $backupdir -type f -mtime 7 -print -exec rm -rf {} ;
-
- # 重要文件复制,复制可以保留权限
- fl=`cat ~/backup/file`
- for i in $fl ;do
- cp -rpv $i $fpath
- done
-
- # 备份脚本和文件
- cp -rpv $0 $fpath
- cp -rpv file $fpath
-
- # 将备份的东西进行打包
- cd $backupdir
-
- tar cvzf $today.tar.gz $today
- rm -rf $today
- cd -
-
- exit 0
阅读(3736) | 评论(0) | 转发(0) |