rsync服务的简介和配置详解

rsync服务的简介和配置详解

一、rsync概述

rsync是类unix系统下的数据镜像备份工具——remote sync。与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份、本地复制,远程同步等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

rsync 命令来同步系统文件之前要先登录remote 主机认证,认证过程中用到的协议有2种:ssh 协议和rsync协议。

二、rsync原理

rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba的主配置文件;Rsync可以通过rsh或ssh使用,也能以daemon模式去运行

在以daemon方式运行时Rsync server会打开一个873 端口,等待客户端去连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份

三、rsync特性

1、能更新整个目录和树和文件系统

2、有选择性的保持原来文件的符号链接、硬链接、文件属性、权限、设备以及时间等

3、对于安装来说,无任何特殊权限要求

4、优化的流程,文件传输效率高

5、能用rsh、ssh或直接端口作为传输入口端口

6、支持匿名rsync同步文件,是理想的镜像工具

四、ssh模式

1、服务器本地同步

实验环境准备:一台服务器(IP地址为192.168.115.120)

[[email protected] ~]# yum -y install rsync

[[email protected] ~]# mkdir -p /server/ssh

[[email protected] ~]# touch /server/ssh/{1..3}.txt

[[email protected] ~]# ls -l /server/ssh/

-rw-r--r-- 1 root root 0 2月  25 18:12 1.txt

-rw-r--r-- 1 root root 0 2月  25 18:12 2.txt

-rw-r--r-- 1 root root 0 2月  25 18:12 3.txt

1、同步目录下的文件

[[email protected] ~]# rsync -av /server/ssh/ /back/

/server/ssh目录里的所有的文件同步至/back目录(不包含/server/ssh本身)

sending incremental file list

./

1.txt

2.txt

3.txt

2、同步目录下的文件及目录本身

[[email protected] ~]# rsync -av  /server/ssh  /back

将/server/ssh目录包括自己整个同步至/back目录

sending incremental file list

ssh/

ssh/1.txt

ssh/2.txt

ssh/3.txt

注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录内容,而不复制目录本身;没有斜线,则会复制目录本身

2、局域网间同步

实验环境准备:一台服务器(IP地址为192.168.115.120

一台服务器(IP地址为192.168.115.130

上面已经在192.168.115.120服务器创建了目录/server/ssh,也创建好了几个文件,现在需要把这些文件同步到192.168.115.130服务器的/client/ssh目录下。

以下命令需要在192.168.115.130服务器上执行

[[email protected] ~]# yum -y install rsync

[[email protected] ~]# mkdir -p /client/ssh

1、远程文件同步到本地,需输入远程主机root密码

[[email protected] ~]# rsync -av 192.168.115.120:/server/ssh/ /client/ssh/

The authenticity of host '192.168.115.120 (192.168.115.120)' can't be established.

ECDSA key fingerprint is c7:79:b3:87:3f:cf:d9:18:34:e7:38:bd:2d:8c:db:36.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.115.120' (ECDSA) to the list of known hosts.

[email protected]'s password:

receiving incremental file list

./

1.txt

2.txt

3.txt

2、本地文件同步到远程,需输入远程主机root密码

[[email protected] ~]# rsync -av /etc/hosts 192.168.115.120:/server/ssh

[email protected]'s password:

sending incremental file list

hosts

3、本地整个目录同步到远程,需输入远程主机root密码

[[email protected] ~]# rsync -av /client/ssh 192.168.115.120:/server/ssh

[email protected]'s password:

sending incremental file list

ssh/

ssh/1.txt

ssh/2.txt

ssh/3.txt

3、局域网指定用户同步

实验环境准备:一台服务器(IP地址为192.168.115.120)

一台服务器(IP地址为192.168.115.130)

在192.168.115.120服务器执行以下命令

[[email protected] ~]# useradd user1

[[email protected] ~]# echo '123'|passwd --stdin user1

[[email protected] ~]# mkdir /home/user1/test

[[email protected] ~]# chown user1:user1 /home/user1/test/

在192.168.115.130服务器执行以下命令

1、把本地文件通过远程的指定普通用户同步到远程服务器

注意:同步的远程服务器目录的用户需要对目录有相应权限,否则报错

[[email protected] ~]# rsync -av /client/ssh/ '-e ssh -l user1' 192.168.115.120:/home/user1/test

[email protected]'s password:

sending incremental file list

./

1.txt

2.txt

3.txt

2、把远程服务器的目录通过普通用户同步到本地的/client/ssh目录

[[email protected] ~]# rsync -av  192.168.115.120:/home/user1/test '-e ssh -l user1 -p 22' /client/ssh/

[email protected]'s password:

receiving incremental file list

test/

test/1.txt

test/2.txt

test/3.txt

五、daemon模式

实验环境准备:一台服务器(IP地址为192.168.115.120)

一台客户机(IP地址为192.168.115.130)

1、daemon模式及配置文件的说明

(1)daemon模式配置文件

rsync以daemon方式运行的时候使用配置文件为rsyncd.conf

(2)使用daemon模式的时候,一定要分清楚服务端和客户端

与平时理解的服务端与客户端不太一样,被同步的一端为服务端,要把文件同步到另一端的源端为客户端

(3)rsyncd.conf文件格式

a、 rsyncd.conf配置文件由模块和参数组成,一个模块以写在方括号里的模块名称开始,直到下一个模块,模块里包含由“name = value”格式的参数。

b、文件是基于行的,每一行代表一个模块名或者参数

(4)常用参数的说明

rsync 服务运行方式需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件

a、全局参数

在全局参数部分也可以定义模块参数,这时该参数的值就是所有模块的默认值

address    独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP

port       指定 rsync 守护进程监听的端口号,默认 873

pid file     rsync 的守护进程将其 PID 写入指定的文件

log file     指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility   指定 rsync 发送日志消息给 syslog 时的消息级别

socket options  指定自定义 TCP 选项

lockfile   指定rsync的锁文件存放路径

timeout    超时时间

b、模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的

1、基本模块参数

path       指定当前模块的同步路径,该参数是必须指定的

comment   给模块指定一个描述

2、模块控制参数

use chroot           在服务运行时要不要把他锁定在家目录,默认为 true

uid和gid            指定rsync运行用户和用户组,默认nobody

use chroot           是否让进程离开工作目录

max connections      最大并发连接数,0为不限制

lock file             指定支持 max connections的锁文件。默认/var/run/rsyncd.lock

list                 指定列出模块列表时,该模块是否被列出。默认为 true

read only          只读选择,默认true

write only         只写选择,不让客户端从服务器上下载文件。默认false

ignore errors     忽略IO错误,默认true

ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。

dont compress      用来指定那些在传输之前不进行压缩处理的文件

3、模块文件筛选参数

exclude     由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。

exclude from 指定包含 exclude 规则定义的文件名,服务器从中读取 exclude 列表定义

include  指定多个由空格隔开文件或目录(相对路径),并将其添加到 include 列表中。

include from  指定一个包含 include 规则定义的文件名,服务器从 中读取 include 列表定义

4、模块用户认证参数

auth users  执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开,默认为匿名方式

secrets file  指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。文件权限必须是 600

strict modes  表示是否工作在严格模式下,严格检查文件权限等相关信息,默认为true

5、模块访问控制参数

hosts allow  指定哪些主机客户允许连接该模块。默认值为 *

hosts deny  指定哪些主机客户不允许连接该模块

说明:

a、二者都不出现时,默认为允许访问

b、只出现hosts allow,定义白名单,但没有被匹配到的主机由默认规则处理,即为允许

c、只出现hosts deny,定义黑名单,出现在名单中的都被拒绝

d、二者同时出现,先检查hosts allow,如果匹配就allow,否则检查hosts deny,如果匹配则拒绝,如是二者都不匹配,则由默认规则处理,即为允许

6、模块日志参数

transfer logging 使 rsync 服务器将传输操作记录到传输日志文件。默认值为false

log format 指定传输日志文件的字段。默认为:”%o %h [%a] %m (%u) %f %l”

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“;

可以使用的日志格式定义符如下所示:

%o 操作类型:”send” 或 “recv”

%h 远程主机名

%a 远程IP地址

%m 模块名

%u 证的用户名(匿名时是 null)

%f 文件名

%l 文件长度字符数

%p 该次 rsync 会话的 PID

%P 模块路径

%t 当前时间

%b 实际传输的字节数

%c 当发送文件时,记录该文件的校验码

2、服务启动方式

daemon模式启动的时候必须加参数--daemon

[[email protected] ~]# yum -y install rsync

[[email protected] ~]# rsync --daemon

[[email protected] ~]# netstat -antp|grep 873

tcp    0    0 192.168.115.120:873     0.0.0.0:*     LISTEN     11755/rsync

3、rsync服务端配置

[[email protected] ~]# vim /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

address = 192.168.115.120

port 873

uid = root

gid = root

use chroot = no

max connections = 5

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

#exclude = lost+found/

transfer logging = yes

timeout = 600

ignore nonreadable = yes

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[share]

path = /server/rsync

comment = it is a share file

gnore errors = yes

read only = no

write only = no

hosts allow = 192.168.115.0/24

hosts deny = 192.168.100.0/24

list = yes

auth users = user1

secrets file =/etc/rsync.passwd

4、创建相应的目录和密码文件,并设置密码文件的权限为600

[[email protected] ~]# mkdir /server/rsync      创建同步的目录

[[email protected] ~]# echo 'user1:123' > /etc/rsync.passwd    创建密码文件

[[email protected] ~]# chmod  600  /etc/rsync.passwd       设置密码文件权限为600

5、重新启动rsync服务方法

先关闭rsync进程 kill -s QUIT 进程号,再启动时会启动不成功,这时候要删除进程号的文件

[[email protected] ~]# netstat -antp|grep 873      查看端口已经启动

tcp        0      0 192.168.115.120:873     0.0.0.0:*   LISTEN      11755/rsync

[[email protected] ~]# ps aux|grep rsync      查看进程号

root     11755  0.0  0.0 114644   376 ?        Ss   21:30   0:00 rsync --daemon

root     11885  0.0  0.0 112664   972 pts/0    R+   23:20   0:00 grep --color=auto rsync

[[email protected] ~]# kill -s QUIT 11755     停止进程并重启

[[email protected] ~]# rsync --daemon

[[email protected] ~]# failed to create pid file /var/run/rsyncd.pid: File exists   重启报错

[[email protected] ~]# rm -f /var/run/rsyncd.pid     删除进程文件

[[email protected] ~]# rsync --daemon        再次启动就会成功了

[[email protected] ~]# netstat -antp|grep 873    查看端口是否开启

tcp        0      0 192.168.115.120:873     0.0.0.0:*     LISTEN      11892/rsync

6、在服务器创建两个文件,下面测试会用到

[[email protected] ~]# vim /server/rsync/1.txt

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

[[email protected] ~]# vim /server/rsync/2.txt

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

7、客户端测试

(1)下行同步的两种方法

rsync -avz 用户名@服务器地址::共享模块名 /本地目录

rsync -avz rsync://用户名@服务器地址/共享模块名 /本地目录

[[email protected] ~]# yum -y install rsync

[[email protected] ~]# mkdir /client/rsync

把服务器文件同步到客户端(本地)方法1:

[[email protected] ~]# rsync -avz [email protected]::share /client/rsync/

Password:

receiving incremental file list

./

1.txt

2.txt

sent 97 bytes  received 227 bytes  92.57 bytes/sec

total size is 130  speedup is 0.40

[[email protected] ~]# ls -l /client/rsync/

-rw-r--r-- 1 root root 64 2月  25 23:38 1.txt

-rw-r--r-- 1 root root 66 2月  25 23:39 2.txt

把服务器文件同步到客户端(本地)方法2

[[email protected] ~]# rsync -avz rsync://[email protected]/share /client/rsync/

Password:

receiving incremental file list

./

1.txt

2.txt

sent 97 bytes  received 227 bytes  92.57 bytes/sec

total size is 130  speedup is 0.40

[[email protected] ~]# ls -l /client/rsync/

-rw-r--r-- 1 root root 64 2月  25 23:38 1.txt

-rw-r--r-- 1 root root 66 2月  25 23:39 2.txt

(2)上行同步的两种方法

rsync -avz  /本地目录/* 用户名@服务器地址::共享模块名

rsync -avz  /本地目录/*  rsync://用户名@服务器地址/共享模块名

把客户端(本地)文件同步到服务器方法1:

[[email protected] ~]# rsync -avz /client/rsync/* [email protected]::share

Password:

sending incremental file list

1.txt

2.txt

sent 138 bytes  received 46 bytes  52.57 bytes/sec

total size is 130  speedup is 0.71

把客户端(本地)文件同步到服务器方法2:

[[email protected] ~]# rsync -avz /client/rsync/* rsync://[email protected]/share

Password:

sending incremental file list

sent 40 bytes  received 8 bytes  13.71 bytes/sec

total size is 130  speedup is 2.71

上面没有同步是因为服务器有该文件,下面我们把服务器端的文件删除发现就会同步成功。

[[email protected] ~]# rsync -avz /client/rsync/* rsync://[email protected]/share

Password:

sending incremental file list

1.txt

2.txt

sent 138 bytes  received 46 bytes  52.57 bytes/sec

total size is 130  speedup is 0.71

rsync相关参数说明:

-a   参数,相当于-rlptgoD,

-r   是递归

-l   是链接文件,意思是拷贝链接文件

-i   列出 rsync 服务器中的文件

-p  表示保持文件原有权限

-t   保持文件原有时间

-g  保持文件原有用户组

-o  保持文件原有属主

-D  相当于块设备文件

-z  传输时压缩

-P  传输进度

-v  传输时的进度等信息,和-P有点关系

(3)让客户端与服务器文件保持完全一致

[[email protected] rsync]# rsync -avz --delete [email protected]::share /client/rsync/

通过调用密码文件让客户端与服务器文件保持完全一致

[[email protected] ~]# echo "123"> /tmp/rsync.password

[[email protected] ~]# chmod 600 /tmp/rsync.password

[[email protected] ~]# rsync -avz --delete --password-file=/tmp/rsync.password [email protected]::share /client/rsync/

通过定时任务让客户端自动同步

[[email protected] ~]# crontab -e

10 0 * * * rsync -avz --delete --password-file=/tmp/rsync.password [email protected]::share /client/rsync/

[[email protected] ~]# crontab -l

8、免密码验证

(1)在客户端生成密钥对并把公钥文件上传到服务器

[[email protected] ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

9b:da:52:44:d3:10:26:d8:55:98:4c:30:d3:72:ff:ec [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

|     o=**B.      |

|    . o=O .      |

|       + o       |

|        . .      |

|       .S  o     |

|        .o  o    |

|       .o  .     |

|      .o    E    |

|      ...        |

+-----------------+

[[email protected] ~]# ssh-copy-id [email protected]

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"

and check to make sure that only the key(s) you wanted were added.

(2)验证从服务器下载文件到本地是否需要密码

[[email protected] ~]# rsync -avz [email protected]:/server/rsync /client/rsync/

receiving incremental file list

rsync/

rsync/1.txt

rsync/2.txt

sent 53 bytes  received 179 bytes  464.00 bytes/sec

total size is 130  speedup is 0.56

可以看到,免密码验证已经成功了,从服务器下载文件到本地已经不需要密码了。

原文地址:http://blog.51cto.com/longlei/2082745

时间: 2024-10-14 04:40:31

rsync服务的简介和配置详解的相关文章

第二十天 TCP 及socket通信原理、http协议及web服务、httpd核心配置详解

一.TCP及socket通信原理详解 二.http协议及web服务原理(一) 三.http协议及web服务原理(二) 四.httpd核心配置详解 1.tcp.udp是一种传输协议,实现进程地址标记,套接字是一个虚拟设备,用来表明主机上的某个进程      众所周知:0-1023:管理员才有权限使用,永久地分配给某应用使用(由IANA分配)      注册端口:1024-41951:只有一部分被注册,分配原则上非特别严格.      动态端口或私有端口:41952-65535:由内核分配临时端口,

web服务之httpd-2.2配置详解01

本文旨在复习httpd2.2常用配置.复习http协议相关知识.httpd2.2配置文件相关配置介绍.配置httpd的身份验证.配置httpd虚拟主机 等等. 知识储备: http协议知多少? http协议: HTTP:hyper text transfer protocol,超文本传输协议,是互联网上应用最为广泛的一种网络协议.HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准.通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接.HTTP

Rsync服务器的安装与配置详解

一.Rsync简介 1.1什么是Rsync Rsync是一款快速的,开源的,多功能的,可以实现全量和增量的远程和本地的数据同步和数据备份的工具. 全量的概念是:全部备份. 增量的概念是:差异化备份.对上一次基础上,对更新的部分作备份. 1.1.2    Rsync简介 Rsync具有可以使本地和远程的两台主机之间的数据快速同步镜像远程备份的功能,这个功能类似ssh带scp的命令,但是有优于scp的功能,scp每次都是全量拷贝,而rsync是增量拷贝. Rsync还可以在本地主机的不同文件或者目录

ftp服务工作原理及配置详解终极篇

VSFTPD使用指南final篇 基本配置 1. 匿名服务器的连接(独立的服务器)在/etc/vsftpd.conf(或在/etc/vsftpd/vsftpd.conf)配置文件中添加如下几项:Anonymous_enable=yes            (允许匿名登陆)Dirmessage_enable=yes             (切换目录时,显示目录下.message的内容)Local_umask=022                      (FTP上本地的文件权限,默认是07

linux服务基础之nginx配置详解

nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/p/10848623.html nginx相关配置: 主配置段的指令: 正常运行的必备配置 1. user USERNAME [GROUPNAME] 指定运行worker进程的用户和组: 比如:user nginx nginx; 2. pid /path/to/pid_file; 指定nginx守护

集群技术(二) MySQL集群简介与配置详解

when?why? 用MySQL集群? 减少数据中心结点压力和大数据量处理(读写分离),采用把MySQL分布,一个或多个application对应一个MySQL数据库.把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面.其他不共享的数据还维持在各自分布的MySQL数据库本身中.  集群MySQL中名称概念   MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的.MySQL群集中有三种节点:管理节点.数据节点和SQL节点.群集中的某计算机可能是某一

Rsync服务配置详解,实现服务器间数据同步!

1.1 什么是rsync? rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次传送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝. 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH伺服文件.SSH情况下,rsync客户端运行程序必须同

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

springCloud(14):使用Zuul构建微服务网关-路由端点与路由配置详解

一.Zuul的路由端点 当@EnableZuulProxy与SpringBoot Actuator配合使用时,Zuul会暴露一个路由管理端点/routes.借助这个端点,可以方便.直观地查看以及管理Zuul的路由. /routes端点的使用非常简单,使用GET方法访问该端点,即可返回Zuul当前映射的路由列表:使用POST方法访问该端点就会强制刷新Zuul当前映射的路由列表(尽管路由会自动刷新,Spring Cloud依然提供了强制立即刷新的方式). 由于spring-cloud-starter