rsync服务介绍

1. rsync 命令介绍

rsync工具可以基于ssh和rsync协议实现高效率的远程系统之间复制文件,使用安全的shell连接做为传
输方式,比scp更快,基于增量数据同步,即只复制两方不同的文件,此工具来自于rsync包

注意:通信两端主机都需要安装 rsync 软件

# centos
yum -y install rsync

# ubuntu
apt -y install rsync
1.1 rsync配置

rsync 安装后需要手动配置,之后才能重启 rsync 服务

注:ubuntu 和 centos7 安装完 rsync 成后有配置文件,centos8没有,需要手动配置

cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 2000
timeout = 600
hosts allow = 10.0.0.0/16 172.18.0.0/16
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
ignore errors
read only = false
list = false
host deny = 0.0.0.0/32

[root]
	path = /
	read only = no
	exclude = /root

[rclog]
	path = /
	read only = yes
	exclude = /root

[vmlist]
	path = /search/apache/htdocs/machine/vmlist/
	read only = no
	exclude = /root

管理 rsync 服务

pkill rsync
rsync --daemon < /dev/null
ps -ef|grep rsync
lsof -i:873
1.2 常用参数
参数解释
-a archive归档模式,表示递归方式传输文件,并保持所有文件属性,
等于vzrtopgDl,但不保留ACL(-A)和SELinux属性(-X)
-n模拟复制过程
-v verbose详细模式输出,传输时的进度等信息
-r对子目录以递归模式,即目录下的所有目录都同样传输
-z传输时进行压缩以提高传输效率,–compress-level=NUM可按级别压缩
-t times保持文件时间信息
-o owner保持文件属主信息
-p perms保持文件权限
-g group保持文件属组信息
-P progress显示同步的过程及传输时的进度等信息
-D devices保持设备文件信息
-l links将软链接文件本身进行复制(默认)
-L将软链接文件指向的文件复制
-u如果接收者的文件比发送者的文件较新,将忽略同步
-e --rsh=COMMAND使用的信道协议,指定替代rsh的shell程序,如:ssh
–exclude=PATHERN指定排除不需要传输的文件模式
–delete源数据删除,目标数据也自动同步删除

2. Rsync大致使用三种主要的传输数据的方式:

  • 主机本地间的数据传输(类似于cp命令)

  • 借助scp、ssh等通道来传输数据(类似于scp命令)

  • 以守护进程(socket)的方式传输数据(生产常用功能)

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         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
2.1 本地模式

语法

Local:  rsync [OPTION...] SRC... [DEST]
# SRC:为源,即待拷贝的分区、文件、目录
# DEST:为目的分区、文件、目录

示例

# 拷贝 /etc/hosts 文件到 /tmp 下:
rsync /etc/hosts /tmp <===> cp -p /etc/hosts /tmp

# 拷贝 opt 目录到 /tmp 下:
rsync -avz /opt /tmp/  <===> cp -ap /opt /tmp/
2.2 远程(scp、ssh)传输模式

拉取

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

示例

rsync -aP -e 'ssh -p 4567' root@10.0.0.8:/opt /tmp

rsync -aP /etc/hosts -e 'ssh -p4567' root@10.0.0.8:/tmp/
# -e 'ssh -p 3456',表示通过ssh的通道传输数据,-p 3456可省略

推送

push: rsync [OPTION...] SRC... [USER@]HOST:DEST

示例

rsync -aP /etc/hosts -e 'ssh -p 3456' root@10.0.0.8:/tmp
3、守护进程(socket)模式

拉取(本地作为客户端向rsync服务端拉取文件或目录)

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

示例

# rsync 服务器 172.18.1.15 数据如下
[root@centos8 ~]#pwd
/root
[root@centos8 ~]#ls for*.sh
for1.sh  for2.sh  for3.sh
[root@centos8 ~]#ls etc.tar.gz
etc.tar.gz
[root@centos8 ~]#

# 从 rsync 服务端 172.18.1.15 拉取所有 for 开头的 .sh 文件
root@ubuntu20:~# rsync -aP rsync://root@172.18.1.15:/root/root/for*.sh /tmp/
receiving incremental file list
for1.sh
            114 100%  111.33kB/s    0:00:00 (xfr#1, to-chk=2/3)
for2.sh
            117 100%  114.26kB/s    0:00:00 (xfr#2, to-chk=1/3)
for3.sh
            132 100%   64.45kB/s    0:00:00 (xfr#3, to-chk=0/3)
root@ubuntu20:~#

# 生产中常用写法
# 从 rsync 服务端 172.18.1.15 的 root 模块下拉取 etc.tar.gz 到本地的 /tmp 目录下
root@ubuntu20:~# rsync -aP 172.18.1.15::root/root/etc.tar.gz /tmp/
receiving incremental file list
etc.tar.gz
      5,134,369 100%  132.34MB/s    0:00:00 (xfr#1, to-chk=0/1)
root@ubuntu20:~# ll /tmp/etc.tar.gz
-rw-r--r-- 1 root root 5134369  4月  2 16:51 /tmp/etc.tar.gz
root@ubuntu20:~#


推送(本地作为 rsync 服务端向远程推送文件或目录)

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

示例

# 生产中常用写法
# 将本地的 key.sh 文件推送到 172.18.1.15 的 /tmp 目录下
root@ubuntu20:~# rsync -aP key.sh 172.18.1.15::root/tmp/
sending incremental file list
key.sh
          2,074 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

# 将本地的公钥文件推送到 172.18.1.15 的 /tmp 目录下
root@ubuntu20:~# rsync -aP ~/.ssh/id_rsa.pub 172.18.1.15::root/tmp
sending incremental file list
id_rsa.pub
            567 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
root@ubuntu20:~#

# 生产中不常用的写法
root@ubuntu20:~# rsync -aP hosts.txt rsync://root@172.18.1.15:/root/tmp
sending incremental file list
hosts.txt
             24 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
root@ubuntu20:~#

注意

  • 与远程 shell 不同的是,[USER@]HOST::SRC… 和 [USER@]HOST::DEST 结尾处均为双冒号连接 SRC 或 DEST,

  • 此处 SRC 和 DEST 不是路径,而是 rsync 守护进程中配置的模块名

示例:排除 /data 下不需要打包的目录

tar -zcvf data.tar.gz --exclude=d --exclude=e data
或
tar -zcvf data.tar.gz --exclude=data/d --exclude=data/e data

示例:主机之间数据完全同步(即无差异同步)–delete

# 1、清空或删除本地目录
# 新建一个空目录
mkdir null 
# 用rsync删除目标目录
rsync -avzP --delete-before -d null/ /mnt/ 
# 使得mnt目录的内容和空目录null一样,即删除目录文件

# 2、清空或删除远程目录
# 新建一个空目录
mkdir null
rsync -avzP --delete null/ rsync_backup@10.0.0.8::backup/

生产应用

# 10.139.36.90 上 df -i 显示 /var 目录 inode 已超过80%
# 查看小文件太多,已无法使用rm删除
cd /var/spool/postfix
# 新建一个空目录
mkdir null		
rsync -aP --delete null/ maildrop/

特别提示

# 仅把/opt/目录里面的内容同步过来,opt目录本身并不同步
rsync -av /opt/ /tmp/ 

#表示把/opt本身及其内容全部同步到/tmp下
rsync -av /opt  /tmp/ 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值