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

  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/ root@192.168.92.129:/tmp/



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

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

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

 



rsync -avz -e 'ssh -p 22' root@192.168.92.129:/tmp /tmp



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

参数说明:

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

-P 显示同步的过程 

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

root@192.168.92.129:/tmp  远程主机的用户 地址 路径

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



rsync -avz /etc/ root@liangyawang:/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
到此结束


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/.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. backup:rsync服务器配置文件里的模块
4. 
--password-file=/etc/rsync.password:免密码的操作,指定密码文件位置,如果不写,则会要求用户交互式输入密码。(如果想挂定时任务,必须得非交互

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

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

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



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



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

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

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

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

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

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

 

 

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