社区编辑申请
注册/登录
CentOS 5.5下rsync使用技巧与权限问题解读 原创
系统 Linux
Rsync的使用和配置方法网上已经有很多,本文主要是跟大家分享一下抚琴煮酒在使用Rsync的过程中总结的一些心得经验,以及出现一些权限问题的时候,应该如何解决。Rsync是一个远程数据同步工具,由于同步速度快、权限保持性等优点,收到很多系统管理员的青睐。

【51CTO独家特稿】搞运维的同行们对远程同步工具Rsync应该都不陌生。Rsync的使用和配置方法网上已经有很多,本文就不用再多说。这篇文章主要是跟大家分享一下我在使用Rsync的过程中总结的一些心得经验,以及出现一些权限问题的时候,应该如何解决。

作者简介:余洪春(博客),网名抚琴煮酒,英文名Andrew.Yu,武汉某外企高级Linux/Unix系统管理员、项目实施工程师,红帽RHCE讲师,擅长负载均衡高可用和中小型证券类和商务网站架构,目前关注网站架构研究及网络安全。

相关阅读:FreeBSD 8上的Rsync同步简易教程

推荐专题:企业内网开发环境部署与管理全攻略(FreeBSD+PHP)

本文使用的测试机器:

rsync服务器 64-bit Centos5.5  192.168.21.41

rsync客户端 64-bit FreeBSD8.1 192.168.21.44

一、什么是rsync?

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync的优点

①可以镜像保存整个目录树和文件系统;

②可以很容易做到保持原来文件的权限、时间、软硬链接等;

③无须特殊权限即可安装;

④优化的流程,文件传输效率高;

⑤可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;

⑥支持匿名传输

二、服务器端的配置

具体的就不多说了,重要的地方说一下。首先检查rsync是否安装:

rpm –q rsync
rsync-2.6.8-3.1

说明rsync已安装,如果提示出现 package rsync is not installed  则说明这个软件报没有安装大家可以使用yum进行安装

另外,关闭防火墙和SElinux,因为是内网中传输,所以这些没必要

service iptables stop && chkconfig iptables off 
setenforce 0

下面分享下我自己定义的配置文件/etc/rsyncd.conf。这个文件是我自己定义的,并不是系统创建的,当然你也可以叫不同的名字;文件我先贴出来,方便线上环境的朋友直接复制,后面再写上详细注释。

uid = nobody
gid = nobody
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only = no
list = no
hosts allow = 192.168.21.0/255.255.255.0
auth users = test
secrets file = /etc/rsyncd.password

注释:

uid = nobody

进行备份的用户,nobody 为任何用户

gid = nobody 

进行备份的组,nobody为任意组

use chroot = no

如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是这个一般不需要,我选择no或false

list = no

不允许列清单

max connections = 200 

***连接数

timeout = 600 

覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。

pidfile = /var/run/rsyncd.pid  

pid文件的存放位置

lock file = /var/run/rsync.lock  

锁文件的存放位置

log file = /var/log/rsyncd.log   

日志文件的存放位置

[backup]  

这里是认证模块名,即跟samba语法一样,是对外公布的名字

path = /backup/

这里是参与同步的目录

ignore errors  

可以忽略一些无关的IO错误

read only = no

允许可读可写

list = no

不允许列清单

hosts allow = 192.168.21.0/255.255.255.0

这里跟samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其它一切

auth users = test 

认证的用户名

secrets file = /etc/rsyncd.password  

密码文件存放地址

注意:对于这个地方的配置文件,虽然解释的很清楚,可是一些朋友始终还会在这里出错,这里我提亮点易错点:

1、[backup]  认证模块名和 path = /backup/ 参与同步的目录

这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。

2、auth users = redhat 认证的用户名 

这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。

3、path = /backup/ 参与同步的目录

这个需要稍后自己要在根目录下自己建

cd /
mkdir backup
chmod –R 777 /backup
echo “test:test” > /etc/rsyncd.password

(这里我设置的是用户名和密码一致)

为了安全起见,我设置他的权限为600

chmod 600 /etc/rsync.password

客户端配置:

echo “test” > /etc/rsyncd.password

这里仅仅只需要密码,不需要用户了,免得要同步时还要手动互动

chmod 600 /etc/rsync.password

配置完了之后,可能会遇到一些权限问题。以下就一些常见的权限问题进行解答:

#p#

问题一:

@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器端的目录不存在或无权限。

创建目录并修正权限可解决问题。

问题二:

@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]

原因:

服务器不存在指定模块。

提供正确的模块名或在服务器端修改成你要的模块以解决问题。

测试

都配置完毕之后就是测试了。在FreeBSD机器上,输入命令

rsync -vzrtop --delete /home/andrewy/etc test@192.168.21.41::backup --password-file=/etc/rsyncd.password

查看同步效果。

注意:我这里是直接以root进行操作。rsync以delete操作时要注意,它会完全同步这边的目录与服务器的目录中的文件,这样会产生一个后果,它会删掉服务器中多余的文件,这样做很危险,如果是线上机器,请慎之又慎,切记!

【编辑推荐】

  1. Linux远程备份工具Rsync使用案例
  2. rsync从linux到linux的文件同步备份
  3. Rsync 参数详解
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2022-06-15 08:21:49

Linux运维工程师

2022-06-07 10:09:42

新技术人工智能5G

2022-05-31 07:40:44

LsyncdCentOS7

2022-06-10 07:45:09

CentOS国产操作系统

2022-05-23 07:48:10

zabbix监控CentOS7

2022-06-20 14:19:55

FedoraEPELLinux

2022-06-07 09:59:21

网络安全安全漏洞

2022-06-23 13:13:36

GitHub开发技巧

2022-06-24 11:34:38

云计算应用安全

2022-06-16 10:14:51

LinuxEmacs编辑器

2022-06-16 10:38:24

2022-05-18 10:52:08

云原生云计算

2022-06-20 13:34:46

漏洞网络攻击

2022-06-22 10:23:42

互联网用户IE浏览器退休

2022-06-15 09:07:33

2022-06-14 23:34:10

Linux安全服务器

2022-05-23 13:30:48

数据胡实践

2022-06-02 07:13:12

Python3.11编程语言

2022-06-20 12:00:43

MySQL数据库升级

2022-06-20 09:01:20

半导体芯片

同话题下的热门内容

用这些开源工具在 Linux 上编辑 PDF 文件Docker Compose:搭建开发环境的好方式在 Linux 上玩电子游戏的三种方式为什么命令行在 Linux 生态系统中如此重要在 Linux 上使用 WineZGUI 运行 Windows 应用和游戏Linux 网络性能的 15 个优化建议如何构建自己的可引导 Linux Live CD用 Curtail GUI 应用轻松压缩 Linux 中的图像

编辑推荐

Linux系统下安装MySQL的步骤详解CentOS与Ubuntu有什么不同?Linux下如何使用minicom USB串口为什么你可能想要略过Ubuntu 17.04?Linux中7个判断文件系统类型的方法
我收藏的内容
点赞
收藏

51CTO技术栈公众号