跳转至

Windows向Linux文件同步方案

介绍

一般来说,在Windows上进行编辑,在Linux上进行编译是一种非常常见的开发方式。这种方式下Windows向Linux传输文件是一种非常高频的操作,传统的FTP传输文件操作会非常的繁琐和耗时,因此需要一种同步方案实现自动同步

同步的时效性要求不高,因此采用Windows设置定时任务,每隔一定时间向Linux Push文件的方式进行同步

graph LR
WIN_CLN--Push-->LIN_SVR
WIN_CLN--Task Scheduler-->WIN_CLN

同步软件采用Rsync,Windows平台上的Rsync叫做Cwrsync

Linux 配置

Linux上部署Rsync的服务端,一般来说Linux上默认已经安装了Rsync工具,如果没有的话 apt-get install rsync 就可以了

Rsync的配置比较简单,只需要编辑配置文件,Rsync的配置文件涉及2个:

  • /etc/rsyncd.conf:主配置文件
  • /etc/rsyncd.passwd;密码文件(文件名随意,主配置文件中对应上就可以,但是权限要求必须是600,权限给多了给少了都会出现问题)

主配置文件的示例如下:rsyncd.conf(5) manpage (samba.org)

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
[ftp]   # (1)
        path = /var/ftp/./pub   # (2)
        comment = whole ftp area (approx 6.1 GB)
[notebook]
        path=/home/fu-raspberry/Mkdoc/
        auth users=root # (4)
        secrets file=/etc/rsyncd.passwd # (3)
        hosts allow=*
        read only = false
  1. 下面是对ftp工程进行的单独配置,可以有多个工程,客户端传输也是通过工程名
  2. 要同步的路径
  3. 密码文件路径
  4. 用于认证的用户名

密码文件的示例如下,密码为 123456

/etc/rsyncd.passwd
root:123456

配置完成后启动rsync服务即可

systemctl start rsync.service
systemctl status rsync.service

rsync的默认端口为873,启动后在Windows检查是否成功

telnet 192.168.2.101 873

Windows 配置

Windows需要配置Rsync客户端和定时任务

Rsync客户端

Cwrsync下载后解压并添加到环境变量即可使用

执行的命令与Linux相同,参考文档即可:rsync(1) manpage (samba.org)

值得注意的是Windows的路径前需要添加 /cygdrive/

rsync.exe -art --delete --password-file=/cygdrive/d/cwrsync_6.2.11_x64_free/etc/notebook_passwd.txt /cygdrive/d/Users/FuQingchen/Documents/Notebook/docs root@192.168.2.101::notebook #(1)
  1. 这里的notebok就是Linux服务器主配置文件里的notebook工程

Windodw定时任务

Windows定时任务通过计划任务程序实现,Topbook | 高效生活视频书 中有详细的介绍。Win11中进行了更新,但是大差不差。进入计划任务程序后新建Action,然后依次填写框中的三个部分即可创建出定时任务

image-20231014213842275