Rsync工具同步Windows文件到远程Linux服务器
一、下载Rsync
https://itefix.net/
二、解压安装
压缩包为绿色免安装版,将压缩包解压到合适的位置
三、配置Windows到Linux ssh免密登录 1 C:\Users\admin>ssh-keygen -t rsa
四、拷贝公钥文件内容至远端服务器
将公钥id_rsa.pub的内容复制并粘贴到远程Linux服务器/root/.ssh/authorized_keys文件里面,如果没有authorized_keys文件,则手工创建: vi authorized_keys 或touch authorized_keys
[root@vps ~]# pwd /root [root@vps ~]# cd .ssh/ [root@vps .ssh]# vi authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCsYoxatHlkMaXPOnn6vrIP9U0JJuMig/x/R7gns3pVelSXsfC+OzytkjSf2dV2rRiEXb4K/bGRCMq9siURynhtfxWiwBZwU3QORMMqNRg34qWIKRO7mTy2iIV7ZogDCepWBrhBN3gLvnW7gJW3KetgZFmw2VOq8YDiS5iaX0e9QJbVxkBh6zMrwIA53FdNRC44By+WqZlqLWmn6VPjW/zyKn2EniMJkNVbQKiVefPo0y7wn37EQqSaCnDqF5dKp8+yANy8DXnqf5djT/OX/wdcmlyTrcjSxPc2bSrEO/cEMlQ0/dgOjNCcUCSF+sJ7nnGStuuL9WHUG/vvg/butPqX7h+XCq1QLa+LCj8LAkvnLSTVwbiNOUY+2yPtgtZOhaUzxWN3gXzDd+CHmuq7fGU7Iq/jmLORNw1jeDnvPELu4nOU8IUjGtDJL0kSyY5ik38uzcItKwXGEAsMZQ7ONGBXgiwtJDKe3mVtD+1A7AoVP7jY1UKEHGDahA8CLM4JPrU= admin@DESKTOP-JJN2EOG
五、连接远程Linux服务器测试连接
ssh root@远程服务器IP地址,首次连接需要输入yes确认连接,下次连接不会再提示
1 C:\Users\admin>ssh root@64.16.72.165
六、开启同步 1.本地同步 1 rsync -avz --update --progress /source/directory/ /destination/directory/
2.通过ssh同步到远程
/cygdrive/C/test : 指源路径 c:\test 文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ---默认端口22 rsync.exe -avz --update --progress /cygdrive/C/test root@64.16.72.165:/mnt/ ---指定端口 rsync.exe -avz -e "ssh -p 1314" --update --progress /cygdrive/C/test root@64.16.72.165:/mnt 注意:上面命令是指把c:\test文件夹及文件夹下面的内容同步到远程服务器/mnt下 rsync.exe -avz -e "ssh -p 1314" --update --progress /cygdrive/C/test/ root@64.16.72.165:/mnt 注意:上面命令是指把c:\test文件夹下面的内容同步到远程服务器/mnt下 ---不同步1.txt和2.txt两个文件以及file文件夹 rsync.exe -avz -e "ssh -p 1314" --update --progress /cygdrive/C/test/ root@64.16.72.165:/mnt --exclude=1.txt --exclude 2.txt --exclude ‘file’ ---删除源端不存在,目标端存在的文件--delete或--delete-before rsync.exe -avz --delete-before -e "ssh -p 1314" --update --progress /cygdrive/C/test/ root@64.16.72.165:/mnt ---修改目标端文件权限--chown=git:git --chmod=go=rX rsync.exe -avz --chown=git:git --chmod=go=rX --delete-before -e "ssh -p 1314" --update --progress /cygdrive/C/test/ root@64.16.72.165:/mnt
3.通过rsync守护进程同步 1 2 3 4 5 rsync -avz --update --progress /source/directory/ rsync_user@remote::rsync_module 在这个例子中,我们使用rsync守护进程来同步文件。rsync_user是远程主机上的rsync用户,::rsync_module指定了远程主机上的rsync模块。这个命令会将源目录中的所有更新过或新增的文件同步到远程主机的rsync模块中。 注意:在使用rsync时,你需要确保你有足够的权限来访问和修改你想要同步的文件和目录。
七、设置任务计划自动执行同步
Windwos11创建任务计划步骤: 在开始菜单中搜索“任务计划程序”并打开,右键任务计划程序(本地),在弹出菜单中选择创建基本任务
1.创建Bat批处理脚本 1 2 3 4 5 6 ---创建Rsync.bat脚本,脚本内容如下: @echo off set source_path=/cygdrive/C/Users/admin/Blog rsync.exe -avzP --chown=git:git --chmod=go=rX --delete-before -e "ssh -p 1314" --update --progress %source_path%/ root@64.16.72.165:/opt/backup --exclude=html.20240615.tar --exclude=1.txt --exclude 2.txt --exclude 'WordPress_Backup' pause
2.创建定时任务
八、报错处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 C:\cwrsync_6.3.0_x64_free\bin>rsync.exe -avz -e "ssh -p 1314" --update --progress /cygdrive/C/test root@64.16.72.165:/m nt/ rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.2] rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.3.0] 原因: 电脑是Win11安装了Openssh,环境变量中记录的是OpenSSH环境变量 解决方法: 将C:\cwrsync_6.3.0_x64_free\bin添加到环境变量,放在OpenSSH环境变量之前,重新打开新的窗口执行成功 C:\Users\admin>rsync.exe -avz -e "ssh -p 1314" --update --progress /cygdrive/C/test root@64.16.72.165:/mnt The authenticity of host '[64.16.72.165]:1314 ([64.16.72.165]:1314)' can't be established. ED25519 key fingerprint is SHA256:iS7w1xCuCJc8ec38E+TP1xuyyWle6hs3yzjYzJy3VAo. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[64.16.72.165]:1314' (ED25519) to the list of known hosts. sending incremental file list test/ sent 69 bytes received 20 bytes 5.39 bytes/sec total size is 0 speedup is 0.00