windows安装Rsync把文件同步到Linux服务器,安心备份数据

先简单介绍一下rsync, rsync 是一个开源的、强大的命令行工具,主要用于 快速、灵活地进行文件和目录的同步和备份, 使用rsync,可以做到增量同步备份、本地或远程同步、单向同步或双向同步等。笔者这次主要是使用rsync进行文件的单向异机增量同步备份文件。

首先在windows中下载和安装cwRsync客户端。目前最新版本为6.4.2,下载时要右键单击下载链接,然后点击“另存为”
https://www.itefix.net/cwrsync/client/downloads

4336f6502036aa6c4eda0bed037b2a2e.png
下载后解压至D盘根目录并修改一下名称
e905517caf8ac516f358aa4eccce67dd.png
为了后面方便在命令行中使用 Rsync,需要将cwrsync目录的 bin 子目录添加到系统环境变量 PATH 中:
d64d8fe005f477a0d546552a83c91289.png
8cac26491d5fa522e3873c17d1f7ea83.png
5f2ea7a026946bfc294c9705ba5c4b54.png
配置好环境变量后,使用快捷键 “win+R” 打开运行窗口执行“cmd”打开cmd命令程序,执行 “rsync –version” 命令,就可以查看到rsync的版本信息。
302c2ddfa88dab1a88759e77994c979d.png
以上步骤就完成了windows的rsync客户端的安装,下面在linux主机中部署rsync服务端。

笔者的Linux主机安装的是Rocky linux 9.4 发行版
b694cdbe533e11cd377c5d905d8f6645.png

  1. 开始安装Rsync,执行如下命令:
    dnf install rsync -y
    然后创建一个 Rsync 同步目录,并将其所有子目录和文件的所有者和所属组更改为 nobody
    mkdir /rsync_data
    chown -R nobody:nobody /rsync_data

  2. 配置 Rsync 守护进程
    (1) 创建 Rsync 配置文件
    Rsync 的配置文件默认路径为 /etc/rsyncd.conf,创建并编辑它:
    nano /etc/rsyncd.conf
    修改成:

# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

[backup]
    path = /rsync_data
    comment = Backup Directory
    read only = no
    auth users = backupuser
    secrets file = /etc/rsyncd.secrets

其中”[backup]“是定义了一个名为 “backup” 的模块。这个模块允许客户端通过 rsync 协议访问指定的文件路径。

465ee94e5de6c8c0464b42b142822f99.png
(2) 配置身份验证
创建连接rsync的认证文件 /etc/rsyncd.secrets,在文件中指定用户和密码:
nano /etc/rsyncd.secrets
文件内容如:
backupuser:123abc
修改文件权限,确保只有 root 能读取:
chmod 600 /etc/rsyncd.secrets

  1. 启动 Rsync 服务:
    systemctl enable rsyncd
    systemctl start rsyncd

如果启动 Rsync 服务时出现如下错误提示,一般是因为rsyncd 服务文件(rsyncd.service)没有随包一起安装,需要需要手动创建或安装相应的服务文件。

[root@localhost /]# systemctl enable rsyncd
Failed to enable unit: Unit file rsyncd.service does not exist.
[root@localhost /]# systemctl start rsyncd
Failed to start rsyncd.service: Unit rsyncd.service not found.

解决方法如下:
(1) 创建 rsyncd.service 文件
nano /usr/lib/systemd/system/rsyncd.service
在文件中添加以下内容:

[Unit]
Description=Rsync Daemon
After=network.target

[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=root
Group=root

[Install]
WantedBy=multi-user.target

(2) 重新加载 systemd 配置
systemctl daemon-reload
(3)运行Rsync 服务并设置开机自动启动
systemctl enable rsyncd
systemctl start rsyncd
这样应该就能解决上面启动rsync服务时的错误。

  1. 执行如下命令查看rsync服务的状态:
    systemctl status rsyncd
    97e4bb9ad5dd48cd4991a072357ebe25.png

如果打开了防火墙的,需要放行873端口:
firewall-cmd –permanent –add-port=873/tcp
firewall-cmd –reload

到此,rsync服务端口也安装配置完成了。

回到客户端windows的CMD命令行程序,执行如下命令按提示输入上面配置的rsync连接密码,就可以同步文件:
rsync -avz –progress /cygdrive/d/vscode [email protected]::backup
7309d0eb9a10f3d58cc01a4359f78f30.png
在windows的cwRsync 中,文件路径以 /cygdrive/ 开头,比如要备份D盘目录下的vscode文件夹,“D:\vscode”需转换成“/cygdrive/d/vscode”来表示。”backupuser“是上面配置身份验证文件中的用户,“192.168.1.49"是rsync服务端的ip地址,”backup“就是上面服务端定义的模块名称。

如果你不想每次输入那一行同步命令,可以做一个.bat批处理文件:

@echo off
setlocal enabledelayedexpansion

:: 设置密码环境变量
set RSYNC_PASSWORD=123abc

:: 替换以下路径为实际 rsync.exe 的路径
"D:\cwrsync\bin\rsync.exe" -avz --progress /cygdrive/d/vscode [email protected]::backup > D:\rsync\rsync_test.log 2>&1

:: 检查日志是否生成
if exist rsync.log (
    echo Log File Created Successfully
    type rsync.log
) else (
    echo Log File Not Found. Check rsync execution.
)

:: 自动退出
exit

然后另存为 rsync.bat 文件,双击这个 .bat 文件,就能执行同步任务了。我们还可以使用任务计划程序设置自动执行这个.bat文件,以达到按设定的计划来执行同步备份,不需要每次手动去执行,步骤如下 :
打开任务计划程序: 按下 Win + S,搜索 任务计划程序,然后打开任务计划程序,在右侧点击 创建基本任务。
4432777c5adc8d9b02d577aecbdab053.png
输入任务名称(例如 “Rsync Backup”)
34b2ddb6b3f0aa6be16d35d16f487beb.png
设置触发器:
选择任务触发器(例如每天运行),然后设置具体的运行时间
040374ea73a681109480c16b7dfe8ee5.png
fc7f8544f00efe09346f12d9eea8c825.png
设置操作:选择 启动程序,点击 下一步
657538b0d70e162ece2304a1055a4555.png
在 程序或脚本 中选择刚刚创建的批处理文件 D:\rsync\rsync.bat
c376ddc4e2e7c92bba31f81e59225e1c.png
完成任务
6c580fecfc1b57b28ec9dede24311c7f.png
点击 完成,任务创建成功。

测试任务计划
在任务计划程序中找到刚创建的任务。
右键点击任务,选择 运行。
检查同步任务是否按预期运行。
451c088254dcae0c2104ee49ee4ffb5e.png

需要注意的是,如果连接rsync服务端出现类似权限错误的提示,需检查目录权限、用户和认证文件等。
笔者的Rocky linux 9.4 就遇到SELinux限制 Rsync 的访问导致客户端同步不了,可以执行 sestatus 看看SELinux,如果是开启状态,可以执行 setenforce 0 临时关闭SELinux试试,或者通过调整 SELinux 布尔值来放宽对 rsync 的限制,执行:
setsebool -P rsync_full_access 1
这样应该就能解决SELinux限制rsync权限的问题了

如果要还原数据,先在windows中新建一个文件夹,比如在D盘下建新一个restore文件夹,然后在windows的CMD命令程序中执行如下命令:
rsync -avz [email protected]::backup /cygdrive/d/restore
78d2062b10cf5c96295fd8988408bd13.png