使用Rsync软件工具将linux服务器上的文件同步到Windows 服务器
测试环境(推送:Linux 推送到Windows):
Windows 服务器:172.20.26.97
Linux服务器:172.20.26.34
一、在172.20.26.97上安装cwRsyncServer-v4.1.0软件,默认安装即可,然后进行相关配置和目录创建
1、修改rsyncd配置文件:(C:\Program Files (x86)\ICW\rsyncd.conf)
use chroot = false
strict modes = false
port = 873
uid = 0
gid = 0
log file = rsyncd.log
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[autobak]
path = /cygdrive/d/autobak
ignore errors
read only = false
transfer logging = yes
auth users = admin #172.20.26.97登录用户名
secrets file = /cygdrive/d/Rsync/rsyncd.ps
hosts allow = *
2、根据rsyncd配置文件内容,进行相关配置和目录创建:
1)在D盘下创建Rsync文件夹,再新建rsyncd.ps文件,并编辑rsyncd.ps文件(根据“用户名:密码”格式将本机的用户名、密码写入,例如“admin:123369”),保存
2)在D盘下创建autobak文件夹目录(这是从Linux服务器上同步过来的文件的保存路径)
3、添加防火墙的入站规则,允许rsync的tcp的873端口通过;在管理工具中,打开服务中,将RsyncServer服务设置为自动,并启动。
Windows服务器端配置完成。
二、在linux服务器上做配置好,再设置任务计划执行同步(Linux服务器172.20.26.34)
1、在/data目录下,创建data_rsync同步目录,并创建20230710.txt并写入“test”内容
mkdir -p /data/data_rsync #假设要同步的是data_rsync目录下的文件
cd /data/data_rsync
echo "test" >> 20230710.txt
2、查系统是否有rsync服务,重启rsync服务
rpm -qa|grep rsync #检查Linux系统内是否安装Rsync
systemctl restart rsyncd #如果有rsync,重启rsyncd服务
yum install rsync -y #如果没有,安装一下
systemctl start rsyncd.service #启动rsync服务
systemctl enable rsyncd.service #设置开机启动rsync服务
systemctl status rsyncd.service #查看rsync服务状态
systemctl restart rsyncd.service #重启rsync服务
#vim /etc/rsyncd.conf
rsyncd.conf内容如下:
#文件夹权限
strict modes = false
uid = 0
gid = 0
max connections=10 #最大连接数
#是否越过软链接文件
use chroot = false
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
port=873 #端口,可自行设置(需要注意的是,端口必须是在服务器开放端口区间范围内)
[rsyncto97] #标识符,在客户端是需要使用,可自行设置
#hosts=172.20.26.97 #客户端地址
hosts allow = *
#comment=backup file
path=/data/data_rsync/ #服务端需要同步的文件地址
list = yes
read only = false
#exclude=autobak
auth users = root #服务端设置的账号
secrets file=/etc/rsyncd.password #服务端配置的密码文件
ignore errors
3、根据rsyncd.conf 里的内容,创建rsyncd.password密码文件(admin访问172.20.26.97的密码)
vim /etc/rsyncd.password
123369
保存退出
4、配置密码文件的权限
chmod 600 /etc/rsyncd.password #给rsyncd.password赋予600权限
保存退出
systemctl restart rsyncd.service #重启rsync服务
[root@gitlab run]# ps -ef | grep rsync
root 23461 1 0 15:50 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 23494 14904 0 15:50 pts/0 00:00:00 grep --color=auto rsync
5、配置文件同步任务
1)先手动执行推送命令,如能成功执行同步文件,即可使用脚本,配置任务计划来执行
[root@gitlab data_rsync]# rsync -av --progress --port=873 --password-file=/etc/rsyncd.password /data/data_rsync/ [email protected]::autobak
sending incremental file list
./
20230710.txt
5 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/2)
sent 114 bytes received 41 bytes 62.00 bytes/sec
total size is 5 speedup is 0.03
已成功将autobak模块指定路径下(/data/data_rsync/)的文件同步到172.20.26.97的对应目录下(d:\autobak)
2)创建同步脚本
mkdir -p /data/sh #在 data下创建sh目录
vim /data/sh/34_bak.sh #脚本内容如下:
#!/bin/bash
rsync -av --progress --port=873 --password-file=/etc/rsyncd.password /data/data_rsync/ [email protected]::autobak
保存退出
sh /data/sh/34_bak.sh # 手动运行同步脚本,查看是否成功
crontab -e #成功后创建任务计划,计划每天凌晨3点进行同步autobak备份文件,任务计划内容如下:
0 3 * * * /bin/sh /data/sh/34_bak.sh >/dev/null 2>&1
保存退出