rsync 远程数据同步

发布时间: 更新时间: 总字数:1778 阅读时间:4m 作者:IP:上海 网址

rsync命令是一个远程数据同步工具,可快速同步多台主机间的文件。rsync只传送两个文件的不同部分,因此速度相当快。

安装

yum install rsync -y

apt install rsync -y

help

rsync-help ...

工作模式

拷贝本地文件

当 SRC 和 DES 路径信息都不包含有单个冒号":“分隔符时就启动这种工作模式。如:

rsync -a /data /backup

拷贝本机文件远程机器

使用一个远程 shell 程序(如 rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当 DST 路径地址包含单个冒号”:“分隔符时启动该模式。如:

rsync -avz *.py <remote-ip>:/backup

拷贝远程文件到本机

使用一个远程 shell 程序(如 rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当 SRC 地址路径包含单个冒号”:“分隔符时启动该模式。如:

rsync -avz <remote-ip>:/data /backup

从远程 rsync 服务器中拷贝文件到本地机

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
[ftp]
    path = /var/ftp/pub
    comment = whole ftp area
    pre-xfer exec = /usr/local/bin/autobackup-hook pre  # 同步前执行
    post-xfer exec = /usr/local/bin/autobackup-hook post  # 同步后执行
    # auth users = <user>
    # secrets file = /etc/rsyncd.secrets  # echo <user>:<password> >> /etc/rsyncd.secrets && chmod 400 /etc/rsyncd.secrets
		# hosts allow = ip1,ip2
		# log format = "%t [%p] %o %h [%a] %m (%u) %f %l"

[www]
    path = /var/www
    comment = web file
  • 启动服务
systemctl start rsync
  • 当 SRC 路径信息包含 :: 分隔符时启动该模式。如:
rsync -av root@10.10.10.10::www /databack

从本地机器拷贝文件到远程 rsync 服务器中

当 DST 路径信息包含 :: 分隔符时启动该模式。如:

rsync -av /databack root@10.10.10.10::www

列远程机的文件列表

这类似于 rsync 传输,不过只要在命令中省略掉本地机信息即可。如:

rsync -v rsync://10.10.10.10/www

使用示例

rsync -av -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress --remove-source-files /data/ root@10.10.10.10:/data >> /tmp/rsync.log
  • -z :表示压缩,会牺牲性能,网络允许的条件下不建议价
  • -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" :禁用 host key 验证
  • --progress :显示进度
  • --remove-source-files :传完后,删除源文件
rsync -avP --bwlimit=81920  /data/  /data_bak/  --exclude=/data/logs1  --exclude=/data/logs2
  • -a archive mode
  • -v increase verbosity
  • -P same as --partial --progress
  • --bwlimit=81920 限速 81920 / 1024 = 80MB/s
rsync -av --include="*.txt" --exclude='**/abc/' --delete source/ destination
  • 同步 epel 源(摘自互联网)
cat << EOF > rsync_epel.sh
#!/bin/bash
#epel
mkdir -pv /data/mirror/epel/7/x86_64/
rsync -avzP --bwlimit=30720 --timeout=120 --contimeout=120 --exclude-from=/opt/rsync/exclude.list rsync://rsync.mirrors.ustc.edu.cn/repo/epel/7/x86_64/ /data/mirror/epel/7/x86_64/
#rm -rf /data/mirror/epel/7/x86_64/.olddata
#createrepo /data/mirror/epel/7/x86_64/
EOF

F&Q

rsyncd @ERROR: invalid gid nobody

  • 修改 /etc/rsyncd.conf 为对应的 id
gid = 0
uid = 0
本文总阅读量 次 本站总访问量 次 本站总访客数