rsync工作原理 及 部署

Posted liangyawang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync工作原理 及 部署相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

  rsync是一款快速的多功能的 可实现全量及增量的本地或远程的数据同步备份的工具

  rsync在远程之间进行数据传输类似于scp的功能 但又优于scp功能 因为我们的scp每次进行数据传送时都是全量进行备份传送 而rsync可进行增量传送  意思就是将那边没有的进行传送 它每次传送前都有一个比对功能进行比对

  rsync在本地之间进行数据传送类似于cp的功能 但又优于cp的功能 因为cp的每次复制也是全量的复制 而 rsync可进行增量复制 同样是比对功能的体现

本地之间的数据传输 语法 例如:

rsync /etc/hosts /tmp

将/etc/hosts文件推到/tmp目录下 这是本地目录之间的推送

rsync -avz /etc/ /tmp/

 将/etc下的所有文件全部都传送到/tmp下 并保持文件的属性不发生变化

rsync -avz /etc /tmp


rsync -avz /etc/ /tmp

  请注意以上两种方法的区别 上边的一种是将etc连带目录本身全部推送到/tmp下

而下边一种是只将/etc下边的所有目录及文件推送到/tmp下 并不包括目录本身

以上是本地目录之间的推送 接下来是不同主机之间的传输数据

将当前主机推送到远程主机:

rsync -avz /etc/ [email protected]:/tmp/

  这是将/etc/下的所有文件推送到 192.168.92.129主机的tmp目录下

这里默认是22端口 所以我们不需要进行 ‘ssh -p 22’ 

将远程主机的内容拉取到当前主机:

 

rsync -avz -e ‘ssh -p 22‘ [email protected]:/tmp /tmp

  这是将 远成主机192.168.92.129主机的tmp目录下的素有文件拉取到当前主机的tmp目录下

参数说明:

-avz 表示同步文件或目录时属性不发生变化

-P 显示同步的过程 

-e ‘ssh -p 22‘ 表示通过ssh通道22端口进行传输 可省略

[email protected]:/tmp  远程主机的用户 地址 路径

也可以直接在本地的/etc/.hosts文件中进行ip与主机名的映射 然后直接

rsync -avz /etc/ [email protected]:/tmp
这就是将192.168.92.129 与主机名梁亚旺进行映射后 就可以直接填写主机名进行传送

借助ssh通道进行传输时两边都需要有openssh-clients远程支持包 两边都需要有rsync命令 业绩是

都需要 yum -y install rsync 

 接下来是同过socket方式进行传输

部署rsync

mount /dev/sr0 /media/cdrom 

yum -y install rsync
然后 创建并配置/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf


uid = rsync

# 组

gid = rsync

# 程序安全设置

use chroot = no

# 客户端连接数

max connections = 200

# 超时时间

timeout = 300

# 进程号文件位置

pid file = /var/run/rsyncd.pid

# 进程锁

lock file = /var/run/rsync.lock

# 日志文件位置

log file = /var/log/rsyncd.log

##########################################

[backup]

# 使用目录

path = /backup/

# 有错误时忽略

ignore errors

# 可读可写(true或false)

read only = false

# 阻止远程列表(不让通过远程方式看服务端有啥)

list=false

# 允许IP

hosts allow = 192.168.197.0/24

# 禁止IP

hosts deny = 0.0.0.0/32

# 虚拟用户

auth users = rsync_backup

# 存放用户和密码的文件

secrets file = /etc/rsync.password
到此结束

  配置完配置文件接下来我们就要创建共享目录及添加rsync程序用户

useradd -s /sbin/nologin -M rsync

创建rsync程序用户

mkdir /backup

创建共享目录

然后 就可以启动rsync了

rsync --daemon

然后将/backup共享目录的属主修改为rsync

chown -R rsync /backup

  然后创建虚拟账户及密码

echo "rsync_backup:121109" > /etc/rsync.password

  并将密码文件权限改为的600

chmod 600 /etc/rsync.password

  然后开始部署 客户端

只需要安装 rsync 

然后将 服务端的密码写入到对应的位置的文件里

echo "121109" > /etc/rsync.password 

  并且也将权限设置为600 同上边步骤一样

然后就可以去到客户端进行测试 推送测试

rsync -avz /backup/ [email protected].168.197.129::backup --password-file=/etc/rsync.password

命令说明:

-avz:保持稳健各项属性不变,-v显示同步信息 -P显示具体同步过程

/backup/:要推送的内容所在目录

  1. rsync_backup:服务器端rsync服务的同步的用户名(非Linux用户)
  2. 192.168.197.129:rsync服务器IP地址
  3. backuprsync服务器配置文件里的模块
  4. --password-file=/etc/rsync.password:免密码的操作,指定密码文件位置,如果不写,则会要求用户交互式输入密码。(如果想挂定时任务,必须得非交互

我们的rsync的配置文件里还可以添加很多模块用来区分以及 将不同的业务推送到不同的模块去

我们还可以进行拉取 就是在客户端将服务端的模块目录下的文件拉取到当前

比如我自己测试的一条命令复制过来 看一下

rsync -avz [email protected]::mokuai/liu /backup/ --password-file=/etc/rsync.password 
#这就是将rsync服务端共享目录下的liu 拉取到当前主机/bakcup目录下 并且免交互

  太详细的操作步骤在此不做叙述 我有文档 ??

rsync的优点;增量备份 支持socket 

      远程shel通道模式还可以加密传输

缺点:大量小文件进行同步的时候比对时间较长

  同步大文件 10G的打文件优势也会出现问题 

  一次性远程拷贝还可以用scp 大量小文件要打包成一个包在进行传送

 

 

到此结束  详细的排错思路及开发脚本见文档

 











































































以上是关于rsync工作原理 及 部署的主要内容,如果未能解决你的问题,请参考以下文章

sersync+rsync原理及部署

rsync 服务部署详解

Linux运维Rsync排错如何进行?

rsync 服务及部署

linux学习笔记-rsync原理及使用

Linux运维学习之如何进行Rsync排错?