受欢迎的博客标签

windows和linux之间文件同步方案的种类及选择

Published

windows和linux之间文件同步方案的种类及选择

windows的SMB协议与linux的NFS协议。

NAS的存储解决方案

同步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