rsync 同步目录到linux

0 背景

目前因为被拉壮丁,接手一个C/C++的项目,作为一个写java代码的垃圾,搭建C/C++的环境完全是懵逼的,并且为了贴近真是的运行环境,果断使用虚拟机搭建了一个centos7的环境。

所以,目前的操作是,在windows下进行代码的编写,然后想通过同步到虚拟机上,进行打包和测试。哦豁,问我为啥不使用IDE工具来在本地来编写测试,我曾经也这么天真过,但旧项目用的依赖包实在是太多了,其中一些不提供windows版本... 无奈只能在centos上进行测试了

前人栽树,后人乘凉,本文主要是参考文章 blog,以及结合自己实践中的步骤

1 准备工具

  • cwrsync_6.2.1_x64_free 可能需要science上网,如果打不开,聪明的你肯定可以在其他地方找到
  • 一台centos7虚拟机

2 rsync的服务端

rsync安装和服务启动

# 检查是否安装
rpm -qa|grep rsync

# 没有就安装上去
yum install -y rsync

# 设置为开机启动,现在启动它
systemctl enable rsyncd
ssytemctl start rsyncd

服务端的配置文件

rsync涉及的配置主要是下面几个

  • /etc/rsyncd.conf: rsync服务端配置文件
  • /etc/rsyncd.passwd :进行密码验证的账号信息
  • /home/linxd: 待同步的目标目录,就是你要将windows上的文件,同步到哪个目录

/etc/rsyncd.conf目录的东西比较多,不懂的话可以通过man rsyncd.conf命令来查看具体有哪些配置可以配置,这里我贴上我使用的配置吧,也十分的简单

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

max connections = 4
pid file= /var/run/rsyncd.pid
log file=/var/log/rsync.log
exclude = lost+found/
ignore nonreadable = yes

[demo]
       uid=root
       gid=root
       path = /home/linxd
       comment = ftp export area
       use chroot=true
       read only=no
       list=true
       auth users=linxd:rw
       secrets file=/etc/rsyncd.passwd
       hosts allow=*

创建密码文件

echo "linxd:123456" > /etc/rsyncd.passwd

#更改权限为600,这点很重要,一定要做
chmod 600 /etc/rsyncd.passwd

启动rsync服务systemctl start rsyncd

这里我们需要确认rsync的默认端口873是否可以在windows下访问,所以我们需要在windows下运行telnet命令,打开控制台 win+R,输入cmd。
telnet 192.168.56.101 873
如果界面可以很顺利的出现下面这个,就表示可以了
@RSYNCD: 31.0

centos7的防火墙也需要记得关闭掉,最好是直接禁用掉,特别像是我的破电脑,没什么被黑的价值,防火墙直接禁用掉。

另外可能会有SElinux的问题,可以直接修改文件/etc/selinux/config,里面会有三种级别,可以使用disabled,省去一些麻烦。

SELINUX=disabled
SELINUXTYPE=targeted

3 windows客户端

一开始我们下载的windows的rsync的软件安装一下,然后编写一个bat文件,这样你每次双击就可以了,当然网上也有老哥是添加到系统的定时任务里去了,这个都是可以的。
可以将安装的windows版本的rsync加入到环境变量里去

password.txt文件的内容就是你在linux上设置的密码

# rsync.exe -avPz --port 873 --delete --password-file 这些基本都是固定的, 然后就是你本地的文件夹  linux上的文件夹 用户@ip::模块名称
rsync.exe -avPz --port 873 --delete --password-file=/cygdrive/e/cwrsync_6.2.1/password.txt /cygdrive/f/workspace/demo  linxd@192.168.56.101::demo

到此为止,你就可以很开心的吧本地的目录,同步到centos机器上去了

上一篇:使用cwrsync同步windows文件到linux


下一篇:Linux性能优化实战CPU篇之软中断(三)