RSYNC远程同步服务

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的共享文件夹上

posted @ 2019-12-08 14:02  elin菻  阅读(308)  评论(0编辑  收藏  举报