rsync 远程同步服务部署

iptables -F

systemctl stop firewalld

setenforce 0

配置 rsync 备份源

yum -y install rsync

rpm -q rsync

rsync-3.1.2-4.el7.x86_64

1、建立/etc/rsyncd.conf配置文件

vim /etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = yes

address = 192.168.200.123

port = 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

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

注释:

uid = nobody                                                                     #用户名

gid = nobody                                                                     #组名

use chroot = yes                                                               #禁锢在源目录

address = 192.168.200.123                                             #监听地址

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                               #存放账户信息的数据文件

基于安全性考虑,对于 rsync 的备份源最好仅允许以只读的方式做下行同步。另外,同步可以采用匿名的方式,只要将其中的 "auth users" 和 "secrets file" 配置记录去掉就可以了。

2、为备份账户创建数据文件

vim /etc/rsyncd_users.db

backuper:pwd123

以冒号分割,密码信息在文件中以明文方式存放

备份用户 backuper 也需要对 /var/www/html 有相应的读取权限,实际上只要 other 组具有读取权限,则备份用户 backuper 和运行 nobody 用户也就有读取权限了。

chmod 755  /var/www/html/

3、启动rsync服务进程

rsync --daemon

启动服务运行命令为"rsync --daemon",以独立监听服务的方式运行,若关闭 rsync 服务可采用kill进程方式

kill $(cat /var/run/rsyncd.pid)

服务脚本

vim /etc/init.d/rsyncd

#!/bin/bash
#chkconfig:2345 80 20
#description:rsync server

start () {
netstat -lnpt | grep -q :873
[ $? -ne 0 ] && rsync --daemon
}

stop () {
netstat -lnpt | grep -q :873
[ $? -eq 0 ] && kill $(cat /var/run/rsyncd.pid) && rm -rf /var/run/rsyncd.pid
}

status () {
netstat -lnpt | grep -q :873
[ $? -eq 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

使用 rsync 备份工具 192.168.200.124

 有了同步源服务器之后,就可以使用rsync工具来执行远程同步。接下来的操作都是在客户机(发起端)执行

    本地备份:备份源和发起端可以是一台机器

rsync /et/fstab /opt/

rsync -rl /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://用户名@主机地址/共享模块名称

rsync -avz [email protected]::wwwroot /root

rsync -avz rsync://[email protected]/wwwroot /root

rsync备份源的无交互验证方式

1、通过export RSYNC_PASSWORD变量保存密码,rsync命令执行时可以自动读取该变量的值,在需要时发送给rsync服务器来进行验证  

export RSYNC_PASSWORD=pwd123

rsync -avzH --delete [email protected]::wwwroot /myweb

2、通过 --password-file选项指定存储密码的文件

vim /etc/server.pass

pwd123

chmod 600 /etc/server.pass

rsync -avzH --delete --password-file=/etc/server.pass rsync://[email protected]/wwwroot /myweb

相对于SSH源的免交互措施来说,使用变量存放密码显得不够安全,因此可在脚本中使用,并将脚本的权限严格控制,避免密码泄露。

配置rsync+inotify实时同步

  Linux从2.6.13版内核开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改内容及属性等。利用这个机制,可以实现文件异动警告,增量备份,针对目录或文件的变化及时做出相应。

  将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待模式,避免了按固定周期备份时存在的延迟性,周期过密等问题

  正因为inotify通知机制由Linux内核提供,因此inotify主要做本机监控,在触发式备份应用中更适合上行同步

1、调整inotify内核参数

在Linux内核中,默认的inotify机制提供了三个调控参数:

cat /proc/sys/fs/inotify/max_queued_events         //表示监控事件队列(16384)

cat /proc/sys/fs/inotify/max_user_instance           //最多监控实例数(128)

cat /proc/sys/fs/inotify/max_user_watches           //每个实例最多监控文件数(8192)

当要监控的目录,文件数量较多或者变化频繁时,建议加大这三个参数的值

vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instance = 1024

fs.inotify.max_user_watches = 1048576

sysctl -p

安装 inotify-tools

inotify-tools 主要提供inotifywait,inotifywatch等工具,用来监控,汇总改动情况

官方站点:http://inotify-tools.sourceforge.net

tar xf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure && make && make install

  以监控网站目录 /var/www/html 为例,执行inotifywait命令后,在另外一个终端中改动 /var/www/html 目录下的内容

mkdir -p /var/www/html

inotifywait -mrq -e modify,create,move,delete,attrib /var/www/html/

-e    指定要监控的事件

-m   表示持续监控

-r     表示递归整个目录

-q    简化输出信息

编写触发式同步脚本

inotifywait 输出的监控结果中,每行记录中包括目录,事件,文件。据此可以识别变动情况。为了简单,只要检测到变动时执行rsync上行同步操作即可

注意:当更新较频繁时,避免并发执行rsync备份,若rsync进程已经存在则忽略本次同步,或者根据rsync进程数量(取决于实际任务)来决定是否同步。

vim /etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = yes

address = 192.168.200.123

port = 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.200.0/24

[wwwroot]

path = /var/www/html

comment = Document Root os www.crushlinux.com

read only = no

dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z

auth users = backuper

secrets file = /etc/rsyncd_users.db

kill $(cat /var/run/rsyncd.conf)

rsync --daemon

chown nobody:nobody /var/www/html/

vim /opt/inotify_rsync.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html/"

RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

if [ $(pgrep rsync | wc -l) -le 0 ]

then

$RSYNC_CMD  

fi

done

echo "/bin/bash /opt/inotify_rsync.sh" >> /etc/rc.local

脚本用来测试本机 /var/www/html 目录的变动,一旦有更新立刻触发 rsync 同步操作,上传至服务器192.168.200.123的 /var/www/html 目录下。

触发式上行同步的验证操作如下:

1、在本机运行 inotify_rsync.sh 脚本

bash /opt/inotify_rsync.sh

2、在本机的 /var/www/html 目录下,执行创建,删除,修改等操作

mkdir /var/www/html/aa

mv /var/www/html/aa /var/www/html/aaa

touch /var/www/html/abc.txt

3、查看服务器中的 /var/www/html 目录中的变化

ls /var/www/html/

aaa abc.txt bb

配置 SSH 备份源

优点:远程连接安全,增强备份的保密性,容易实现

下载:在下行同步中,备份源负责提供文档的原始位置,发起端应对文件具有读取权限

上传:在上行同步中,备份源负责提供文档的目标位置,发起端应对文件具有写入权限

 配置过程

a、确认备份源文件夹位置

b、准备备份操作用户

 案例

192.168.200.123机器的网站目录 /var/www/html 作为备份源

用户down做下行(下载)备份

用户up做上行(上传)备份

192.168.200.123:

yum -y install httpd rsync

useradd up

echo "123456" | password --stdin up

useradd down

echo "123456" | password --stdin down

vim /etc/ssh/sshd_config

122 UseDNS no          //关闭UseDNS加速SSH登录

systemctl restart sshd

调整 /var/www/html 目录权限,使down用户有读取权限,up用户有写入权限,建议将目录的属主修改为备份用户,另外需要为 web 服务的运行用户指定额外的权限

chown -R up:up /var/www/html/

setfacl -R -m user:apache:rwx /var/www/html/

getfacl /var/www/html/

acl访问控制机制参数详解

setfacl         设置acl权限

getfacl         查看acl权限

-R            递归

-m            制定权限

-x             个别删除

-b             全部删除

注意:下面两行不需要执行,作为了解

setfacl -R -b /var/www/html                                      表示删除所有ACL属性

setfacl -R -x user:apache /var/www/html/                 只删除某一项ACL属性

凡是以后在 /var/www/html/upload/ 新建立的文档,apache用于都具有 rwx 权限

setfacl -m default:user:apache:rwx /var/www/html/

getfacl /var/www/html/ | grep default

 SSH备份源表示方式:

用户名@主机地址:目标路径

访问SSH备份源,下载到本地 /opt/ 目录

rsync -avz [email protected]:/var/www/html/ /opt/

 下行同步 ssh 备份源

将服务器A的 /var/www/html 文件夹与B本地 /wwwroot 文件夹同步(保持文件权限属性,软硬链接,ACL属性,删除 /wwwroot 中多余文件,传输过程进行加密)

mkdir -p /wwwroot

rsync -avzH --delete [email protected]:/var/www/html/ /wwwroot

 对于同一项远程同步任务,再次执行时,自动做增量更新,同名的文件将不再重复复制

192.168.200.123:

cd /var/www/html/

for i in {1..10};do touch $i.txt;done

192.168.200.124:

rsync -avzH --delete [email protected]:/var/www/html/ /wwwroot

上行同步 ssh 备份源

将客户机中的anaconda-ks.cfg文件上传到备份源服务器的 /var/www/html 目录下,由于用户是up并非

root 用户,因此 -g -o 等选项无法使用

cd /root

rsync -rlvz --delete anaconda-ks.cfg [email protected]:/var/www/html

ssh备份源的无交互验证,由于脚本根据 crond 时间来执行,用户没办法按时根据提示输入密码

192.168.200.124 主机上创建密钥对,将公钥文件发给192.168.200.123服务器中的备份用户,实现无交互登录

创建密钥对:

ssh-keygen -t rsa

复制密钥对:

ssh-copy-id [email protected]

ssh-copy-id [email protected]

连接测试

ssh [email protected]

ssh [email protected]

rsync -avzH --delete [email protected]:/var/www/html/ /wwwroot

原文地址:https://www.cnblogs.com/2567xl/p/11819367.html

时间: 2024-10-11 02:21:32

rsync 远程同步服务部署的相关文章

rsync远程同步服务

rsync远程同步服务,,在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等信息 rsync是xinetd的子服务 配置rsync服务器 rsync服务器主要有三个配置文件(需要自己手动创建) 1.rsyncd.conf 2.rsyncd.secrets 3.rsyncd.motd mkdir /etc/rsyncd         #创建配置目录 cd /etc/rsyncd touch rsyncd.conf               #创建主配置文件 touch rsyncd.s

rsync实时同步服务部署

部署rsync服务 一.需求:把客户端文件同步到服务端指定位置服务端:备份服务器为 172.16.3.164客户端:推送服务器为 172.16.3.94 二.基础知识: rsync 分为服务器端.客户端,服务器端搭建比客户端辛苦一些. rsync 服务器是指以 deamon 方式运行 rsync 服务的服务器,需要打开 rsync deamon 和启动 xinetd 服务.默认端口873. rsync 客户端是发起 rsync 连接的服务器,安装rsync即可. rsync 客户端发起连接后,r

Linux之rsync 远程同步

Linux之rsync 远程同步 1. 案例 1. 开始部署 (1) 在1.10服务器上配置为服务端,修改rsync的配置文件/etc/rsyncd.conf,并启动rsync服务程序. (2) 在1.20上使用rsync命令验证是否能够从服务端(/var/www/html)下载文件到客户机端(/var/www/html). (3) 修改rsync的配置文件/etc/rsyncd.conf,实现客户机端(/var/www/html)能上传文件到服务端的(/var/www/html)位置.在客户机

rsync 远程同步 linux 及 windows 主机

一.前言 1.rsync原理及rsync+inotify触发同步 http://nmshuishui.blog.51cto.com/1850554/1387048 2.本篇说明 为了保证数据的绝对可靠性: 首先,所有的服务器的数据都用脚本打包备份在本地一份,如上篇博客 其次,单独拿出一台pc机做备份机,为rsync客户端,每天定时却拉取各rsync服务器备份好的数据包 再次,使用rsync同步 linux 及 windows 服务器 3.服务器说明 rsync服务器:192.168.200.16

rsync远程同步备份

作者:Georgekai 归档:学习笔记 2018/1/22 本章正题:rsync远程同步备份 1.5.1 什么是rsync? 开源的.快速的.多功能的.可实现全量及增量备份的本地或远程数据同步备份方案 rsync官网:http://rsync.samba.org/documentation.html 1. 什么是全量.什么是增量? 全量备份:本地所有数据都进行传输复制,不管对端服务器是否有相同的数据,如果有进行覆盖 增量备份:只备份同步变化的的数据,对端服务器已存在的数据不进行传输复制 1.5

rsync远程同步及rsync+inotify实时同步

rsync远程同步及rsync+inotify实时同步 思维代入 正确.有效的备份方案是保障系统及数据安全的重要手段.在服务器中,通常会结合计划性任务.shell脚本来执行本地备份.但有时候为了提高备份的可靠性,异地备份也是非常有必要的.那下面就给大家介绍一种异地远程备份的方法:rsync远程备份. rsync简介 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务等应用

rsync远程同步备份工具

rsync远程同步介绍 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,切采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用. rsync官方站点是http://rsync.samba.org/,由Wayne Davsion进行维护.作为一种常用的备份工具,rsync往往是Linux和Unix系统默认安装的基本组件之一. 在远程同步任务中,负责发起rsync同步操作的客户机称为发

rsync远程同步(定期同步、实时同步)

关于rsync . 一款快速增量备份工具 1.Remote Sync,远程同步 2.支持本地复制,或者与其他SSH.rsync主机同步 3.官方网站: http://rsync.samba.org 配置rsync源服务器 rsync同步源: 指备份操作的远程服务器,也称为备份源 配置rsync源 基本思路: 1.建立rsyncd.conf配置文件.独立的账号文件 .启用rsync的--daemon模式 应用示例: 1.户backuper,允许下行同步 2.操作的目录为/var/www/html/

CentOS 6.x中用rsync远程同步文件

CentOS 6.x中用rsync远程同步文件 系统环境:Centos 6.9 x64  目的: 服务器110.112.200.12中/u01文件夹需要同步复制到110.210.250.58里面进行备份. 将200.12做xinetd 服务器,将其/u01 文件夹复制同步到250.58里面去,250.58做客户端. 一.服务器端的配置 在源服务器110.112.200.12中配置 [[email protected] test]#  yum -y install xinetd rsync 再修改