简介

  • rsync 是一款高效远程数据同步工具。
  • rsync 能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输量。(增量同步)
  • rsync 中的一项同类软件不常见的重要特性是每个目标的镜像只需发送一次。
  • rsync 可以拷贝/显示目录内容,以及拷贝文件,并可选压缩以及递归拷贝。
  • rsync 命令中,一个冒号走 ssh 协议,两个冒号走 rsync 协议
  • 命令概览

    本地: 
          rsync [OPTION]  SRC  DEST
    
    通过 ssh 访问远程机器:
    pull: rsync [OPTION]  USER@HOST:SRC  DEST
    push: rsync [OPTION]  SRC  USER@HOST:DEST
    
    通过 rsync 守护进程访问远程机器:
    pull: rsync [OPTION]  USER@HOST::SRC  DEST
          rsync [OPTION]  rsync://USER@HOST:PORT/SRC  DEST           
    push: rsync [OPTION]  SRC  USER@HOST::DEST 
          rsync [OPTION]  SRC  rsync://USER@HOST:PORT/DEST
  • 记得使用 --dry-run 预演,避免误操作

实例

推送(push)

  • 推送单个文件(foo.txt)到远程主机目录

    # ssh 方式
    rsync -v /tmp/foo.txt dst_ip:/tmp/
    # ssh 方式
    rsync -v /tmp/foo.txt username@dst_ip:/tmp/
    # ssh 免密(明文暴露了密码,不建议生产环境使用)
    sshpass -p password rsync /tmp/foo.txt username@dst_ip:/tmp/
  • 推送某个目录的所有文件到远程主机目录

    rsync -av /tmp/ dst_ip:/tmp/
    # 显示统计信息
    rsync -avh --stats /tmp/ dst_ip:/tmp/
  • 推送某个目录的所有文件到远程主机目录,并删除远程目录中多余的文件(及子目录)

    rsync -av --delete /tmp/ dst_ip:/tmp/
  • 递归删除某个远程目录

    # 递归删除 dst_ip::/tmp/test 目录下的所有文件,及 test 目录本身
    rsync -av --delete --include=test/*** --exclude=* /tmp/empty/  dst_ip::/tmp/test
    # 等价于
    rsync -av --delete --include=test/ --include=test/** --exclude=* /tmp/empty/ dst_ip::/tmp/test
  • 从 Windows 推送 MongoDB 数据到 Ubuntu

    rsync -avPh --stats /cygdrive/e/mongo/ mongodb@192.168.0.129::mongo

列出远程目录

rsync --list-only username@servername:/directoryname/

删除单个文件

rsync -avpz --delete --include='xxx.txt' --exclude='*' ./ 192.168.0.39::/tmp/qbit/ --dry-run

拉取(pull)

  • 从 Ubuntu 服务器备份 MongoDB 数据到 Windows
# rsync 协议
rsync -avPh --stats mongodb@192.168.0.129::mongo/ /cygdrive/e/mongo
  • 从 Ubuntu 服务器备份 Elasticsearch 数据到 Windows
# ssh 协议
rsync -avPh --stats es@192.168.1.46:/data/es_data/ /cygdrive/h/es_data/
本文出自 qbit snap

qbit
268 声望279 粉丝

引用和评论

0 条评论