今晚想起来要备份自己的网站时想到了差异备份和增量备份。
以前只是把数据库导出然后再发送到自己的邮箱里。这倒是省了很多事。只不过网站就有点大了50多M 了呢。所以备份到邮箱有点吃力。
在搜索引擎(以前念引xing,知道读音不对。但是不好在百度上查,还好有和我读音一样的)输入差异备份 linux 。还能搜出好多。
用的最多的是tar 和rsync。我准备先用tar试试。这里有必要说一下差异备份和增量备份。增量备份:备份上一次备份后变化的文件。差异备份,全备份后变化的文件。
自己根据网上的例子也写了一个:
#!/bin/bash
if [ `date +%d` = "01" ]
then
bakdir="/www/back/month/"`date +%m%d`
zl="" #每月1号进行完全备份
else
bakdir="/www/back/month/"`date +%d`
zl="-N "`date +'%Y-%m-01 00:00:01'`;# 差异备份
#zl= "-N"`date -d '-1 day' +'%Y-%m-%d 00:00:01'`#日增量备份
fi
mkdir -p ${bakdir}
back_file_name="blog-`date +%Y%m%d`.tar.gz"
tar "${zl}" -czf ${bakdir}/${back_file_name} /www/blog
7zip a ${bakdir}/${back_file_name}.7z -pPASSWORD -mhe -mx9 ${bakdir}/${back_file_name}
mutt -a ${bakdir}/${back_file_name}.7z -s "${back_file_name}.7z" XXX@qq.com /tmp/filelist.txt
#tar -cz -T /tmp/filelist.txt -f /www/back/xxx.tgz /www/blog
#tar -g 来差异备份
#先用-g snapshot 来创建当前的快照
#snapshot 文件就包含当前时间和要备份的文件列表
#tar -cf a.tar /home -g snapshot
#tar -g snapshot -cf a_incremen.tar /home
这里用到了几个命令的参数:
date +%m%d 当前月份和日子
tar -N 仅仅备份比这个参数后日期新的文件
date -d ‘-1 day’ 1天前
tar还有个g参数,先创建一个镜像,在备份时就增量备份。
上面的例子是以月为周期,也可以改为以周为周期。
今早收到QQ的邮件,说最近收到过量的大邮件。5天内不能接受超过5M的邮件了。
2011-03-30:今天突然发现上面的程序有点问题。-N 后面应该加全备份的时间。也就是从全备份后发生变化的文件以后才备份。这里用到date的另一个参数u,用数字表示的参数。
经修改后为:
bakdir="/www/back/week/"`date +%A`
uu=`date +%u`
let aa=$uu-1
zl="-N "`date -d "- $aa day"`;# 差异备份
英语不行,所以参数随便编。
ps:在调试的过程中比小心用tar创建了一个名为“-N”的文件,用rm -N没法删除就从网上搜了一下,找到了方法。
rm — -N 或者是rm ./-N
2011-04-07 0:16补充 又发现了一个问题啊。如果删除了某个文件,tar也不知道啊。-N 只有在修改后者添加新文件后才有效啊!-g这个好像 也是不太管用!