rsync 远程同步

发布时间:2024年01月11日

目录

一.什么是rsync

二.配置rsync:

把test2作为源服务器进行配置:

启动 rsync 服务:

准备文件到复制共享目录下:

给源服务器密码文件添加内容再进行远程同步测试一下:

进行免密同步测试:

在发送端添加密码文件,修改权限:

与发送端进行同步:

可以进行定时任务的同步:

快速清空目录中大量文件?

rsync -a --delete 空目录/ ?目标目录/

rsync-ssh方式

在到发送端进行同步:

进行同步:

发起端配置 rsync+inotify

修改rsync源服务器配置文件

进行重新启动rsync:

调整 inotify 内核参数:

修改配置文件:

发送端安装 inotify-tools:

执行脚本:

发送端添加文件内容:


一.什么是rsync

rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

二.配置rsync:

准备两台服务器,并下载rsync工具:

把test2作为源服务器进行配置:

修改rsync的配置文件:

到/opt目录下创建所定义的文件,目录:

添加文件授权:

启动 rsync 服务:

准备文件到复制共享目录下:

到发起端进行获取文件:

命令格式:rsync [选项] 原始位置 目标位置

常用选项:
-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-z:在传输文件时进行压缩(compress)。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

格式一:将指定的资源下载到本地/opt 目录下进行备份:

rsync -avz 授权用户@源服务器地址::模块名? 本地路径

先在发起端test3创建空目录:

格式二:rsync -avz rsync://授权用户@源服务器地址/模块名? 本地路径

我们在进行一次看下是否会再次进行文件同步:

没有在进行同步操作。

给源服务器密码文件添加内容再进行远程同步测试一下:

说明只会同步增量的数据。

进行免密同步测试:

rsync-daemon方式

先给源服务器添加几个文件:

在发送端添加密码文件,修改权限:

方法1:rsync -az --delete --password-file=密码文件 ? 用户名@源服务器地址::共享模块名 ? 本地目录

方法2:rsync -az --delete --password-file=密码文件 ? rsync://用户名@源服务器地址/共享模块名 ? 本地目录

我们将源服务器的abc文件删除,创建新的文件在进行传输同步:

与发送端进行同步:

看下发送端的目录下文件:

可以进行定时任务的同步:

查看定时任务内容:

要实现定时任务要确保服务开启:

快速清空目录中大量文件?

先创建1w个文件:

rsync -a --delete 空目录/ ?目标目录/

创建空目录:

rsync-ssh方式

方式一:先做ssh密钥对免交互(空密码,ssh-agent bash + ssh-add)
rsync -az (--delete) -e 'ssh -p ssh端口' ?用户名@源服务器地址:共享目录/ ? 本地目录

先给源服务器复制目录:

生成密钥对:

在到发送端进行同步:

方式二:rsync -az (--delete) -e 'sshpass -p 'ssh密码' ssh -p ssh端口 (-o StrictHostKeyChecking=no)' ?用户名@源服务器地址:共享目录/ ? 本地目录

给源服务器的/opt/www目录下添加文件:


在发送端下载sshpass工具:

将配置文件设为no:

进行同步:

定时同步 ?rsync + crontab
实时同步 ?rsync + inotifywait

发起端配置 rsync+inotify

使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

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

修改rsync源服务器配置文件

进行重新启动rsync:

先过滤进程并杀死:

启动:

调整 inotify 内核参数:

默认的inotify机制提供了三个调控参数:max_queue_events(监控事件队列,默认值为16384)、max_user_instances(最多监控实例数,默认值为128)、max_user_watches(每个实例最多监控文件数,默认值为8192)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。

修改配置文件:

发送端安装 inotify-tools:

inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。

进行创建文件,删除,移动等操作:

在发送端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /root/ky33/"
RSYNC_CMD="rsync -azH --delete --password-file=/opt/usrlist /root/ky33/ cxk@192.168.233.20::cxk"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
#使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
do
 if [ $(pgrep rsync | wc -l) -le 1 ]
then
#如果rsync未在执行,则立即启动
   $RSYNC_CMD
  fi
done

给文件授权:

给源服务器共享的文件授权:

执行脚本:

发送端添加文件内容:

在源服务端查看下内容:

文章来源:https://blog.csdn.net/2302_79748698/article/details/135524614
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。