原理:利用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服务器进行备份,用到多块磁盘和不同目录搭配进行管理,基本操作差不多,此处不再赘述。