Rsync原理详解及部署(3)

在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。首先,rsync的命令格式可以为:
1)rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST 推送(因为SRC是本地)
2)rsync [OPTION]... [USER@]HOST:SRC DEST 拉取 (因为SRC是服务端)
3)rsync [OPTION]... SRC [SRC]... DEST 拷贝本地文件
4)rsync [OPTION]... [USER@]HOST::SRC [DEST]
5)rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6)rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC[DEST]

SRC:标示源文件(从哪来拷) DES:目标文件(拷到哪里)
rsync命令有六种格式:

第1个命令格式:是将本地的内容推送到服务器端。实例:rsync /tmp rsync@192.168.1.1:www

第2个命令格式:是将服务器的内容拉取到本地端。实例:rsync rsync@192.168.1.1:www /tmp

[对照一下上面的命令格式,一般是有USER@HOST:就表示是服务器端,而没有知识SRC或DEST就表示是客户端。怎么分清楚是拉取还是推送,要看服务端是SRC还是DEST,如果是SRC就表示从服务端拷,就是拉取格式如USER@HOST:SRC。如果是DEST(拷到哪里)就表示推送,拷到服务端USER@HOST:DEST]

第4个和第5个命令同第1、2之间的区别就在于服务端(USER@HSOT)后面是跟上一个: 还是两个::1g个:表示会在服务器端启用以个shell来执行这个命令。而::表示会以deamon模式来执行。

rsync命令同步参数:

先了解下rsync的同步参数选项,先通过本地同步的方式来验证rsync的同步参数。

-v :详细模式输出,传输时的进度等信息

-z :传输时进行压缩以提高效率—compress-level=num可按级别压缩

-r :对子目录以递归模式,即目录下的所有目录都同样传输。

-t :保持文件的时间信息—time

-o :保持文件属主信息owner

-p :保持文件权限

-g :保持文件的属组信息

-P :--progress 显示同步的过程及传输时的进度等信息

-a :归档模式,表示以地柜模式传输文件,并保持文件所有属性相当于-rtopgdl

-e :使用的信道协议,指定替代rshshell程序。例如:ssh

-D :保持设备文件信息

-l --links 保留软连接

--progress :显示备份过程

--delete :删除那些DST中SRC没有的文件

--exclude=PATTERN  指定排除不需要传输的文件模式

-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。

-suffix=SUFFIX 定义备份文件前缀

-stats 给出某些文件的传输状态

-R, --relative 使用相对路径信息 如:rsync foo/bar/foo.c remote:/tmp/ 则在/tmp目录下创建foo.c文件,而如果使用-R参数:rsync -R foo/bar/foo.c remote:/tmp/ 则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。

--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件

--port=PORT 指定其他的rsync服务端口

一般就使用 -avz来进行传输,如果放入脚本中可以吧-v和-P去掉。

客户端命令格式实例:

1.2 从服务器上下载文件

rsync -avz --delete rsycn@192.168.1.1::/tmp /tmp --password-file=/etc/rsync.pas

从本地上传到服务器上去

rsync -avz --delete --progress /tmp rsync@192.168.1.1::/tmp

 

参考实例1:

具体需求:在A-SERVER上以rsync守护进程的方式部署rsync服务,使得所有客户端主机,可以把本地的数据通过rsync的方式据备份到服务器A-SERVER上。也可以通过rsync将数据从A-SERVER抓取到客户端。

拓扑方向:C<---->A A<--->B

服务器端

1)配置/etc/rsyncd.conf

Rsyncd.conf 默认是rsync服务的配置文件

uid = root #此表示rsync以什么用户来读取本地的目。也就是以root用户来进行rsync指定目录的文件读取,写入权限。

gid = root

use chroot = no

max connections = 200 #最大连接数

timeout = 300

pid file = /var/run/rsyncd.pid

locak file = /var/run/rsync.lock

log file = /var/log/rsyncd.log #日志文件

[atong] #当我们读取的时候,就需要使用到模块名

Path = /tmp/ #指定备份的路径

Ignore errors #忽略错误

read only = false #不只读

list = false #不列出rsync目录文件

hosts allow = 10.0.0.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password #认证的密钥文件

man rsyncd.conf查看配置的细节信息

注意:配置的path一定要存在,并且权限是允许uidgid去进行读写才可以。有点类似nfs的本地文件权限,和nfs共享权限一样。

2)配置密码文件:文件格式为用户:密码并且里面的只能以这样的格式,并且是没有空格的。而且在配置文件中的log file 指定的存放路径,就是此密码文件的存放路径,且文件名要正确。密码文件的权限必须是600的权限,root root

3)启动rsync

#rsync –-daemon 表示让rsyncdaemon的模式进行启动

#ps -ef | grep rsync 查看rsync进程是否已经启动

#netstat –lnt | grep 873 查看rsync是否已经启动,并检测端口状态

#lsof –I tcp:873 用来反查端口对应的是什么服务。

拓展:--daemon 表示以守护进程的方式启动

--address 绑定某个ip地址来提供服务,如果有多个ip地址的话

--config=file 更还配置文件路径,而不是默认的/etc/rsyncd.conf

--port=PORT 更改其他端口提供服务器,而不是默认的873端口

以上的几个参数为了解内容,生产环境并不长常用

配置rsync开机启动

echo “/usr/bin/rsync --daemon”>>/etc/rc.local

重启rsync服务pkill rsync&&rsync -daemon

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/bcbfef552aec6dea80bc5c852482e204.html