上面一篇文章提到了文件压缩方式
解决了上面的问题,下面也该进行备份了
那接下来的首要事情就是写备份脚本:(也不知道大家能不能看懂)
Archive_Outbox_Backup.sh
#!/bin/sh
FindDomainDir( )
{
echo -n > /$1/domainlist.txt
echo -n > /$1/nodir.txt
for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z
do
for j in - 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z
do
for k in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z
do
if [ -d "/$1/$i/$j/$k" ]
then
cd /$1/$i/$j/$k/domains
ls|grep -v ".dir-control" >>/$1/domainlist.txt
else
echo "/$1/$i/$j/$k not exist.">>/$1/nodir.txt
fi
done
done
done
}
FindDomainDir /ad5/mx10/home/mail
LOG=/home/sysadmin/zhaoyj/backup-ad5-mx10.log
MAILDIR=/ad5/mx10/home/mail
MOUNTDIR=/mnt/archive_outbox_backup
IPADDRESS=119.254.72.244
echo ""> $LOG
if [ -e $MOUNTDIR/nfsflag ] ; then
:
else
/sbin/mount -t nfs $IPADDRESS:/ad5/119.254.72.243/ad5/ $MOUNTDIR
fi
if [ -d "$MOUNTDIR/mx10" ]
then
cd $MOUNTDIR/mx4
else
exit
fi
while read line
do
p1=`echo $line|cut -c1`
p2=`echo $line|cut -c2`
p3=`echo $line|cut -c3`
p4=$MAILDIR/$p1/$p2/$p3/domains/
p5=$MAILDIR/$p1/$p2/domains/
p6=$MAILDIR/$p1/domains/
if [ -d "$p4$line" ]
then
BACKUPTIME=`date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"`
echo $BACKUPTIME $line>>$LOG
tar -Pcjf $line.tar.bz2 $MAILDIR/$p1/$p2/$p3/domains/$line
elif [ -d "$p5$line" ]
then
BACKUPTIME=`date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"`
echo $BACKUPTIME $line>>$LOG
tar -Pcjf $line.tar.bz2 $MAILDIR/$p1/$p2/domains/$line
elif [ -d "$p6$line" ]
then
BACKUPTIME=`date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"`
echo $BACKUPTIME $line>>$LOG
tar -Pcjf $line.tar.bz2 $MAILDIR/$p1/domains/$line
else
echo $BACKUPTIME NO $line,IT IS DOMAIN ALIAS >>$LOG
fi
done< $MAILDIR/domainlist.txt
/sbin/umount -f $MOUNTDIR
第一次测试就碰钉子了:
archive-back1# chmod +x Archive_Outbox_Backup.sh
archive-back1# ./Archive_Outbox_Backup.sh
./Archive_Outbox_Backup.sh: /bin/mount: not found
archive-back1# whereis mount
mount: /sbin/mount /usr/share/man/man8/mount.8.gz
再看看脚本里面是这样的:/sbin/mount -t nfs $IPADDRESS:/ad5/119.254.72.243/ad5/ $MOUNTDIR
哇,好粗心那,做了更改之后再继续测试,又碰钉子了,哎,测试之前都检查过了怎么还能这么不给力呢
archive-back1# ./Archive_Outbox_Backup.sh
cd: can't cd to /mnt/archive_outbox_backup/mx4
那就看看脚本里面怎么写的吧
if [ -d "$MOUNTDIR/mx10" ]
then
cd $MOUNTDIR/mx4
我晕,怎么能犯这种低级错误呢,赶紧改过来,Go on
又有绊脚石,有这个错误提示:tar: Removing leading '/' from member names
这个错误提示对我来说是第一次,那只能上网soso啦
***首先应该明确:*nix系统中,使用tar对文件打包时,一般不建议使用绝对路径。
***通常是在两台环境相似的机器上进行同步复制的时候,才有需要使用绝对路径进行打包。使用绝对路径打包时如果不指定相应的参
***数,tar会产生一句警告 信息:”tar: Removing leading `/’ from member names”,并且实际产生的压缩包会将绝对路径转化为
***相对路径。
***更为可靠的方法是在打包和解开的时候都使用参数 -P
经过这么一看我明白了,然后在之后的备份过程中我会将“-P”选项加上
一会之后,我去备份机上看了一下备份情况:
[root@backup3 /ad5/119.254.72.243/ad5/mx10]# ls
10000help.com.tar.bz2 8d52.com.tar.bz2 ahaide.com.tar.bz2
31food.com.tar.bz2 99xxyy.com.tar.bz2 ahhuachuang.com.tar.bz2
4ships.net.tar.bz2 9huadesign.com.tar.bz2 ahjinhong.com.tar.bz2
512pr.cn.tar.bz2 9ysh.net.tar.bz2 ahmeida.com.tar.bz2
51sby.com.tar.bz2 a-laser.cn.tar.bz2 ahnanyangcable.com.tar.bz2
5izm.net.tar.bz2 aai-arch.com.tar.bz2 ahtcxs.com.tar.bz2
71cg.com.tar.bz2 acoms.mobi.tar.bz2 aia-sh.com.cn.tar.bz2
成功啦,不过备份脚本也是几经修改的哟
如果大家对我写的脚本方案有更好的建议,请多多留言谢谢