windows和linux之间文件同步方案的种类及选择
Table of Contents
同步Windows和Linux之间的文件时,常用的方法有:
1.nfs挂载:由于兼容性问题,在实际挂载中会出现很多小问题。
1.inotify + rsync同步:
2.FreeFileSync:
3.storenext系统:storenext价格太贵,个人使用基本可以无视.
4.Linux上搭建Samba,实现windows与Linux文件数据同步
windows系统同步文件到Linux系统
本文将在一台Linux服务器B上搭建rsync文件同步服务,然后在另一台windows电脑A上保持与B的单向同步。
一个具体的案例
某技术公司A的业务,会在Windows服务器上生产pdf电子书、相册等文件,但是公司A本身不具备打印技术,需要转交给传统打印公司B linux来完成线下生产。那么问题来了,公司A怎么将每天生产出来几十个G的文件,以最小的成本传输给B呢?B公司是传统小企业,用的是 linux操作系统。
一个自然而然想到的方案,就是借助第三方云盘服务C,公司A将文件上传C,然后公司B再从C上下载。这个方案可行,但是多了上传到传输节点C的步骤,增加了A上传C的这段时间成本。
一个简单的实施方案,就是在B上搭建rsync服务,然后B来同步。好在rsync提供的windows的版本,让这个方案可行。
Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。Rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。
实现结构:linux作为rsync服务端,Windows作为rsync客户端
OS: ubuntu server 18.04
server: 192.168.64.128
client: 192.168.64.145
部署过程:This man page is current for version 3.1.3 of rsync.
2.Server B公司服务端操作
在服务端,我们要安装rsync,并配置允许客户端访问的参数,如用户名、密码等。然后启动rsync服务,等待客户端访问。
2.1 首先查看rsync是否已经安装
ps -ef | grep rsync
Server系统一般默认已安装。假如出现对应的rsync版本,则说明对应的linux上已有rsync。
ubuntu 18.04默认已安装rsync.
2.2 配置服务端
ubuntu 18.04默认已安装rsync,rsync服务默认不是启动的,我们要修改文件。
sudo vim /etc/default/rsync
RSYNC_ENABLE=true #false改true
在linux上设置rsync server,参考的档:https://download.samba.org/pub/rsync/rsyncd.conf.html
2.2.1 创建一些目录和文件
我们可以参照rsyncd.conf.html。创建一些目录和文件,具体步骤如下:
[root@linuxsir:~]#mkdir /etc/rsyncd 注:在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf 和rsyncd.secrets文件;
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.conf 注:创建rsyncd.conf ,这是rsync服务器的配置文件;
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.secrets 注:创建rsyncd.secrets ,这是用户密码文件;
[root@linuxsir:~]#chmod 600 /etc/rsyncd/rsyncd.secrets 注:为了密码的安全性,我们把权限设为600;必须
[root@linuxsir:~]#ls -lh /etc/rsyncd/rsyncd.secrets
-rw------- 1 root root 14 2007-07-15 10:21 /etc/rsyncd/rsyncd.secrets
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.motd
2.2.2 创建配置文件
rsync没有默认配置文件,需要手动创建/etc/rsyncd/rsyncd.conf 注:创建rsyncd.conf ,这是rsync服务器的配置文件;
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
touch /etc/rsyncd/rsyncd.conf 注:创建rsyncd.conf ,这是rsync服务器的配置文件;
2.2.3.1 创建密码文件
touch /etc/rsyncd/rsyncd.secrets
The /etc/rsyncd/rsyncd.secrets file would look something like this:
tridge:mypass
susan:herpass
2.2.3.2设置密码文件权限
密码文件只有设置为600权限才可以使用.
chmod 600 /etc/rsyncd/rsyncd.secrets
3.启动rsync服务器
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
停止rsync
ps -elf | grep rsync
kill -9 进程号
rm -rf /var/rsync/rsync.pid
server_rsync.sh
#配置rsync
echo "#设置运行rsync 进程的用户" >> /etc/rsyncd/rsyncd.conf
echo "uid=root" >> /etc/rsyncd/rsyncd.conf
echo "#运行进程的组" >> /etc/rsyncd/rsyncd.conf
echo "gid=root" >> /etc/rsyncd/rsyncd.conf
echo "#端口,如888,870等等只要不被占用,防火墙开启就可以,这里需要修改" >> /etc/rsyncd/rsyncd.conf
echo "port=873" >> /etc/rsyncd/rsyncd.conf
echo "#如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺 点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。" >> /etc/rsyncd.conf
echo "use chroot=yes" >> /etc/rsyncd/rsyncd.conf
echo "#最大连接数" >> /etc/rsyncd/rsyncd.conf
echo "max connections = 5" >> /etc/rsyncd/rsyncd.conf
2.B公司客户端操作(linux)
查看rsync是否已经安装
ps -elf | grep rsync
系统一般默认已安装。
A公司客户端操作(windows操作系统)
rsync在windows有两个版本,客户端版本:wRsync和服务版本:cwRsyncServer。
要使windows系统下的文件同步到Linux系统,我们需要安装rsync的windows客户端cwRsync。
cwRsync的下载地址:http://rsync.samba.org
https://rsync.samba.org/download.html
https://www.itefix.net/cwrsync-free-edition
cwRsync client free edition contains a barebone distribution of Rsync for Windows. Unzip archive contents to a directory and update the supplied batch file cwrsync.cmd. That's all you need to be able to initiate rsync from your computer.
安装步骤如下:
下载cwRsync
解压得到的文件夹,将该文件夹加入到环境变量Path中, 比如D:\cwRsync_5.4.1_x86_Free。添加环境变量的方法可参考这里
建立文件夹存放同步的文件,比如D:\pdf_and_album\。
在D:\cwRsync_5.4.1_x86_Free中, 编写批处理脚本pdf_rsync.bat, 脚本内容如下面的"脚本1"。
设置windows的定时任务,执行pdf_rsync.bat。windows设置定时任务的方法见Win XP, Win 7
彻底解决Windows客户端无法访问UNIX Samba共享的方法
https://blog.51cto.com/xiaoe/1342813
Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享。
https://blog.51cto.com/willis/1855556