最近有这样的一个需求,就是我ERP备份的数据库,我想自动同步到我的TrueNAS服务器上。但我的ERP服务器是Windows。
怎么能用rsync功能呢?
rsync估计大家都不会陌生。他是一款Linux非常好的同步软件。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限、时间、软硬链接。第一次同步时 rsync 会复制全部内容,下次只传输修改过的文件部分。传输数据过程中可以实行压缩及解压缩操作,减少带宽流量。支持scp、ssh及直接socket方式连接,支持匿名传输。支持Linux,Window平台。写本文的时候,window版最新版为4.1.0版
Linux版下载:http://rsync.samba.org/download.html
Windows版下载:
客户端:cwRsync_4.1.0_Installer.zip 服务器文件同步软件客户端
服务端:cwRsyncServer_4.1.0_Installer.zip服务器文件同步软件 服务器端
现在官方开始了收费版本,建议从脚本之家下载免费版本
- cwRsync win 服务器同步软件 cwRsync_2.1.5_Installer.zip
- 服务器数据同步 服务器端 cwRsync_Server_2.1.5_Installer.zip
- 服务器文件同步 cwRsync_3.1.0_Installer.zip
- 服务器文件同步软件 服务器端 cwRsyncServer_3.1.0_Installer.zip
- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后我们这里呢先讲一下rsync传输中的一些参数。
大家可以根据需要来酌情添加参数。
参数说明
-a 参数,相当于-rlptgoD,
-r 是递归
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v verbose,详细模式输出;
-u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器时钟的同步;
--progress 显示备份过程;
--delete 删除那些DST中SRC没有的文件,用作同步文件用;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说了一大堆,现在开始言归正传了。
我首先是在我的Windows上面安装了rsync服务器端。
安装完成后的效果就是这样。
我们主要是要修改rsyncd.conf的配置文件。
我的配置如下:
uid=0 gid=0 use chroot=false strict modes=false hosts allow=* max connections=5 lock file=rsyncd.log port=873 # Module definitions [backup] path=/cygdrive/D/ERPdatabak auth users=Administrator secrets file=/cygdrive/d/Setting/Rsync/rsync_db.ps read only=no list=no transfer logging=yes
这里面有些需要说明。[backup] 代表同步模块。你可以添加好几个模块,同时同步都可以。
然后有一点要注意,因为我的是Windows,所以在Windows路径的时候要注意,比如d:\setting .这是Windows写法,在这个配置文件应该写成,/cygdrive/d/setting/ 要这样写。好像是POSIX风格来写。
然后就是你要备份的文件夹,需要给他相对应的权限。我都是用的administrator的权限。
然后就去把他的服务开起来,
服务开启之后,然后登入账户,我也改成了administrator 超级管理员了。这个你们可以随意发挥。
最后自测一下rsync服务器是否联通。
显示30.0 .就代表服务正常。
然后我们要根据我们刚刚rsyncd.conf的配置,来配置访问的密码文件和权限。
密码我们也配置好了。
然后在Centos上也创建一个密码文件,并赋予600权限。
可以看到已经是600权限了。如果不是,就是chmod 600 设置一下。
把我Centos上的/tmp/临时目录推送到我的Windows看下。
成功了,过来了。
rsync -avz /tmp/ Administrator@192.168.19.8::backup --password-file=/root/backup_passwd
目录放在前面就是推送过去,放在后面,则是把服务器上的目录拉取过来。
我们的目标是在truenas上面实现,把Windows的数据库全部推送到truenas上面来。
这个是我现有NAS的版本。
同样的在NAS的shell上面要建立一个密码文件。
600权限。
测试是成功的状态。
这次我们是把服务器端的数据拉取过来。
rsync -avz --progress --port=873 --password-file=/root/backup_passwd Administrator@192.168.19.8::backup /mnt/DATA/DATABackup/rsync_bak
rsync -apvz --progress --delete --port=873 --password-file=/root/backup_passwd Administrator@192.168.19.8::backup /mnt/DATA/DATABackup/rsync_bak #这条命令保留了文件的属性,且把源目录没有的文件,在目标文件上删除了。大家各自根据自己所需吧
那很成功了。
我们直接添加一个计划任务就可以了。
我设置的是每天晚上12点开始同步。
这样我们的需求就达到了。
数据已经全部过来了。
还是很成功的。
实验也比较简单,耗时一天就完成了。
我也是参考了网络上面的两个案例。
链接我发出来供大家参考。
https://wenku.baidu.com/view/36bdb2e3b84cf7ec4afe04a1b0717fd5360cb2e7?bfetype=new
https://www.jb51.net/article/59034.htm
https://blog.csdn.net/sinat_27747695/article/details/114098005
https://blog.csdn.net/cyb0408/article/details/113093321
看完这些,应该就会有一些思路了。
我刚开始不成功,以为是用户权限和对NAS界面的不熟悉。
但是后面自己都慢慢克服了。
每个人的需求不一样,所以大家可能要根据自己的实际情况来调试。