zoukankan      html  css  js  c++  java
  • Rsync

    原文转载自(有删改):https://www.kancloud.cn/noahs/linux/1629280

    一 基础知识

     1、Rsync简介

      可实现全量及增量、本地或远程的数据同步备份的工具
      官网:https://www.samba.org/ftp/rsync/rsync.html
      相当于cp(本地复制)、scp(远程复制)、rm(删除)命令的合体但比这三个命令更优秀
      既能够备份数据内容,也能够备份属性信息

     2、Rsync优缺点:

    优点 缺点

    支持拷贝特殊文件如链接文件,设备等

    大量小文件同步的时候,时间较长,有时候rsync进程可能会停止

    可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能

    同步10G这样的大文时时,可能会中断,未完整同步前,是隐藏文件

    可以做到保持元文件或目录的权限、时间、软硬链接、属主、组等所有属性均不变

    rsync本身不对数据加密,需配合ssh等实现加密

    可时间增量同步、即只同步发生变化的数据,因此数据的效率很高

     

    可以使用rcp,rsh,ssh等方式来配合传输文件达到加密传输

     

    可以通过socket(守护进程方式)传输文件和数据(服务端和客户端)

     

    支持匿名的、认证的(无需系统用户)进程模式传输,可方便安全的进行数据备份及镜像

     

     3、Rsync的工作方式

      单个主机本地之间的数据传输(类似于cp)

      借助rcp,ssh等通道来传输数据(类似于scp)

      以守护进程(socket)的方式来传输数据(服务端和客户端)

    二 普通用法

     1、基本参数

      注:rsync备份时,如果备份/tmp,表示备份目录名和目录下的内容,如果备份/tmp/,表示只备份目录下的内容

    参数 说明
    -v 详细模式输出,传输时的进度等信息
    -z 传输时进行压缩以提高传输效率。--compress-level=NUM可按级别压缩
    -a 归档模式,表示以递归方式传输文件,并保持文件所有属性,等于rtopgDI
    -r 对子目录以递归传递,即目录下的所有目录都同样传输,注意是小写r
    -t 保持稳健时间信息
    -o 保持文件属主信息
    -p 保持文件权限
    -g 保持文件属组信息
    -P 显示同步的过程及传输的进度等信息
    -D 保持设备文件信息
    -l 保留软链接
    -e 使用指定的shell程序替代传输用的rsh管道,如ssh(-e 'ssh -p 22')
    --exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样)
    --exclude-from=file 指定排除某个目录中的某个文件(和tar参数一样)
    --bwlimit=RATE 限制传输时的带宽(避免全部占用完带宽)
    --partial 断点续传
    --delete 让目标目录和源目录数据保持一致(不一致会删除)

     

     2、普通模式

    #本地模式:
    rsync [OPTION...] 源路径 目的路径
    
    #远程模式:
    推:rsync [OPTION...] [远端用户@]主机名或IP:源路径 目标路径
    拉:rsync [OPTION...] 源路径 [远端用户@]主机名或IP:目标路径
    
    #ps:
    前面的是原路径,后面的是目标路径,推和拉的区别仅仅是远端地址所在的位置
    远端用户名可省略,省略代表用本机当前用户去连接

     3、示例

    #备份本机hosts文件到tmp目录
    rsync -avz /etc/hosts /tmp
    
    #推送本机hosts文件到另外一台主机tmp目录
    rsync -avz /etc/hosts root@172.16.1.31:/tmp/
    
    #拉取远端主机hosts文件本机tmp目录
    rsync -avz root@172.16.1.31:/etc/hosts /tmp/
    
    #配合ssh加密传输数据[-e]
    rsync -avz -e 'ssh -p 22' /etc/hosts root@172.16.1.31:/tmp/
    
    #同步时排除某些文件[--exclude]
    #--exclude参数使用相对路径,可以排除单个和多个文件

    #也可以用--exclude-from=paichu.txt,排除这个文件中指定的文件 rsync
    -avz --exclude=a.txt /backup/ root@172.16.1.41:/tmp/ rsync -avz --exclude-from=paichu.txt /backup/ root@172.16.1.41:/tmp/ #无差异同步[--delete]
    #--delete会把服务器上有而本地没有的数据全部删除,非常危险,慎用 rsync
    -avz --delete /backup/ root@172.16.1.41:/tmp/ #限速[--bwlimit] sync -avz --bwlimit=100 /backup/ root@172.16.1.41:/tmp/

    三 守护进程模式

     1、基础说明

      搭建服务端启动守护进程(873端口),然后在客户端推或拉数据进行备份

      比普通远程模式好的地方在于,免交互的备份数据,常配合定时任务进行定时备份

      推拉的区别同普通模式,用的更多的是推模式,因为拉的模式客户端数量很大时,会非常消耗服务端资源,而推模式请求由客户端发起,不占用服务端资源

    语法:
    拉: rsync [OPTION...] [USER@]HOST::SRC DEST
    推: rsync [OPTION...] SRC [USER@]HOST::DEST

     2、服务器端配置过程:

      1)添加rsync服务的用户(linux系统自带rsync,若没有可yum下载)

    useradd -s /sbin/nologin -M rsync

      2)rsyncd.conf 配置文件

    #注释用的#号必须写在行首
    uid = rsync                  #用户,远端的客户机使用rsync用户来访问共享目录
    gid = rsync                  #用户组
    use chroot = no              #安全相关
    max connections = 200          #最大连接数
    timeout = 300                 #超时时间
    pid file = /var/run/rsyncd.pid     #进程对应的进程号文件
    lock file = /var/run/rsync.lock    #锁文件,防止文件不一致
    log file = /var/log/rsyncd.log     #日志文件
    ignore errors                 #忽略错误
    list = false                  #不允许列表(ls)
    hosts allow = 172.16.1.0/24       #白名单,允许的网段
    #hosts deny = 0.0.0.0/32          #黑名单,拒绝的网段
    auth users = rsync_backup        #链接的虚拟用户,非系统用户
    secrets file = /etc/rsync.password  #虚拟用户的账号密码文件
    [backup]                      #模块名称,可以有多个,称为多模块
    comment = "backup dir by noah"    #模块描述信息
    path = /backup               #服务器提供的共享目录 
    read only = false             #可写
    
    #只有白名单,白名单网段或主机信息允许。其余阻止
    #只有黑名单,黑名单网段或主机信息阻止,其余允许
    #黑白名单都有,相当于只有黑名单的方式

      3)创建共享目录并授权rsync服务管理

    mkdir /backup -p
    chown -R rsync.rsync  /backup/

      4)创建认证文件并修改权限

    #此处的用户和密码,非系统中的用户和密码
    echo "rsync_backup:123456" >/etc/rsync.password chmod 600 /etc/rsync.password

      5)启动服务并设置开机自启

    rsync --daemon
    echo "/usr/bin/rsync --daemon" >>/etc/rc.local

      3、客户端配置

       1)生成连接服务器需要的密码文件

    echo "123456" >/etc/rsync.password
    chmod 600 /etc/rsync.password

      2)同步推送

    #ip后面跟的backup是服务器配置文件中的模块名,不是备份路径
    rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
  • 相关阅读:
    烂笔头@WP 的博文仅供自己学习的备忘录
    工具---搜索
    ubuntu---安装teamviewer和向日葵
    Ubuntu---标注工具 XXX-labelImg
    ubuntu---深度学习标注工具CasiaLabeler
    ubuntu---kazam安装
    ubuntu---notepadqq安装
    ubuntu---TeamViewer安装
    ubuntu---鼠标的乌龙事件
    ubuntu---终端下不显示 中文文字 的解决方法
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/15762284.html
Copyright © 2011-2022 走看看