zoukankan      html  css  js  c++  java
  • Linux服务之Rsync

    Rsync简介

    • Rsync 是 Linux 系统下的数据镜像备份工具
    • 使用快速增量备份工具 Remote Sync 可以远程同步,可以在不同主机之间进行同步,可实现全量备份不增量备份,保持链接和权限,传输前执行压缩,
    • 非常适合用于架构集中式备份或异地备份等应用。

    Rsync进行数据备份

    与scp相比较

    • scp无法备份大规模的数据
    • Rsync边复制 边比较 边统计

    Rsync优点

    • 可以镜像保存这个目录树以及文件系统
    • 可以保存文件的权限 属性 硬链接等
    • 无需特殊权限即可安装
    • 只有在第一次同步的时候会复制全部的内容 下一次之后复制修改的内容
    • 在传输的过程中会进行文件压缩 传输更加高效 减少带宽

    Rsync特性

    • 安全:可以使用ssh scp进行文件传输
    • 支持匿名传输 以方便进行网站镜像
    • 选择性保持:符号链接 硬链接 文件属性 权限 时间等

    Rsync的运行原理

    • 采用C/S架构 本质是点到点传输 直接使用Rsync命令即可
    • 监听端口号837

    名词解释

    • 发起端:负责发送Rsync进行同步的机器 我要进行数据同步
    • 备份源:响应Rsync请求的机器 负责进行数据的备份
    • 服务端:运行 rsyncd 服务,一般来说,需要备份的服务器
    • 客户端:存放备份数据

    同步方式

    • 推 push:一台主机负责把数据传送给其他主机,服务器开销徆大,比较适合后端服务器少的情况。
    • 拉 pull:所有主机定时去找一台主机拉数据,可能就会导致数据缓慢。
    • 推 push:目的主机配置为 rsync 服务器,源主机周期性的使用 rsync 命令把要同步的目彔推过去(需要备份的机器是客户端,存储备份的机器是服务端)。
    • 拉 pull:源主机配置为 rsync 服务器,目的主机周期性的使用 rsync 命令把要同步的目彔拉过来(需要备份的机器是服务端,存储备份的机器是客户端)。

    Rsync使用方式

    语法格式

    格式: rsync 【选项】 源文件 目标文件
    

    常见选项

    -a

    --archive(存档) 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD

    -v

    Rsync同步数据的时候显示详细信息

    -p

    Rsync同步数据的时候保留文件的权限

    -t

    Rsync同步数据的时候保留文件的原有时间

    -g

    Rsync同步数据的时候保留文件的原有属组

    -0

    Rsync同步数据的时候保留文件的原有属主

    -D

    表示块设备文件信息

    -z

    Rsync同步数据的时候压缩传输数据

    -H

    表示硬连接文件

    -A

    Rsync同步数据的时候保留ACl权限

    -P

    显示传输进度

    -- delete

    当源服务器中某些文件被删除的时候 备份端文件同时进行删除

    实验验证

    # 基础备份
    客户端:IP 1.1.1.1
    备份端:IP 1.1.1.2
    
    [root@client ~]# cp -r /boot/grub2 /var/www/html/
    [root@client ~] rsync -azP /var/www/html/ 1.1.1.2:/root/web-pack  # 向服务端备份数据
    

    # 客户端添加新的文件向服务端进行备份
    [root@client ~]# touch /var/www/html/test.txt  # 创建新的文件
    [root@client ~] rsync -azP /var/www/html/ 1.1.1.2:/root/web-pack  # 向服务端备份数据
    

    # 当客户端进行数据删除的时候 备份端跟着删除
    [root@client ~]# rm -fr /var/www/html/test.txt
    
    [root@client ~]# rsync -zaP --delete  /var/www/html/ root@1.1.1.2:/root/web-pack
    

    # 不输入密码直接进行备份 主要适用于定时任务中 
    [root@client ~]# ssh-keygen  # 生成秘钥对
    
    [root@client ~]# ssh-copy-id root@1.1.1.2  # 传输秘钥对
    
    [root@client ~]# rsync -zaP  /etc/passwd root@1.1.1.2:/root
    
    

    Rsync服务

    安装 Rsync

    [root@server~]# yum -y install rsync xinetd  # rsnyc服务依赖于xinted
    
    [root@server ~]# rsync --daemon   # 以daemon模式启动
    
    [root@server ~]# netstat -antup | grep 873   # 查看启动的端口
    
    

    常见命令选项

    -a

    权限保存模式 保存传输文件的所有属性

    -r

    递归复制所有下面的资料

    -p

    保留文件原有权限 属性

    -t

    保留时间点 文件原有时间

    -g

    保留复制文件的属组

    -o

    保留复制文件的属主(root only)

    -D

    保留设备文件咨询 (root only)

    -l

    复制所有的连接 拷贝连接文件

    -z

    文件压缩进行传输

    -H

    保留硬链接文件

    -A

    保留ACl文件属性 需要配合--perms

    -p

    显示文件传输进度

    -v

    显示文件的传输过程

    -u

    仅仅进行更新 也就是跳过已经存在的目标位置

    --port

    知道rsync端口

    --delete

    删除备份文件有而源文件没有的文件

    --password-file

    从指定密码文件中获取密码

    -- filter

    需要过滤的文件

    --exclude

    需要过滤的文件

    -- progress

    显示备份过程

    服务搭建

    创建测试用户

    
    源文件端   IP:1.1.1.1
    备份文件端 IP:1.1.1.2
    
    [root@client ~] useradd rget1 && echo "123456" |passwd --stdin rget1  # 创建测试用户
    
    [root@server ~] useradd rget1 && echo "123456" |passwd --stdin rget1  # 创建测试用户
    

    源端服务器设置ACL文件权限

    [root@client ~] setfacl -R -m user:rget1:rwx /var/www/html/
    
    [root@client ~] setfacl -R -m default:rget1:rwx /var/www/html/
    
    [root@client ~] getfacl /var/www/html/
    
    

    备份端进行操作

    
    [root@server ~] ll web-pack/  # 查看文件详细属性
    
    [root@server ~] chown rget1:rget1 -R /root/web-back/  # 修改目录 属主 属组
    

    数据同步

    [root@source ~]# rsync -zav /var/www/html/ rget1@1.1.1.2:/root/web-back
    

    rsync服务使用非系统用户进行数据同步

    rsync.conf

    全局参数

    对 rsync 服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数最终生效。

    局部参数

    定义需要通过 rsync 输出的目彔定义的参数。

    创建配置文件

    
    uid = root #运行进程的身份。
    gid = root #运行进程的组。
    address =1.1.1.1 #监听 IP。
    port =873 #监听端口。
    hosts allow =1.1.1.0/24
    use chroot = yes
    max connections =5 #最大连接数。
    pid file =/var/run/rsyncd.pid #进程 PID,自劢生成。
    lock file =/var/run/rsync.lock #指 max connectios 参数的锁文件。
    log file =/var/log/rsyncd.log #日志文件位置。
    motd file =/etc/rsyncd.motd #客户端登陆后弹出的消息,需要创建。
    
    [wwwroot] #共享模块名称。
    path =/var/www/html #需要备份的路径。
    comment = used for web-data root #描述。
    read only = false #只读权限为假。
    list = yes #是否允讲查看模块信息。
    auth users = rsyncuser #备份的用户,和系统用户无关。
    secrets file =/etc/rsync.passwd #存放用户的密码文件,栺式是 用户名:密码。
    。
    

    创建提示信息以及非系统用户名称密码

    [root@source ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd  # 创建客户端提示信息
    
    [root@source ~]# echo rsyncuser:123456 > /etc/rsync.passwd  # 将非系统用户写入配置文件 格式:用户名:密码
    
    [root@source ~]# chmod 600 /etc/rsync.passwd  # 修改权限 必须为600或者700  否则身份验证出错
    

    启动服务

    [root@source ~]# systemctl start xinetd  # 启动服务
    
    [root@source ~]# rsync --daemon --config=/etc/rsyncd.conf  # 加载配置文件
    
    [root@source ~]# netstat -aunpt | grep 873  # 查看是否启动
    

    rsync+sersync 实现数据实时同步

    sersync的优点

    • 基与 inotify 开发的,类似与 inotify-tools 的工具
    • 可以记彔下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用 rsync 同步的时候,只同步发生变化的文件戒者目录

    rsync+inotify-tools 不 rsync+sersync 架构的区别

    rsync+inotify-tools

    • inotify 只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来。
    • rsync 在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目彔进行同步,当数据量大时,整个目录同步非常耗时(rsync 要对整个目录遍历查找对比文件),因此效率低

    rsync+sersyn

    • sersync 可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字。
    • rsync 在同步时,只同步发生变化的文件或者目录 因此效率徆高。

    同步过程

    • 在同步服务器上开吭 sersync 服务, sersync 负责监控配置路径中的文件系统事件变化。
    • 调用 rsync 命令把更新的文件同步到目标服务器。
    • 需要在主服务器配置 sersync,在同步目标服务器配置 rsync server(注意:是 rsync 服务)

    同步过程与原理

    • 用户实时的往 sersync 服务器上写入更新文件数据。
    • 此时需要在同步主服务器上配置 sersync 服务。
    • 在另一台服务器开启 rsync 守护进程服务,以同步拉取来自 sersync 服务器上的数据。
    • 在另一台服务器开启 rsync 守护进程服务,使 sersync push 文件过来。

  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/SR-Program/p/13175581.html
Copyright © 2011-2022 走看看