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机器上去了