使用rsync实现windows与linux数据同步|保姆级图文教程
使用rsync实现windows与linux数据同步|保姆级图文教程
唐喜乐rsync实现Windows与Linux文件同步部署文档
1. 部署准备与说明
1.1 前置说明
- 该方案使用rsync程序进行数据的同步与备份。
- 该程序在Linux系统的客户端为rsync;Windows系统的服务端为cwRsyncServer
- 我们将Windows系统作为服务端,将Linux系统作为客户端,采用Linux客户端把文件推送到Windows服务器端的同步策略进行数据的同步
- 数据同步为无差异同步,以客户端的数据为准,当客户端数据有增删时,服务端在同步时也会进行响应的数据增删。
- 无网络环境的话,需要提前下载好Windows和Linux的安装包,点击对应系统进行下载
1.2 安装软件
2. 安装Windows服务端cwRsyncServer
2.1 创建名为SvcCWRSYNC
的Windows管理员账户
Windows 10:
- 点击开始菜单,点击上方的用户头像图标,选择更改账户设置
- 弹窗后,点击其他用户,点右侧的“+”图标,将其他人添加到这台电脑
- 弹窗后,点击
我没有这个人的登录信息
- 页面更新后,点击
添加一个没有 Microsoft 帐户的用户
- 弹窗后,设置用户名为
SvcCWRSYNC
,密码自己进行设定,安全问题可自由填写,填写完成点击下一步 - 在创建完成后的界面,点击
更改账户类型
,在弹出的下拉框中点击选择管理员
,点击确定,完成用户的创建
2.2 安装cwRsyncServer软件
- 解压上面提供的cwRsyncServer压缩包,得到一个exe的安装软件,双击程序启动安装,一路点击直到Service Account界面
- cwRsyncServer要求给定一个Windows账户用于同步数据,否则将无法启动对应的服务程序,此处填写刚才创建的Windows账户
SvcCWRSYNC
,密码为刚才自定义的密码
- 安装完成后关闭
- 右键点击任务栏,点击任务管理器打开它,打开后切换到服务选项卡,点击打开服务
- 找到名称为RsyncServer的服务,如没有此服务则是安装时设置的用户账户与Windows实际账户不匹配或是非管理员账户,此种情况请卸载后重新安装,并正确设置用户账户
- 双击打开RsyncServer服务,选择启动类型:自动,点击启动,启动完成后点击确定。
2.3 配置cwRsyncServer服务端
- 打开软件的安装目录(默认是在
C:\Program Files (x86)\ICW
,如自定义目录则打开对应目录),目录内文件如下 - 使用文本编辑器打开
rsyncd.conf
文件,修改其中配置如下
1 | 重要参数说明: |
务必请根据需求修改path路径
切换到安装目录的etc文件夹下,将创建完整名为rsyncd.secrets
的密码文件
此文件为中为数据为 用户名:密码,示例 test:123
2.4 开放防火墙,允许该程序使用的端口进行数据出入
- 打开控制面板,点击Windows Defender 防火墙,点击右侧的高级设置
- 弹出窗口后,点击左侧的入站规则,再点击右边的新建规则
- 弹窗后,点击选择端口,点击下一步,选择TCP、特定本地端口,并填入873
- 填写完成后,一直点击下一步,直到名称项,填入RsyncServer Port,点击完成。
- 同样的方法,配置出站规则,步骤与入站规则一致
3. 安装Linux客户端rsync
3.1 网络联通性确认
- Linux环境也需确保873端口开放访问,执行命令
telnet Windows IP地址 873
如返回下图的情况,表示端口已联通
如提示:**-bash: telent: command not found**,则该命令未安装
依次执行sudo yum install telnet、sudo yum install telnet-server
进行安装
如,无法联通,则执行sudo firewall-cmd --zone=public --add-port=873/tcp –permanent
对873端口开放防火墙,再进行确认
3.2 Yum命令安装方式:
此方式针对Linux电脑可以连接外网,能使用yum安装命令的情况,能简便安装rsync服务
Linux CentOS系统上执行命令进行安装:
sudo yum install rsync -y
,等待出现Complete!表示安装成功
配置密码文件。执行
sudo vi /etc/rsyncd.passwd
,输入在windows上设置的SvcCWRSYNC用户的密码
完成后,保存,退出设置密码文件权限,执行
sudo chmod 600 /etc/rsyncd.passwd
设置配置文件,执行
sudo vi /etc/rsyncd.conf
填入下列内容:1
2
3
4uid = root
gid = root
use chroot = no
max connections = 4完成后,保存,退出
启动服务,执行
systemctl start rsyncd.service
设置开机自启,执行
systemctl enable rsyncd.service
3.3 编译安装方式
此方式为编译安装,适用无法访问外网与yum安装命令的情况,兼容CentOS与Ubuntu系统。须在本文开头点击Linux下载对应软件包
Linux服务器上执行
cd ~
,切换到当前用户目录,执行pwd
查看当前用户目录,将下载的tar包拷贝到此目录下完成拷贝后,执行
sudo cp ~/rsync-3.1.3.tar.gz /opt/rsync-3.1.3.tar.gz
,切换到opt目录下,cd /opt/
,查看文件是否存在执行
sudo tar -zxvf rsync-3.1.3.tar.gz
,对程序包进行解压解压完成,切换到目录,
cd /opt/rsync-3.1.3
执行
sudo ./configure
检查配置,出现如下提示表示配置正确执行
sudo make
,完成后再执行sudo make install
,对程序包进行编译编译完成后,需要自己设置配置文件,执行
sudo mkdir /etc/rsyncd
,创建配置文件存放的文件夹切换到此文件夹,
cd /etc/rsyncd/
执行
sudo touch rsyncd.conf
,创建配置文件执行
sudo vim /etc/rsyncd/rsyncd.conf
,编辑配置文件,填入下列内容1
2
3
4uid = root
gid = root
use chroot = no
max connections = 4输入完成后,保存退出
执行
sudo touch rsyncd.passwd
,创建密码文件,填入安装时设置的密码
,输入完成后保存退出设置密码文件权限
sudo chmod 600 /etc/rsyncd/rsyncd.passwd
启动服务,执行
sudo /usr/local/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
4. 设置定时同步数据的任务
4.1 使用crontabs设置定时同步数据的任务
- 查看cron服务是否在运行,执行
service crond status
,如下为运行状态
1 | 注:如服务非运行状态则执行systemctl start crond进行启动 |
- 设置数据同步脚本,执行
sudo touch /usr/local/bin/databackup.sh
,创建脚本。 - 执行
sudo vi /usr/local/bin/databackup.sh
编辑脚本,输入如下命令:
1 | sudo /usr/local/bin/rsync -vzrtopg --progress <数据存放的路径> SvcCWRSYNC@<Windows的IP地址>::<模块名> --password-file=/etc/rsyncd/rsyncd.passwd |
注:其中<>内容为需要自己替换的地方,下面给出一个样例进行参考:
1 | sudo /usr/local/bin/rsync -vzrtopg --progress /usr/share/testrsync SvcCWRSYNC@192.168.1.1::rsyncfile --password-file=/etc/rsyncd/rsyncd.passwd |
这表示我需要将/usr/share/testrsync文件夹中所有内容,同步到ip地址为192.168.1.1的电脑上,数据存放在rsyncfile模块中指定的windows目录
注意:如配置了多个模块用来同步,此处需相应增加同步命令,只需修改数据存放的路径与对应的模块名即可,设置完成后,保存,退出。
4. 设置系统定时任务,定时执行备份脚本,执行sudo vi /etc/crontab
,输入如下内容:
1 | SHELL=/bin/bash |
输入完成后,保存,退出。以上表示,系统将每隔30分钟执行一次刚才的备份脚本,进行数据的备份
4) 执行sudo crontab /etc/crontab
使任务立即生效