本文共 6586 字,大约阅读时间需要 21 分钟。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责相应来自客户机的rsync同步操作的服务器称为同步源。
在同步过程中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。 如下图:(1)本地复制;(2)与其他SSH同步;(3)与rsync主机同步。
稍后从这三个方面来演示怎么使用rsync备份工具。
配置rsync源服务器大致分为三步:
(1)建立rsync配置文件; (2)为备份账户创建数据文件; (3)启动rsync服务。准备两台虚拟机,一台作为同步源,一台用于客户机发起同步。
同步源服务器:
[root@localhost ~]# yum -y install httpd#如果虚拟机是最小化安装,还需要rsync包安装。[root@localhost ~]# yum -y install rsync[root@localhost ~]# vi /etc/rsyncd.conf ####在同步源服务器上配置 uid = nobody gid = nobody use chroot = yes ####禁锢在源目录 address = 10.0.0.40 ####监听地址. port 873 ####监听端口号 log file = /var/log/rsyncd.log ####日志文件位置 pid file = /var/run/rsyncd.pid ####存放进程ID的文件位置 hosts allow = 10.0.0.0/24 ####允许访问的客户机地址[wwwroot] ####共享模块名称 path = /var/www/html ####源目录的实际路径 comment = Document Root of www.51xit.top read only =yes #####是否只读 dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z ####同步时不在压缩的文件类型 auth users =backuper #####授权账户 secrets file = /etc/rsyncd_users.db
基于安全性考虑,同步源最好仅允许以只读方式做同步,另外,同步也可以采用匿名的方式,只要将其中的“auth users”"secrets file"配置注释掉即可
#创建rsync账号文件采用“用户名:密码”的记录格式,每行一个用户记录,独立的账号数据,不依赖于系统账号[root@localhost ~]# vi /etc/rsyncd_users.dbbackuper:pwd123#由于账号信息采用明文存放,因此需要调整文件权限,避免账号信息泄露[root@localhost ~]# chmod 600 /etc/rsyncd_users.db #备份用户应对源目录具有读取权限。[root@localhost ~]# ls -ld /var/www/html drwxr-xr-x. 2 root root 6 8月 8 2019 /var/www/html
通过–daemon模块独自提供服务
[root@localhost ~]# rsync --daemon[root@localhost ~]# netstat -anpt | grep rsynctcp 0 0 10.0.0.40:873 0.0.0.0:* LISTEN 57804/rsync
#此处如果想要停止这个服务 ,有两个方式:方式一:[root@localhost ~]# kill $(cat /var/run/rsyncd.pid) #使用这个停止服务必须删除存放rsync服务进程的文件[root@localhost ~]# rm -rf /var/run/rsyncd.pid方式二:直接使用“netstat -anpt | grep rsync”命令查出进程号,使用“kill 进程号”
在源目录/var/www/html中,新建文件
[root@localhost opt]# cd /var/www/html/[root@localhost html]# vi 123.html ####里面的内容随意加[root@localhost html]# vi 456.html ####里面的内容随意加
配置好rsync同步源服务器之后,客户端就可以使用rsync工具来执行远程同步了。
rsync命令的选项;选项 | 功能 |
---|---|
-r | 递归模式,包含目录及子目录中所有文件- |
1 | 对于符号链接文件仍然复制为符号链接文件 |
-p | 保留文件的权限标记 |
-t | 保留文件的时间标记 |
-g | 保留文件的属组标记(仅超级用户使用) |
o | 保留文件的属主标记(仅超级用户使用) |
D | 保留设备文件及其他特殊文件 |
-a | 归档模式,递归并保留对象属性,等同于-rlptgoD |
-v | 显示同步过程的详细(( verbose)信息 |
-z | 在传输文件时进行压缩( compress) |
-H: | 保留硬连接文件 |
-A | 保留ACL属性信息 |
- -delete | 删除目标位置有而原始位置没有的文件 |
- -checksum | 根据对象的校验和来决定是否跳过文件 |
[root@localhost ~]# rsync /etc/fstab /opt/[root@localhost ~]# ll /opt/总用量 8-rw-r--r--. 1 root root 617 11月 12 14:52 fstabdrwxr-xr-x. 2 root root 6 3月 26 2015 rh
rsync [选项] 原始位置 目标位置###常用选项###-a:归档模式,递归并保留对象属性,等同于 -rlptgoD-v:显示同步过程的详细(verbose)信息-z:在传输文件时进行压缩(compress)-H:保留硬连接文件-A:保留ACL属性信息--delete:删除目标位置有而原始位置没有的文件--checksum:根据对象的校验和来决定是否跳过文件
[root@localhost ~]# rsync -av root@10.0.0.50:/root/123.txtroot@10.0.0.50's password:
格式1:rsync -avz 用户名@主机地址::共享模块名 目标目录格式2: rsync -avz rsync://用户名@主机地址/共享模块名 目标目录[root@localhost ~]# rsync -avz backuper@10.0.0.40::wwwroot /opt或者[root@localhost ~]# rsync -avz rsync://backuper@10.0.0.40/wwwroot /opt
rsync -avzH --delete backuper@10.0.0.40::wwwroot /opt--delete:删除目标位置有而原始位置没有的文件
在这里把opt目录下除了源主机的wwwroot模块里的文件,其他全删除。
客户机:
[root@localhost wwwroot]# vi /etc/server.passpwd123[root@localhost wwwroot]# cat /etc/server.passpwd123[root@localhost wwwroot]# chmod 600 /etc/server.pass
再次修改rsync 服务器内容,用于辨别同步效果
#客户机同步信息,指明密码存放rsync -az --delete --password-file=/etc/server.pass backuper@10.0.0.40::wwwroot /opt
免交互同步新的内容
[root@localhost ~]# crontab -e ####每天晚上10点半对服务器网站目录更新一次30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@10.0.0.40::wwwroot /opt/myweb/[root@localhost ~]# systemctl restart crond[root@localhost ~]# systemctl enable crond
1、定期同步存在一些不足之处,比如:
2、实时同步的优点
3、inotify介绍
客户机:
1、调整inotify内核参数
当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。 可以直接修改/etc/sysctl.conf的配置文件,将管理队列、实例数、监控数进行设置。[root@localhost ~]# vi /etc/sysctl.conf #客户端#直接在行尾添加fs.inotify.max_queued_events = 32768fs.inotify.max_user_instances = 1024fs.inotify.max_user_watches = 1048576[root@localhost ~]# sysctl -p
2、安装inotifi-tools
使用inotify机制还需要安装inotifi-tools,以便提供 inotifywait 和 inotifywatch 辅助工具程序,用来监控和汇总改动情况。#上传inotify-tools-3.14.tar.gz到/opt目录下[root@localhost ~]# cd /opt[root@localhost opt]# tar xzvf inotify-tools-3.14.tar.gz [root@localhost opt]# cd inotify-tools-3.14/[root@localhost inotify-tools-3.14]# ./configure[root@localhost inotify-tools-3.14]# make && make install
3、编写触发式同步脚本
vim /opt/inotify.sh#!/bin/bashINOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/myweb/"RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/myweb/ backuper@10.0.0.40::wwwroot" $INOTIFY_CMD | while read DIRECTORY EVENT FILEdo if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD# echo "${FILE} was rsynced" >>/opt/inotify_rsync.log fidone#添加执行权限chmod +x /opt/inotify.sh
4、验证
源服务器:[root@localhost html]# vi /etc/rsyncd.conf #源服务器read only = no ###这个地方原来的yes 改成 no 这个地方的模块可以读写了[root@localhost ~]# kill $(cat /var/run/rsyncd.pid) ###关闭rsyncd服务[root@localhost ~]# rsync --daemon ###启动rsyncd服务[root@localhost ~]# netstat -anpt |grep rsynctcp 0 0 10.0.0.40:873 0.0.0.0:* LISTEN 59922/rsync[root@localhost ~]# chmod 777 /var/www/html/
客户机:
[root@localhost ~]# /opt/inotify.sh [root@localhost ~]# chmod 777 /opt/myweb/ ###需要在开一个终端[root@localhost ~]# vi /opt/myweb/110.html ###里面插入任意数据
源服务器查看:
[root@localhost ~]# ll /var/www/html/ ## 会发现这个地方会多个110.html文件-rw-------. 1 nobody nobody 8 11月 12 17:24 110.html
转载地址:http://mekgf.baihongyu.com/