原理:利用mount 挂载windows服务器目录,再像linux自身目录进行操作。主要命令rsync+tar 于crontab 进行定时备份。


一、列出服务器共享文件夹:

smbclient -L 服务器IP |awk '/Disk/{print $1}'|grep -v '$$' >服务器IP.list

二、编写脚本挂载目录

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/rsr/local/bin:/usr/local/sbin:~/bin
export PATH
mkdir /mnt/服务器名
for directory in $(cat ./服务器IP.list)
do
    mkdir /mnt/服务器名/$directory #只在第一次使用,之后可注释掉
    mount -t cifs -o username=用户名%密码,iocharset=utf8 //服务器IP/$directory /mnt/服务器名/$directory
done


三、准备备份用目录分别为同步用目录和存放打包文件用目录,当然需注意磁盘空间

mkdir /rsyncbak
mkdir /tarbak


四、于crontab进行每周同步作为每周初始完整备份

crontab -e
01      00      *       *       7      rsync -a --delete /mnt/服务器名 /rsyncbak

五、编写脚本进行差异备份,并于每天22:00执行


vi ~/backupday.sh
#!/bin/bash
#===================================================
#请输入,你想让备份数据放置的目录
basedir=/tarbak
#===================================================
PATH =/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG = C
basefile=$basedir/服务器名.$(date +%F).tar.bz2
#每星期一须修改一次日期
tar -N '2013-08-18' -jpcv -f $basefile /mnt/服务器名
find /tarbak -ctime +1 -exec /bin/rm {} \;


echo "0 22 * * * sh ~/backupday.sh" >>/var/spool/cron/root



在本人实际工作中,是使用一台linux主机对多台windows服务器进行备份,用到多块磁盘和不同目录搭配进行管理,基本操作差不多,此处不再赘述。