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/:要推送的内容所在目录
rsync_backup:服务器端rsync服务的同步的用户名(非Linux用户)
192.168.197.129:rsync服务器IP地址
backup:rsync服务器配置文件里的模块
--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工作原理 及 部署的主要内容,如果未能解决你的问题,请参考以下文章