首页 > 其他分享 >数据同步rsync

数据同步rsync

时间:2024-11-03 11:30:38浏览次数:3  
标签:rsync 同步 backup -- 数据 00 sh root

数据同步rsync

Rsync本地模式和远程模式

1.安装

yum install -y rsync

2.命令语法

  • 本地模式
rsync 参数 src  dest

1.对文件同步
[root@backup yum.repos.d]# rsync -avzP /var/log/messages /tmp/
sending incremental file list
messages
      3,311,285 100%   84.50MB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 343,213 bytes  received 35 bytes  686,496.00 bytes/sec
total size is 3,311,285  speedup is 9.65


2.对目录同步
拷贝整个目录
[root@backup yum.repos.d]# rsync -avzP /opt/sh /tmp/
sending incremental file list
sh/
sh/1.sh
              1 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=4/6)
sh/backup.sh
            628 100%  613.28kB/s    0:00:00 (xfr#2, to-chk=3/6)
sh/cp.sh
            624 100%  609.38kB/s    0:00:00 (xfr#3, to-chk=2/6)
sh/ping.sh
            347 100%  338.87kB/s    0:00:00 (xfr#4, to-chk=1/6)
sh/tips.sh
            472 100%  460.94kB/s    0:00:00 (xfr#5, to-chk=0/6)

sent 1,795 bytes  received 115 bytes  3,820.00 bytes/sec
total size is 2,072  speedup is 1.08
[root@backup yum.repos.d]# ls /tmp/
messages  sh


拷贝目录下文件
[root@backup yum.repos.d]# rsync -avzP /opt/sh/  /tmp/
sending incremental file list
./
1.sh
              1 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=4/6)
backup.sh
            628 100%  613.28kB/s    0:00:00 (xfr#2, to-chk=3/6)
cp.sh
            624 100%  609.38kB/s    0:00:00 (xfr#3, to-chk=2/6)
ping.sh
            347 100%  338.87kB/s    0:00:00 (xfr#4, to-chk=1/6)
tips.sh
            472 100%  460.94kB/s    0:00:00 (xfr#5, to-chk=0/6)

sent 1,780 bytes  received 114 bytes  3,788.00 bytes/sec
total size is 2,072  speedup is 1.09
[root@backup yum.repos.d]# ls /tmp/
1.sh  backup.sh  cp.sh  messages  ping.sh  sh  tips.sh


  • 远程模式
rsync 参数 src user@ip:dest
#推送模式
[root@backup ~]# ls /root/
1.txt  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[root@backup ~]# rsync -avzP /root/ root@web01:/tmp/
[root@web01 ~]# ls /tmp/
1.txt  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

#拉取模式
[root@web01 ~]# ls /tmp/
[root@web01 ~]# 
[root@backup ~]# rsync -az  --delete  root@web01:/tmp/ /tmp/
[root@backup ~]# ls /tmp/
[root@backup ~]# 


-a 保持文件原有属性
-z 对传输数据压缩
-P 显示文件传输进度
-v 显示传输细节情况  
--bwlimit  传输时限速
--delete 无差异化拷贝,保证目标和源目录一致,将目标中和源目录中不一样的s

rsync服务端

为什么需要服务模式

Rsync借助ssh协议同步数据存在的缺陷

1.使用系统用户(不安全)

2.使用普通用户(权限不足)

3.守护进程传输方式(不使用系统用户,更安全)

rsync服务端部署

1.安装rsync
yum install -y rsync 
2.修改配置文件
cat > /etc/rsyncd.conf <<EOF
uid = www      
gid = www
port = 873  #监听端口
fake super = yes  #无需让rsync以root身份运行,允许接受文件的完整属性
use chroot = no  #禁锢推送的数据到某个目录,不允许跳出该目录
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup #定义虚拟用户,作为链接认证用户
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
-----
[backup] #定义模块信息
comment = 123 #定义注释信息
path = /backup #定义接受备份数据目录

3.创建用户
useradd -u 1100 -M -s /sbin/nologin www -M 没有家目录

4.创建backup文件夹
mkdir /backup
chown -R www:www /backup

5.创建rsync专用账户密码
echo rsync_backup:111> /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

6.用systemctl管理rsync服务
创建一个配置文件

[root@localhost conf]# vi /etc/sysconfig/rsyncd
OPTIONS=""
这个文件用于设置环境变量。OPTIONS 变量可以用来定义启动 rsync 守护进程时的额外参数。这里初始为空,意味着没有额外参数。
创建service文件

[root@localhost conf]# vi /lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf

[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"

[Install]
WantedBy=multi-user.target

[Unit]
Description: 这行描述了服务的作用,这里是“快速远程文件复制程序守护进程”。
ConditionPathExists: 这个条件检查 /etc/rsyncd.conf 文件是否存在,如果不存在,服务不会启动。
[Service]
EnvironmentFile: 指定一个环境文件,这里是 /etc/sysconfig/rsyncd,会加载里面定义的环境变量。
ExecStart: 定义了服务启动时执行的命令。这里是调用 rsync 以守护进程模式运行,并且使用 --no-detach 选项保持在前台运行。"$OPTIONS" 是从环境文件中读取的选项。
[Install]
WantedBy: 指定该服务应该在什么目标下启动,这里是 multi-user.target,意味着在多用户模式下启动。

rsync客户端

安装rsync
yum install -y rsync
推送模式
[root@web01 yum.repos.d]# rsync -avzP /root/ [email protected]::backup
Password: 这里需要输入密码
sending incremental file list
./
非交互式密码的两种操作
1.生成密码文件
[root@web01 yum.repos.d]# echo 111 > /etc/rsync.pwd
[root@web01 yum.repos.d]# chmod 600 /etc/rsync.pwd

[root@web01 yum.repos.d]# rsync -avzP --password-file=/etc/rsync.pwd /root/ [email protected]::backup
sending incremental file list
./
1.txt
         81,659 100%   46.63MB/s    0:00:00 (xfr#1, to-chk=19/30)
anaconda-ks.cfg
          1,190 100%    1.13MB/s    0:00:00 (xfr#2, to-chk=18/30)
initial-setup-ks.cfg
          1,574 100%    1.50MB/s    0:00:00 (xfr#3, to-chk=17/30)
logs_20241031103922_backupd_storaged_1730342418.tar
     58,852,864 100%   40.67MB/s    0:00:01 (xfr#4, to-chk=16/30)

sent 39,137,738 bytes  received 112 bytes  26,091,900.00 bytes/sec
total size is 60,255,520  speedup is 1.54

2.环境变量
export RSYNC_PASSWORD='111'
[root@web01 yum.repos.d]# export RSYNC_PASSWORD='111'
[root@web01 yum.repos.d]#  rsync -avzP /root/ [email protected]::backup
sending incremental file list
./
1.txt
         81,659 100%   46.63MB/s    0:00:00 (xfr#1, to-chk=19/30)
anaconda-ks.cfg
          1,190 100%    1.13MB/s    0:00:00 (xfr#2, to-chk=18/30)
initial-setup-ks.cfg
          1,574 100%  768.55kB/s    0:00:00 (xfr#3, to-chk=17/30)
logs_20241031103922_backupd_storaged_1730342418.tar
     58,852,864 100%   39.53MB/s    0:00:01 (xfr#4, to-chk=16/30)

sent 39,137,738 bytes  received 112 bytes  15,655,140.00 bytes/sec
total size is 60,255,520  speedup is 1.54


下载模式
[root@web01 yum.repos.d]# rsync -zvzP [email protected]::backup /tmp/
skipping directory .

sent 8 bytes  received 38 bytes  92.00 bytes/sec
total size is 0  speedup is 0.00
[root@web01 yum.repos.d]# ls /tmp
1.txt  anaconda-ks.cfg  initial-setup-ks.cfg  logs_20241031103922_backupd_storaged_1730342418.tar

inotify-tools +rsync

1.配置epel源
2.安装inotify-tools
[root@backup ~]# yum install -y inotify-tools
[root@backup ~]# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r--. 1 root root 0 Nov  2 09:02 max_queued_events
-rw-r--r--. 1 root root 0 Nov  2 09:02 max_user_instances
-rw-r--r--. 1 root root 0 Nov  2 09:02 max_user_watches
能看到三个文件就代表内核支持inotify机制
3.如何使用
inotifywait 是一个常用的命令行工具,可以用于监视文件和目录的变化。
-m 或 --monitor: 持续监视指定的文件或目录,直到手动停止。
-e 或 --event: 指定要监视的事件类型,可以指定多个事件。常见的事件包括:
access (IN_ACCESS)
modify (IN_MODIFY)
attrib (IN_ATTRIB)
close_write (IN_CLOSE_WRITE)
close_nowrite (IN_CLOSE_NOWRITE)
open (IN_OPEN)
moved_to (IN_MOVED_TO)
moved_from (IN_MOVED_FROM)
create (IN_CREATE)
delete (IN_DELETE)
delete_self (IN_DELETE_SELF)
move_self (IN_MOVE_SELF)
unmount (IN_UNMOUNT)
-r 或 --recursive: 递归监视指定目录中的所有子目录。
-q 或 --quiet: 仅显示事件,不输出额外的提示信息。
--format: 自定义输出格式。例如,可以指定只输出文件名或事件类型


[root@backup ~]# inotifywait -mqr --timefmt '%T' --format "%T %w %f: %e" /backup
09:13:26 /backup/ 1: DELETE
09:13:26 /backup/ 1.txt: DELETE
09:13:26 /backup/ anaconda-ks.cfg: DELETE
09:13:26 /backup/ initial-setup-ks.cfg: DELETE
09:13:26 /backup/ logs_20241031103922_backupd_storaged_1730342418.tar: DELETE
--timefmt '%T': 设置时间格式,用于输出事件发生的时间。
--format "%T %w %f: %e": 自定义输出格式。具体来说:
%T:事件发生的时间(根据 --timefmt 设置)。
%w:监视的目录路径。
%f:发生变化的文件名。
%e:事件类型(如创建、修改、删除等)。
/backup: 指定要监视的目录路径。

lsyncd

一般lsyncd部署在rsync客户端
关闭selinxu

1.安装lsyncd
[root@backup ~]# yum install -y lsyncd
2.修改配置文件
(只监测一个目录)
settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/run/lsyncd.status",
    inotifyMode = "CloseWrite",
    MaxProcesses = 8
}

sync {
    default.rsync,
    source = "/tmp",
    target = "rsync_backup@backup:/backup", 
    delete = true,
    exclude = {".*"},
    delay = 1,
    rsync = {
        binary = "usr/bin/rsync",   
        archive = true,
        compress = true,
        verbose = true,
        password_file = "/etc/rsync.pwd",
        _extra = {"--bwlimit=200"}
    }
}

logfile: 指定 lsyncd 的日志文件路径,所有日志信息将记录在此文件中。
statusFile: 指定状态文件的路径,用于存储 lsyncd 的运行状态信息。
inotifyMode: 设置 inotify 的模式为 CloseWrite,这意味着只有在文件关闭后写入时才触发事件。这可以减少频繁写入时的不必要触发。
MaxProcesses: 设置允许的最大并发进程数。这里设为 8,意味着可以同时处理最多 8 个文件同步进程。

default.rsync: 指定使用 rsync 作为同步方式。
source: 定义要监视和同步的源目录路径。
target: 定义目标路径,通常是一个远程服务器的目录,使用 SSH 进行连接。
delete: 设置为 true,表示在目标中删除源目录中不存在的文件,以保持同步的一致性。
exclude: 这是一个排除模式,定义要排除的文件或目录。在这里,".*" 表示排除所有以点开头的文件(通常是隐藏文件)。
delay: 设置在检测到文件变化后,实际执行同步的延迟时间(以秒为单位)。这里设为 1 秒,意味着在事件发生后的 1 秒内不会进行同步。

binary: 指定 rsync 的可执行文件路径。在这里的路径应为 /usr/bin/rsync(请注意可能缺少前导 /)。
archive: 设置为 true,表示使用归档模式,这会保持文件的权限、时间戳等属性。
compress: 设置为 true,在同步过程中压缩数据以节省带宽。
verbose: 设置为 true,表示输出详细的同步过程信息。
password_file: 指定一个文件路径,该文件包含用于 SSH 连接的 rsync 密码。确保该文件的权限设置为安全,以防止未授权访问。
_extra: 传递给 rsync 的额外参数,这里使用 --delete 来确保目标中不在源中的文件被删除。

标签:rsync,同步,backup,--,数据,00,sh,root
From: https://www.cnblogs.com/cloudwangsa/p/18523062

相关文章

  • 基于Django高校岗位招聘平台与数据可视化分析设计和实现
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm浏览器:谷歌浏览器后台路径地址:localhost:8080/项目名称/admin/dist/index.html前台路径地址:localhost:8080/项目名称/front/dist/index.html(无前台......
  • 缓存雪崩/穿透/击穿/失效原理图/14种缓存数据特征+10种数据一致性方案(全面篇)
    在当今数据驱动的互联网时代,缓存成为了提升应用性能的关键技术。面对海量用户请求,如何通过缓存策略有效减轻数据库压力、降低响应延迟?本文深入探讨了缓存雪崩、缓存穿透、缓存击穿等常见问题,并提供了全面的解决方案。通过实际案例分析,揭示了缓存设计的最佳实践,确保数据一致......
  • 【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
    ......
  • 达梦DM-统计用户下每个表的行数和数据量大小
    1,统计用户下每个表的行数和数据量大小–创建一张临时表,用来记录每张表的数据量情况createtabletable_count(ownervarchar(100),table_namevarchar(100),cntint);–执行存储过程统计指定模式每张表数据条数模式名改为要查询的对应的模式即可declarev_ownerVARCHAR2(100)......
  • SpringBoot外语学习系统vvp4z程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称外语学习系统的研发与优化二、研究目的与意义随着全球化的不断深入,外语学习的重要性日益凸显。一个高效、个性化的外语学习系统能够......
  • SpringBoot图书管理信息系统6fh8g程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称图书管理信息系统的开发与应用二、选题意义随着信息技术的飞速发展,图书馆作为知识和信息的集散地,其管理效率和服务水平直接影响到读......
  • SpringBoot图片销售网站e4a32--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着互联网技术的快速发展,图片已成为人们日常生活中不可或缺的元素。无论是社交媒体、广告宣传,还是个人创作,都需要用到大量高质量的图......
  • json-server详细模拟GET、POST、DELETE等接口数据教程
    引言在前端开发过程中,我们经常需要在后端API尚未就绪的情况下模拟接口数据。json-server是一个强大而灵活的工具,可以帮助我们快速创建一个模拟的RESTfulAPI。本文将详细介绍如何使用json-server来模拟GET、POST、PUT、PATCH、DELETE等常用的HTTP方法,以及如何处理复杂的数......