服务器之间文件备份方案、如何把服务器文件自动备份到另外一台服务器?
很多单位都有文件服务器备份的需求,并且常常是把一个服务器的文件自动备份到另外一台文件服务器 。如何实现呢?
一、Windows文件服务器自动备份的方法
Windows文件服务器自动备份的最简单方法是安装专门的服务器文件自动备份软件,目前国内有一些专门用于备份服务器文件的软件。例如有一款“大势至服务器文件自动备份系统”(下载地址:http://www.grabsun.com/filebackup.html),只需要在服务器上安装之后,就可以对服务器的文件进行增量备份和全量备份,也就是可以把服务器的文件夹自动、定时备份到服务器的其他磁盘分区、外接移动硬盘、其他文件服务器或NAS存储空间等,从而有效保护服务器文件安全,防止服务器文件丢失。如下图所示:
图:大势至服务器文件自动备份软件
同时,通过大势至服务器文件自动备份系统还可以实现只让将一个服务器上的文件或文件夹以及对应的账号,全部迁移到另外一个服务器,从而避免了重新设置账户和文件访问权限的麻烦。如下图:
图:服务器文件迁移
当然,你也可以通过脚本命令来实现。具体如下:
项目有些文件上传到windows系统临时文件,需要定期进行备份。例如我要将D/information/images文件夹及其下所有文件复制到F/Archives文件夹下,方法如下:
1、新建txt文件,输入以下内容
参数解释:
- /e:拷贝所有子目录,包括空子目录;
- /I: 如果目标文件或目录不存在且拷贝的文件数多于一,则假设目标为目录;
- /d:只拷贝文件日期与在目标文件后的文件(即修改过的源文件)
- /h:同时拷贝隐藏文件和系统文件
- /r:拷贝并覆盖只读文件
- /y: 复制文件审核设置(不显示已有文件覆盖确认)
2、保存文本文件后,通过重命名将文件改为".bat"文件
3、win10系统中
开始处右键--> 计算机管理 --> 系统工具 --> 任务计划程序 --> 任务计划程序库 --> 创建任务
win7系统中
附件 --> 系统工具 --> 任务计划程序 -- 创建任务
此处创建的是每天早上9点整执行一次,创建完成后,参考图3选中 该条任务,点击可选项中的“运行”按钮,查看运行效果。
如果需要每隔N分钟触发一次,需要如下设置触发器(以每10分钟一次为例)
二、linux文件服务器自动备份的方法
1、提前说明:
以在两台服务器之间建立定时同步为例,将服务器A /home/jack 路径下的内容备份到服务器B /home/test 路径下
设置定时同步时间为5分钟
2、配置过程:
服务端(即服务器A):
安装rsync:yum -y install rsync
ln -s /etc/rsyncd.conf
编写rsync的配置文件:vim rsyncd.conf
解析如下:
uid = root #root用户访问(我这里用ROOT用户,也可以用其他新建的用户) gid = root #root组用户访问 port=871 #通过端口873 use chroot = yes #可以使用chroot read only = no #可读写 max connections = 4 #最大连接数 list = no #不列出文件清单 pid file = /var/run/rsyncd.pid #此步可没有此文件 timeout = 900 lock file = /var/run/rsyncd.lock #此步可没有此文件 log file = /var/log/rsyncd.log #此步可没有此文件 [backup] #发布项(注意这个命名) comment = this is module for backup #模块介绍,可删去 path = /home/jack/ #发布的路径 ignore errors auth users = root #认证用户为root secrets file = /etc/rsyncd.pass #密码文件
4.编写用户密码文件:echo “root:111” > /etc/rsyncd.pass
(root:上一步设置的登录用户名;111:文件的密码自己随意设,但要记住,接下来需要用到;此步创建了rsyncd.pass文件)
修改密码文件的权限(此步很重要,且只能是600):chmod 600 /etc/rsyncd.pass
启动rsyncd服务
service rsyncd start
查看进程占用端口:netstat -tunlp
(启动rsyncd服务后会显示873端口被rsync占用)
客户端(即服务器B):
1.yum -y install rsync
2.echo “root:123” > /etc/rsyncd/rsyncd.pass
(root:用户名可不写,如果写,必须要和服务端设置的第3步中设置的用户名一致; 111:密码,必写,要和服务端设置的第4步中的密码一致)
3.chmod 600 /etc/rsyncd.pass
4.创建存放备份文件的路径:mkdir /home/backups
(路径自己随意设)
5.每隔5分钟将服务器A中的backup模块目录下的文件(我们设置的是/home/jack)同步到本地下(我们设置的是/home/backups)
1> ssh-keygen -t dsa -b 1024
2> 将id_dsa.pub里面的内容添加到B机的authorized_keys文件中cat /root/.ssh/id_dsa.pub >> authorized_keys1
3> 创建一个需要定时执行的脚本文件,如:rsyncd.sh脚本:vi /etc/rsyncd.sh(路径自己设置的),在此脚本中添加如下内容:(命令的每条含义文档最后有解释)
rsync -auv --password-file=/etc/rsyncd.pass root@192.168.22.99::backup /home/test/
4> 设置脚本执行的时间:crontab ?Ce,添加如下内容
*/5 * * * * sh /etc/rsyncd.sh #第5分钟执行一次同步;
到此,同步配置基本完成,正常情况下每5分钟就会同步一次
也可直接输入同步命令检查是否能够同步,命令格式为:
rsync命令格式:rsync [option] 源路径 目标路径
例如: 将服务器A backup模块下要备份的文件同步到本地/home/test目录下:
rsync -auv --password-file=/etc/rsyncd.pass root@192.168.22.99::backup /home/test/
正常情况下,同步成功会显示以上信息。