RSYNC远程同步服务


rsync安装
yum -y install rsync
master:
 vim /etc/rsyncd.conf
uid = nobody        //用户名
gid = nobody        //组别
use chroot = yes      //禁锢在源目录
address = 192.168.200.112      //监听地址
port = 873          //监听端口
log file = /var/log/rsyncd.log       //日志文件位置
pid file = /var/run/rsyncd.pid      //存放进程ID文件位置
hosts allow =192.168.200.0/24     //允许访问的客户端地址
[wwwroot]                 //共享模块名称
   path = /var/www/html         //源目标的实际路径
   comment = Document Root os www.crushlinux.com     //描述信息
   read only = yes              //是否为只读
   dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z   //同步时不再压缩的文件类型
   auth users = backuper       //备份授权用户
   secrets file = /etc/rsyncd_users.db             //存放账户信息的数据文件
保存退出
vim/etc/rsyncd_users.db
 backuper:pwd123
保存退出
chmod 600/etc/rsyncd_users.db
ls -ld /var/www/htm/
drwxr-xr-x2 root root 64月212018/var/www/html/
rsync  -daemon
netstat -lnpt |grep :873
关闭rsync
kill $(cat /var/run/rsyncd.pid)
编写rsync服务控制脚本:
vim /etc/init.d/rsyncd
#!/bin/bash
#chkconfig:2345 80 20
#description:sync server
start () {
netstat -lnpt | grep -q :873
[ $? -ne 0 ] && rsync --deamon
}
stop () {
netstat -lnpt | grep -q :873
[ $? -ne 0 ] && kill $(cat /var/run/rsyncd.pid) && rm -rf /var/run/rsyncd.pid
}
status () {
netstat -lnpt | grep -q :873
[ $? -ne 0 ] && echo "Rsync Daemon is running."
}
case $1 in
start)
start
;;
stop)
stop
;;
restart|reload)
$0 stop
$0 start
;;
status)
status
;;
*)
echo "用法:$0{START|STOP|RESTART|RELOAD|STATUS}"
esac
 chmod +x /etc/init.d/rsyncd
 chkconfig --add rsyncd
 systemctl start rsyncd
-------------------------------------------
本地备份:备份源和发起端可以是一台机器
第二台主机客户端: 
yum -y install rsync
 rsync  /etc/fstab  /opt/
rsync -rl  /etc/fstab /boot/grub/  /opt/
 rsync -avz backuper@192.168.200.112::wwwroot /root
Password:  
 rsync -avz rsync://backuper@192.168.200.112/wwwroot/ /root/
                   rsync备份源的无交互验证方式:
(1)通过export RSYNC_PASSWORD变量保存密码,rsync命令执行时可以自动读取该变量的值,在需要时发送给rsync服务器来进行验证
 export RSYNC_PASSWORD=pwd123
 rsync -avzH --delete backuper@192.168.200.112::wwwroot /myweb
(2)通过--password-file选项指定存储密码的文件
相对于SSH源的免交互措施来说,使用变量存放密码显得不够安全,因此可在脚本中使用,并将脚本的权限严格控制,避免密码泄漏。
 echo “pwd123”  > /etc/server.pass
 chmod 600 /etc/server.pass
 rsync -az --delete --password-file=/etc/server.pass backuper@192.168.200.112::wwwroot /myweb
==================================================
RSYNC远程同步服务
rsync(Remote Sync,远程同步)是一个开源的快速安全高效的异地备份工具,可以在不同的主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩。非常适合异地备份,镜像服务等应用,是一种常用的文件备份工具。
rsync的官方站点:https://rsync.samba.org/
FTP:文件传输协议
samba:文件共享服务,共享文件夹
rysnc一般系统都会有,如果没有可以用yum安装rysnc
rysnc在生产环境中的使用场景:
1、用于数据异地备份
2、用于WEB集群中节点数据的批量更新
3、用于本地YUM服务器与互联网镜像站软件同步
在远程同步任务中,负责发起rsync同步操作的客户机成为发起端,而负责响应来自客户机的rsync同步操作的服务器成为备份源(同步源),同步源负责提供文档的原始位置,发起端对该位置具有读或写权限
rsync作为同步源时以守护进程运行,为其他客户端提供备份源。配置rsync同步源需要建立配置文件/etc/rsyncd.conf,备份账号信息,然后将rsync程序以守护进程(--daemon选项)方式运行。
rsync两种源模式:
SSH备份源
rsync备份源
一、配置rsync备份源192.168.200.111
rsync不仅用作远程同步发起端(客户端),也可以作为守护进程(服务端),为其他客户机提供备份源。
1、建立/etc/rsyncd.conf配置文件
2、为备份账户创建数据文件
3、启动rsync服务进程
1、建立/etc/rsyncd.conf配置文件,以源目录/var/www/html/,备份帐号backuper作为事例:
vim /etc/rsyncd.conf
uid = nobody      (用户名)
gid = nobody      (组名)
use chroot = yes     (禁锢在源码目录)
address = 192.168.200.111   (监听地址)
port = 873      (监听端口)
log file = /var/log/rsyncd.log  (日志文件位置)
pid file = /var/run/rsyncd.pid  (PID文件位置)
hosts allow = 192.168.200.0/24  (允许访问地址)
[wwwroot]      (共享名,给访问者看的,本地目录可以不是这个名字)
        path = /var/www/html   (文件真实路径)
        comment = Document Root os www.laowang.com  (描述信息,可以随便写)
        read only = yes         (只读)
        dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z   (这些结尾的文件不压缩)
        auth users = backuper        (授权备份用户名,和系统用户没有关联)
        secrets file = /etc/rsyncd_users.db     (保存auth users用户名和对应密码)
vim /etc/rsyncd_users.db (编辑用户名和密码)
backuper:pwd123   (用户名和密码用:分隔)
chmod 600 /etc/rsyncd_users.db (由于保存密码,权限要给的严格一些)
rsync --daemon (启动服务)
netstat -lnpt | grep 873  (过滤端口号873)
关闭服务
kill $(cat /var/run/rsyncd.pid)
如果关闭服务失败,是因为PID文件没有删除,删除即可正常开启或者关闭
编写服务控制脚本
二、使用rsync备份工具 192.168.200.112
有了同步源服务器之后,就可以使用rsync工具来执行远程同步。以下操作都是客户端(发起端)执行。
本地备份:备份源和发起端可以是一台机器
rpm -q rsync (要保证第二台机器上有rsync)
rsync /etc/fstab /opt    
rsync -rl /etc/fstab /boot/grub /opt (把/etc/fstab /boot/grub两个文件同步到/opt下)
rsync的命令格式及备份选项:
命令格式:rsync [选项]... 原始位置 目标位置
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号连接文件
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件
--checksum:根据对象的校验和来决定是否跳过文件
备份源的表示方法:
在执行远程同步任务时,rsync命令需要制定备份源服务器中的资源位置。rsync同步源的资源表示方式有两种:
用户名@主机地址:共享模块名称
rsync://用户名@主机地址/共享模块名称
192.168.200.111服务器端创建共享文件夹
mkdir -pv /var/www/html
在共享文件夹下创建测试文件
touch /var/www/html/test1.txt
192.168.200.112客户端,发起端下载共享目录测试文件
两种格式:
1、rsync -avz backuper@192.168.200.111::wwwroot /root
2、rsync -avz rsync://backuper@192.168.200.111/wwwroot /root
rsync默认支持增量,同步修改过或者新创建的文件
优点:支持增量,每次传输的数据量不是很大
缺点:如果源数据量特别大的时候,rsync传输特别慢,需要把全部文件扫描一遍,来识别哪些文件有变动,那些文件新增加的,然后再传输。
编写rsync备份脚本:(在客户端操作)
rsync备份源的无交互验证方式
1、通过export RSYNC_PASSWORD变量保存密码,rsync命令执行时可以自动读取该变量的值,在需要时发送给rsync服务器来进行验证
export RSYNC_PASSWORD=123456
2、通过 --password-file选项指定存储密码的文件
vim /etc/server.pass (建立密码存储文件)
123456
chmod 600 /etc/server.pass
相对于SSH源的免交互措施来说,使用变量存放密码显得不够安全,因此可在脚本中使用,并将脚本的权限严格控制,避免密码泄漏。
rsync -az --password-file=/etc/server.pass backuper@192.168.200.111::wwwroot /root
可以创建周期计划任务crontab
上传操作需要文件夹属主、组为nobody,而且同步操作是镜像两个文件夹,单独文件上传加--delete是不会删除原有文件的,只有两个文件夹互相同步的时候才可以
假设环境
111mysql数据库,备份出数据
222备份存放位置
这样要在222上配置rsync服务,
并且授权账号backuper,
还要把共享文件夹属主和属组改变为nobody,
111mysql服务端上备份出数据,远程同步到222的共享文件夹上
 
原文地址:https://www.cnblogs.com/elin989898/p/11990385.html