跳到主要内容

2、linux到windows

2、实战:从linux同步数据到winodws(增量定时同步)-2023.11.30(测试成功)

目录

[toc]

环境

linux服务器:centos7.9.2009 (rsync  version 3.1.2 )
win10 (cwRsync_4.1.0_Installer.exe)
  • 软件

链接:https://pan.baidu.com/s/1Kkps6jeW5v8fcUQN7lcw5g?pwd=3w2g 提取码:3w2g 2023.11.30-rsync-winodws客户端软件

需求

如何利用rsync实现从linux服务器同步数据到windows电脑上?

自己业务背景:

目前自己已经实现了利用ecs的nginx提供公网md图床,同时也利用ShareX截图软件在上传图片时会保存一份图片到本地(然后保存在百度网盘同步空间)。

以上方案已经完全保证md图床数据的容灾性及备份性。

但是,如何保证将ecs图床数据备份到本地wingdows呢,方便后续数据迁移?

因此rsync是一个非常优秀的选择方式。

gpt提问

2023年11月30日提问

如何利用rsync实现从linux服务器同步数据到windows电脑上?

在 Windows 上使用 rsync 同步数据通常需要使用类似于 Cygwin 的工具,因为 rsync 是一个在类 Unix 系统上运行的工具。以下是基本的步骤:

  1. 安装 Cygwin:

    • 下载并运行 Cygwin 安装程序:Cygwin 官方网站
    • 在安装过程中,选择需要的组件。确保选择了 rsync 和 openssh 等相关组件。
  2. 配置 SSH 访问:

    • 在 Windows 上,确保已经安装了 SSH 客户端。你可以使用 Cygwin 提供的 OpenSSH,或者其他的 SSH 客户端。
    • 在 Linux 服务器上,确保 SSH 服务器已经正确配置,并且你的 SSH 密钥已经添加到服务器上。你可以使用 ssh-keygen 在 Windows 上生成 SSH 密钥,然后将公钥添加到 Linux 服务器上的 ~/.ssh/authorized_keys 文件中。
  3. 使用 rsync 进行同步:

    • 打开 Cygwin 终端,在终端中使用 rsync 命令进行同步。以下是一个例子:

      bashrsync -avz -e "ssh -p PORT_NUMBER" user@your_server_ip:/remote/path/ /local/path/
      • -avz 选项表示以归档模式、递归、压缩的方式同步。
      • -e 选项用于指定 ssh 的端口号,替换 PORT_NUMBER 为实际的 SSH 端口号。
      • user 是你在 Linux 服务器上的用户名。
      • your_server_ip 是 Linux 服务器的 IP 地址。
      • /remote/path/ 是 Linux 服务器上要同步的目录路径。
      • /local/path/ 是 Windows 机器上存储同步数据的目录路径。
  4. 定时同步:

    • 若要实现定时同步,你可以使用 Windows 的任务计划程序(Task Scheduler)来定期运行 rsync 命令。创建一个批处理文件包含 rsync 命令,然后将任务计划程序配置为定期运行这个批处理文件。

这样,你就可以使用 rsync 在 Linux 服务器和 Windows 电脑之间同步数据了。确保你的网络连接正常,SSH 配置正确,并根据实际情况修改 rsync 命令中的参数。

预期目的

源服务器地址:47.97.48.237 centos7 目标服务器地址: windows 10 (自己内网pc)

以下步骤达到的效果:

将公网服务器47.97.48.237的/images/目录下的内容,同步到自己内网winodws pc的D/BaiduSyncdisk/cmi-MdImages-local路径下。

1、开始部署

⚠️ 注意:

本次配置是在之前环境基础上配置的,之前自己的ecs已经配置好了rsync服务,本地windows pc也配置了,已经成功实现windows数据->linux数据同步了,具体链接可见下文:

https://onedayxyy.cn/docs/rsync-windows-to-linux

  • 测试过程
#备份
[root@hexo-blog ~]# cp /etc/rsyncd.conf /tmp/


##编辑
[cmi-MdImages]

# 同步的目标文件夹
path=/test/

# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no

# 指定最大的连接数
max connections=4

# yes 表示只读本地文件无法同步到服务器
read only=no

# 客户端请求显示模块列表时,该模块是否显示出来
list=true

# 服务运行时的用户
uid=root

# 服务运行时的用户组
gid=root

# 进行验证时的用户名,必须是系统存在的用户
auth users = root

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd

# 允许的 ip
hosts allow=*


##winodws -- linux
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/

rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt root@47.97.48.237::cmi/ /cygdrive/D/mkdocs/site

##同步命令
rsync.exe -avPzruh --delete --port=873 --password-file=/cygdrive/e/软件/cwRsync/bin/password.txt root@47.97.48.237::cmi-MdImages /cygdrive/d/cmi-MdImages-local

cmi-MdImages-local


##创建测试文件
[root@hexo-blog ~]# mkdir /test
[root@hexo-blog ~]# echo test > /test/1.txt
[root@hexo-blog ~]# ll /test/1.txt
-rw-r--r-- 1 root root 5 Nov 30 05:44 /test/1.txt


##开始同步
##同步命令

rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt root@47.97.48.237::cmi-MdImages/ /cygdrive/D/cmi-MdImages-local



C:\Users\Win>rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt  root@47.97.48.237::cmi-MdImages/ /cygdrive/D/cmi-MdImages-local
receiving incremental file list
rsync: failed to set permissions on "/cygdrive/D/cmi-MdImages-local/.": Permission denied (13)
./
1.txt
5 100% 4.88kB/s 0:00:00 (xfer#1, to-check=0/2)

sent 49 bytes received 104 bytes 102.00 bytes/sec
total size is 5 speedup is 0.03
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [generator=3.0.8]

C:\Users\Win>
  • 报错了:。。。

虽然报错了,但是文件还是被同步下来了哦。

那我现在再次测试下看看:

[root@hexo-blog ~]# cd /test
[root@hexo-blog test]# dd if=/dev/zero of=big_file_500M bs=500M count=1
1+0 records in
1+0 records out
524288000 bytes (524 MB) copied, 1.04746 s, 501 MB/s
[root@hexo-blog test]#

验证:

已经同步下来了。

  • 那么,此时,我重新配置下同步信息:
[root@hexo-blog ~]# vim /etc/rsyncd.conf
……
##编辑
[cmi-MdImages]

# 同步的目标文件夹
path=/images/

# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no

# 指定最大的连接数
max connections=4

# yes 表示只读本地文件无法同步到服务器
read only=no

# 客户端请求显示模块列表时,该模块是否显示出来
list=true

# 服务运行时的用户
uid=root

# 服务运行时的用户组
gid=root

# 进行验证时的用户名,必须是系统存在的用户
auth users = root

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd

# 允许的 ip
hosts allow=*

[root@hexo-blog ~]# systemctl restart rsyncd



##开始同步
##同步命令

#rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt root@47.97.48.237::cmi-MdImages/ /cygdrive/D/BaiduSyncdisk/cmi-MdImages-local
##删除--delete选项
rsync.exe -avPzruh --port 8730 --password-file=/cygdrive/D/password.txt root@47.97.48.237::cmi-MdImages/ /cygdrive/D/BaiduSyncdisk/cmi-MdImages-local

  • 要同步的数据量还是很大的:(不过后续就就好了,都是增量同步的)
[root@hexo-blog ~]# ll /images/ |wc -l
9330
[root@hexo-blog ~]# du -shc /images/
2.7G /images/
2.7G total
[root@hexo-blog ~]#

  • 同步完成:

2、配置windows定时

1、新建D:\rsyncMdImages.bat文件,填入以下内容

rsync.exe -avPzruh  --port 8730 --password-file=/cygdrive/D/password.txt  root@47.97.48.237::cmi-MdImages/ /cygdrive/D/BaiduSyncdisk/cmi-MdImages-local

将该文件另存为rysnc.bat文件,编码为ANSI

注:如果编码为utf8,文本中的中文会出现乱码导致执行出错。

2、开启定时任务

批处理完成了,怎么来实现周期性的运行该脚本呢?windows自带了非常强大的定时任务功能。进入计算机管理(此电脑右键“管理”),在系统工具->任务计划程序->任务计划程序库中能看到你电脑所有的定时任务,右键可以创建基本任务。 (或者直接在cmd输入compmgmt.msc

按图中输入名称及描述,点击下一步设置触发器(任务触发时间)

点击下一步设置任务执行操作,这里选择启动程序

选择刚才制作的bat脚本,点击下一步

点击完成创建任务

选择刚创建的任务,右键点击属性打开属性对话框,点击触发器并双击已设置的触发器设置任务重复执行

点击确定完成定时任务设置,右击任务启动任务。

  • 自己最终配置效果如下

rsyncMdImages.bat

D:\rsyncMdImages.bat

rsync.exe -avPzruh --port 8730 --password-file=/cygdrive/D/password.txt root@47.97.48.237::cmi-MdImages/ /cygdrive/D/BaiduSyncdisk/cmi-MdImages-local

参考文章

https://blog.csdn.net/a772304419/article/details/132431332

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http://onedayxyy.cn/

image-20231113073017981

image-20231113073039083

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20231113073101271

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!