同步windows服务器软件至linux服务器实现
1、 一般linux上默认安装有rsync软件
一.查看及安装
查看是否安装rsync
命令# rpm –qa | grep rsync
<!--[endif]-->
假如出现对应的rsync版本,则说明对应的linux上已有rsync。
否则,需要手动下载安装。具体的方式有
软件安装过于简单,现在Linux各大发行版都提供这个软件包,当然您也可以自己编译安装,在目前的情况下,我看没太大的必要;
[root@linuxsir:beinan]$ sudo apt-get install rsync 注:在debian、ubuntu 等在线安装方法;
[root@linuxsir:beinan]# slackpkg install rsync 注:Slackware软件包在线安装;
[root@linuxsir:beinan]# yum install rsync 注:Fedora、Redhat等系统安装方法;
其它Linux发行版,请用相应的软件包管理方法来安装;如果是源码包,也就是用下面的办法;
[root@linuxsir:/home/beinan]# tar xvf sync-xxxx.tar.gz 或sync-xxx.tar.bz2
[root@linuxsir:/home/beinan]# cd sync-xxx
[root@linuxsir:/home/beinan/sync-xxx]# ./configure --prefix=/usr ;make ;make install 注:在用源码包编译安装之前,您得安装gcc等编译开具才行;
二修改rsync的配置文件
可以看到rysnc服务是关闭的(disable = yes),这里把它开启,把disable的值改为no
三、rsync服务器的配置文件rsyncd.conf ;
我们可以参照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
下一就是我们修改 rsyncd.conf 和rsyncd.secrets 和rsyncd.motd 文件的时候了;
rsyncd.conf 是rsync服务器主要配置文件,我们来个简单的示例;比如我们要备份服务器上的 /home 和/opt ,在/home中,我想把beinan和samba目录排除在外;
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
uid = root #这个用户是系统用户,当rsync客户端连接上服务器后,会映射成这个用户上传或下载
use chroot = no
max connections = 4 #最大允许并法链接数
strict modes = yes
port = 873 #rsync服务对应的端口
[demo] ## 模块名字,自己命名必须指定且唯一
path = /home/pigga/test #需同步的文件夹
comment = This is test
auth users = scihoo #rsync的用户名是客户端使用的,连接成功后会映射到上面的uid用户
uid = root #这个用户是系统用户,当rsync客户端连接上服务器后,会映射成这个用户上传或下载
gid = root #组名效果同上
secrets file = /etc/rsyncd/rsyncd.secrets #密码所在文件
read only = no #不是只读模式这样用户就有上传的权限了
list = yes #用户具有list目录的权限,上传之后的目录可见,且列表展示
hosts allow = * #允许所有网段的地址连接至服务器,可以指定具体的ip以/分割
注:关于 auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开;比如 auth users = beinan , linuxsir
密码文件:/etc/rsyncd/rsyncd.secrets的内容格式;
用户名:密码 例:
Scihoo:scihoo
注:这里的密码值得注意,为了安全,你不能把系统用户的密码写在这里。比如你的系统用户 linuxsir 密码是 abcdefg ,为了安全,你可以让rsync 中的linuxsir 为 222222 。这和samba的用户认证的密码原理是差不多的;
rsyncd.motd 文件;
它是定义rysnc 服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的 linuxsir.org ftp ……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个 rsyncd.motd的内容为:
+++++++++++++++++++++++++++
+ linuxsir.org rsync 2002-2007 +
+++++++++++++++++++++++++++
四.启动rsync 服务器及防火墙的设置;
4.1 启动rsync服务器;
启动rsync 服务器相当简单,–daemon 是让rsync 以服务器模式运行;
[root@linuxsir:~]#/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
注:如果你找不到rsync 命令,你应该知道rsync 是安装在哪了。比如rsync 可执行命令可能安装在了 /usr/local/rsync/bin/rsync目录;也就是如下的命令;
[root@linuxsir:~]#/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
4.2 rsync服务器和防火墙;
Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
[root@linuxsir:~]#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
[root@linuxsir:~]#iptables -L 查看一下防火墙是不是打开了 873端口;
我在这里通过图形界面在防火墙上添加端口的方式。
查看是否开启了对应端口 也可以使用netstat –an 然后在另外的机器使用telnet判断是否可以通过防火墙。
另:查看系统进程。Ps –ef,查看是否开启rsync
2、 window客户端
在windows机器上安装cwRsyncServer客户端,本地使用cwRsyncServer_4.0.6_Installer.zip。可在互联网下载;
安装完毕后,我们写个批处理来实现下载和上传的功能
上传:即将window指定路径的文件上传至linux
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
@ECHO OFF
d:
cd "Program Files\cwRsyncServer\bin"
rsync -vzrtopg –progress --delete /cygdrive/d/websoft/ scihoo@192.168.1.43::demo --password-file=/cygdrive/d/rsyncd.secrets
其中/cygdrive/e/表示的是windows的E盘
注:该部分d/websoft/加上/为不包含websoft的上传,去掉/为带有websoft文件夹的上传
d:/rsyncd.secrets的密码文件,里面只包含密码,不包含用户
下载:即从linux服务器指定路径下载到window客户端
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
@ECHO OFF
d:
cd "Program Files\cwRsyncServer\bin"
rsync -vrtopg --progress --delete scihoo@192.168.1.43::demo /cygdrive/d/websoft/
3、密码每次都需要手动输入的解决方案
这算是个老问题了,每次在windows主机上通过cwrsync向服务端同步数据的时候都会遇到,这次总结记录下吧。错误代码为:
password file must be owned by root when running as root
在linux上设置rsync的时候,需要将passwordfile设置为600权限。所以在windows上我们也可以用其自带的chmod.exe 执行,其cwrsync客户端默认安装的位置是C:\Program Files\cwRsync\bin ,具体做法如下:
“C:\Program Files\cwRsync\bin” 600/cygdrive/c/etc/password.txt
执行完以后,如果还有错误提示,可以使用chown.exe命令将其文件的属主做下更改。具体操作如下:
服务端:
chmod.exe -c 600/cygdrive/c/etc/password.txt
chown.exe SvcCWRSYNC/cygdrive/c/etc/password.txt
SvcCWRSYNC为windows上的cwrsync-server安装时默认新建的一个用户。
客户端:
chmod.exe -c 600/cygdrive/c/etc/password.txt
chown.exe administrator /cygdrive/c/etc/password.txt
默认客户端上没有chown.exe这个命令,直接从cwrsync-server的安装路径里拷贝一个过来就可以用了。windows的默认用户一般都是administrator,如果你不是以administrator登录的,请将上面命令中的administrator改成你当前使用的用户名。
问题:
可能会遇到的问题:
问题一:
@ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端的目录不存在或无权限。
创建目录并修正权限可解决问题。
尝试通过运行 setsebool -P rsync_disable_trans on
问题二:
@ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败
问题三:
@ERROR: Unknown module ‘tee_nonexists’ rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器不存在指定模块。
提供正确的模块名或在服务器端修改成你要的模块以解决问题。
问题四:
rsync: link_stat "." (in *** ) failed: Permission denied (13)
*** 是指你同步的某一个文件夹模块的名字,一般在服务端进行同步时会碰到,这个问题是因为一些Linux的SELinux默认开启了Enforce模式,将其关闭即可 直接执行getenforce 0 , 问题即可解决
问题五:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
原因:
对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开。
问题六:
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
原因:
/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。
问题七:
rsync: chown "" failed: Invalid argument (22)
原因:
权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)
问题八:
password file must not be other-accessible
continuing without password file
Password:
原因:
这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd
编外:修改rsync服务端的端口
1、vi /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
port = 9999 #加上这行
log_on_failure += USERID
}
2、vi /etc/services
rsync 9999/tcp # rsync 增加这行
rsync 9999/udp # rsync 增加这行
#rsync 873/tcp # rsync 注释这行
#rsync 873/udp # rsync 注释这行
3、测试
rsync -Rrav testfile $DIP::${MAIN} –port 9999
ubuntu下
vi /etc/default/rsync
RSYNC_OPTS='--port=80' #修改这行
启动rsync
/etc/init.d/rsync start
相关推荐
- **配置slave区域**:为了实现与Windows Server 2008的同步,需要在Linux系统上的BIND配置文件(通常为`/etc/bind/named.conf`或`/etc/bind/named.conf.local`)中定义slave区域。 **具体配置示例**: - 添加zone...
"Linux与Windows间文件定时自动同步的实现" 这篇文章讨论了在Linux和Windows操作系统之间实现文件夹的定时自动同步。作者介绍了使用Unison软件来实现文件夹的同步,并提供了在Windows和Linux系统下的操作指南。 ...
支持监控本地目录下变化的文件,实时同步到远程目标主机,本地主机可以为windows或者linux,目标主机只能为linux;python语言编写,提供源码,程序说明,windows版本已经编译打包进去了,可以直接使用,linux版本...
### Linux与Windows时间同步 在跨平台开发或运维过程中,保持不同操作系统的服务器时间一致是一项基本但又重要的任务。本文将详细介绍如何通过Network Time Protocol(NTP)协议实现Linux与Windows系统之间的时间...
标题中的“跨Windows和Linux操作系统的开源文件同步工具”指的是一个能够跨越这两种操作系统平台的软件,主要用于实现文件和目录的同步。这样的工具通常是为了确保在不同的系统之间保持数据的一致性和完整性,尤其...
本篇将详细介绍Windows文件同步工具及其使用方法,尤其是通过cwRsync这一高效实用的工具。 标题中的"Windows文件同步工具"主要指的是用于在不同Windows服务器之间进行文件和目录同步的应用程序。这类工具的主要功能...
Unison是一款强大的、跨平台的文件同步工具,它支持Linux和Windows操作系统,使得用户能够在不同系统之间方便地进行文件和目录的同步。Unison的独特之处在于它的双向同步功能,这意味着两个同步端的数据改动都可以被...
它也可以帮助我们在不同的操作系统之间进行文件同步和备份,提高数据安全性。 跨平台复制的挑战 然而,跨平台复制也存在一些挑战。例如,我们需要确保文件系统的兼容性,避免文件损坏和丢失。此外,我们还需要确保...
在Linux和Windows之间进行文件互传是日常工作中常见的需求,特别是在多...不过,对于大量文件传输或频繁操作,可能需要考虑使用更高级的文件同步工具,如rsync或Samba,它们能提供更高效、自动化和安全的文件同步功能。
在IT行业中,跨平台的文件传输是常见的任务之一,尤其是当涉及到Windows系统和Linux系统之间的交互时。"Windows上传文件到Linux的工具"这个话题恰好聚焦于如何在两种操作系统之间高效地进行文件交换。其中,...
标签“Windows向Linux文件传输工具”再次强调了软件的主要功能,即它专门设计用于解决从Windows到Linux或反之亦然的文件传输需求。 压缩包中的文件“winscp403setup.exe”是WinSCP的安装程序,这是一款非常流行的...
今天我们将深入探讨一款被誉为“非常好用的文件同步工具”——FreeFileSync,了解其功能特性以及如何在Windows系统上进行安装与使用。 FreeFileSync是一款免费且开源的文件同步软件,它支持在两个指定的文件夹之间...
### rsync成功实现多台Windows文件同步的知识点详解 #### 一、rsync简介与应用场景 **rsync**是一款开源的文件同步工具,最初为Linux/Unix环境设计,后被移植到Windows平台。它能够高效地同步文件和目录,特别适用...
6. **文件同步和差异工具**:例如Unison或rsync,它们不仅可以同步文件,还可以帮助比较文件大小的差异,从而监控变化。 了解这些方法后,你可以根据具体需求选择合适的工具和技术来实现Windows对Linux文件大小的...
实现这样的文件同步脚本,通常会涉及到以下DOS命令: 1. `xcopy`:这是一个用于复制文件和目录的命令,具有丰富的选项,例如 `/s` 表示复制子目录,`/e` 包括空目录,`/d` 只复制更新的文件,`/i` 如果目标目录不...
### Samba + Sersync2 + Rsync 实现 Windows 和 Linux 文件同步 #### Samba Samba 是一种在 Linux 或 Unix 类系统上实现 SMB 协议的软件包,主要用于实现 Linux 与 Windows 之间的文件共享及打印服务。通过 Samba ...
在IT行业中,跨平台文件同步是一项常见的需求,特别是在混合环境如Windows与Linux之间。`rsync`是一个功能强大的文件同步工具,广泛应用于Linux系统中。本文将详细介绍如何使用`rsync`实现在Windows与Linux之间的...
在Windows操作系统中,将文件上传到Linux系统通常需要借助一种称为“文件传输协议”(FTP)的工具,或者更安全的“安全文件传输协议”(SFTP)。在提供的信息中,"winscp407setup.exe"是一个重要的文件,它是WinSCP...