zoukankan      html  css  js  c++  java
  • rsync基本使用详解

    https://blog.csdn.net/woaizxy123/article/details/88660759

    目录
    • 了解rsync 功能及其特点
    • 了解rsync语法及常用选项功能
    • 了解rsync命令的三种基本常用使用方法
    • 了解并掌握筛选rsync 的传输目标

    简介

    rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。
    rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync算法进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
    参考 How Rsync Works A Practical Overview 进一步了解 rsync 的运作机制。
    rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,目前由 http://rsync.samba.org 维护。
    rsync 支持大多数的类 Unix 系统,无论是 Linux、Solaris 还是 BSD上 都经过了良好的测试。
    配置免密:
    在这里插入图片描述

    基本特性

    ⚫ 可以镜像保存整个目录树和文件系统
    ⚫ 可以很容易做到保持原来文件的权限、时间、软硬链接等
    ⚫ 无须特殊权限即可安装
    ⚫ 优化的流程,文件传输效率高
    ⚫ 可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接
    ⚫ 支持匿名传输,以方便进行网站镜象在 windows 平台下也有相应的版本,如 cwrsync 和DeltaCopy 等。

    使用基本方法

    在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。
    • 无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有
    变化的文件(对于新文件)或文件的变化部分(对于原有文件)。
    • 本节重点介绍 rsync 客户命令的使用,有关 rsync 服务器的配置和使用请参见下节。
    • rsync 在首次复制时没有速度优势,速度不如 tar,因此当数据量很大时可以考虑先使用 tar 进行首次复制,然后再使用 rsync 进行数据同步。

    rsync命令:

    rsync 命令基本格式为:
    1)本地使用:
    rsync [OPTION…] SRC… [DEST]
    2)通过远程 Shell 使用:
    拉: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
    推: rsync [OPTION…] SRC… [USER@]HOST:DEST
    3)访问 rsync 服务器:
    拉: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
    推: rsync [OPTION…] SRC… [USER@]HOST::DEST
    拉: rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
    推: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST

    其中: SRC: 是要复制的源位置 DEST: 是复制目标位置
    若本地登录用户与远程主机上的用户一致,可以省略 USER@
    使用远程shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符
    使用 rsync服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符 当访问 rsync 服务器时也可以使用 rsync:// URL
    “拉”复制是指从远程主机复制文件到本地主机(下载) “推”复制是指从本地主机复制文件到远程主机(上传) 当进行“拉”复制时,若指定一个SRC 且省略 DEST,则只列出资源而不进行复制

    rsync常用选项

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    rsync基本使用语法

    本地磁盘同步数据
    rsync -a --delete /etc/ /www/在这里插入图片描述
    基于ssh的rsync远程同步数据(推)
    rsync -av /etc root@192.168.249.135:/www/
    在这里插入图片描述

    基于ssh的rsync远程同步数据(拉)
    /www/两个不同,前者为ip机的目录,后者是给本机的
    在这里插入图片描述

    注:拉去目标需要配置上下文
    配置Rsync服务器,需要将共享目录的SELinux Context(上下文)配置为指定类型的上下文,否则目录无法访问
    获取系统默认定义的所有类型的上下文,使用semanage fcontext -l
    查看文件的上下文,在使用ls -l时,加上Z选项,也就是ls -lZ
    例如
    ll -Z /
    
    配置上下示例
    临时配置,在autorelabel时,会恢复默认上下文
    chcon -t public_content_t /images
    永久配置上下文,在autorelabel时,还是会恢复到自定义的上下文类型
    #semanage fcontext -a -t public_content_t "/images(/.*)?"
    #restorecon -Rv /images
    恢复上下文为自定义的public_content_t
    

    定期自动同步数据

    创建脚本:
    在这里插入图片描述
    计划定时任务:每天00:10分执行
    在这里插入图片描述

    筛选rsync的传输目标

    –exclude=文件或目录名 指定删除一个不需要传输的文件匹配模式
    –include=文件或目录名 制定需要传输的文件匹配模式
    当 include/exclude 的规则较复杂时,可以将规则写入规则文件。使用规则文件可以灵活地选择
    传输哪些文件(include)以及忽略哪些文件(exclude)。
    • 若文件/目录在剔除列表中,则忽略传输
    • 若文件/目录在包含列表中,则传输
    • 若文件/目录未被提及,也传输
    在 rsync 的命令行中使用 --exclude-from=FILE 或 --include-from=FILE 读取规则文件。
    规则文件 FILE 的书写约定:
    • 每行书写一条规则 RULE
    • 以 # 或 ; 开始的行为注释行
    包含(include)和排除(exclude)规则的语法如下:
    • include PATTERN 或简写为 + PATTERN
    • exclude PATTERN 或简写为 – PATTERN
    PATTERN 的书写规则如下:
    • 以 / 开头:匹配被传输的跟路径上的文件或目录
    • 以 / 结尾:匹配目录而非普通文件、链接文件或设备文件
    • 使用通配符
    • *:匹配非空目录或文件(遇到 / 截止)
    • **:匹配任何路径(包含 / )
    • ?:匹配除了 / 的任意单个字符
    • [:匹配字符集中的任意一个字符,如 [a-z] 或 [[:alpha:]]
    • 可以使用转义字符 将上述通配符还原为字符本身含义
    举例说明:

    例1:
    # 不传输所有后缀为 .o 的文件
    - *.o
    # 不传输传输根目录下名为 foo 的文件或目录
    - /foo
    # 不传输名为 foo 的目录
    - foo/
    # 不传输 /foo 目录下的名为 bar 的文件或目录
    - /foo/bar
    例2:
    # 传输所有目录和C语言源文件并禁止传输其他文件
    + */
    + *.c
    - *
    定义规则文件
    
     不传输 logs 目录
    - logs/
    # 不传输后缀为 .tmp 的文件
    - *.tmp
    # 传输 Apache 虚拟主机文档目录(/*/ 匹配域名)
    + /srv/www/
    + /srv/www/*/
    + /srv/www/*/htdocs/
    + /srv/www/*/htdocs/**
    # 传输每个用户的 public_html 目录(/*/ 匹配用户名)
    + /home/
    + /home/*/
    + /home/*/public_html/
    + /home/*/public_html/**
    # 禁止传输其他
    - *
    

    在这里插入图片描述

    __________________________________________________________________________________________________________________________________

    rsync 只同步指定类型的文件

     

    需求: 同步某个目录下所有的图片(*.jpg),该目录下有很多其他的文件,但只想同步*.jpg的文件。
    rsync 有一个--exclude 可以排除指定文件,还有个--include选项的作用正好和--exclude相反。
    那直接使用--include="*.jpg"是否可以呢?
    rsync -av  --include="*.jpg"  /src/   /des/
    实验证明,这样是不对的。
    而正确的答案是
    rsync -av  --include="*.jpg" --exclude=*  /src/ /des/

  • 相关阅读:
    常量
    语音合成技术(深度学习方法简介)
    在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
    Bash Bang (!) commands(bash的“!”命令,重新运行前一个命令的全部或部分。)
    Ubuntu apt pip conda 代理设置
    rsync 远程数据同步
    设置 jupyter notebook 可远程访问
    ubuntu 挂载硬盘(GPT分区,大于2T的硬盘)
    用树结构构造一篇文章(待完成)
    数组切分(句子拼接)
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/13668011.html
Copyright © 2011-2022 走看看