rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
rsync支持很多特性:
rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽scp、ssh等方式来传输文件,当然也可以通过直接的socket连接rsync命令来同步系统文件之前要先登录remote主机认证,认证过程中用到的协议有2种:
ssh协议rsync协议
rsync server端不用启动rsync的daemon进程,只要获取remote host的用户名和密码就可以直接rsync同步文件rsync server端因为不用启动daemon进程,所以也不用配置文件/etc/rsyncd.conf
ssh认证协议跟scp的原理是一样的,如果在同步过程中不想输入密码就用ssh-keygen -t rsa打通通道
#这种方式默认是省略了 -e ssh 的,与下面等价:
rsync -avz /SRC -e ssh root@172.16.12.129:/DEST
-a //文件宿主变化,时间戳不变
-z //压缩数据传输
#当遇到要修改端口的时候,我们可以:
rsync -avz /SRC -e "ssh -p2222" root@172.16.12.129:/DEST
#修改了ssh 协议的端口,默认是22
#安装rsync
[root@localhost ~]# yum -y install rsync
#Rsync的命令格式常用的有以下三种:
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
#对应于以上三种命令格式,rsync有三种不同的工作模式:
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:
[root@localhost ~]# sync -avz jdk-8u281-linux-x64.tar.gz /tmp/
sync: invalid option -- ‘a‘
Try ‘sync --help‘ for more information.
[root@localhost ~]# rsync -avz jdk-8u281-linux-x64.tar.gz /tmp/
sending incremental file list
jdk-8u281-linux-x64.tar.gz
sent 143,083,590 bytes received 35 bytes 22,012,865.38 bytes/sec
total size is 143,722,924 speedup is 1.00
[root@localhost ~]# ls /tmp/
jdk-8u281-linux-x64.tar.gz
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器远程机需要安装rsync。当DST路径地址包 含单个冒号":"分隔符时启动该模式。如:
[root@localhost ~]# rsync -avz test 192.168.248.200:/opt/
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径 包含单个冒号":"分隔符时启动该模式。如:
[root@localhost ~]# rsync -avz 192.168.248.200:/opt/file /opt/
rsync常用选项:
-a, --archive #归档
-v, --verbose #显示详细输出
-q, --quiet #静默模式
-r, --recursive #递归
-p, --perms #保持原有的权限属性
-z, --compress #在传输时压缩,节省带宽,加快传输速度
--delete #在源服务器上做的删除操作也会在目标服务器上同步
| 系统 | IP | 安装应用 |
| Centos8 | 192.168.248.202 | rsync |
| Centos8 | 192.168.248.200 | rsync |
基于ssh协议本地同步
如果目的地没有这个文件,系统会自动创建这个文件,如果有这个文件只会同步不一样的内容
#同步目录
[root@localhost ~]# mkdir -p a/{b/{d,e},c/{f,g}}
[root@localhost ~]# tree a
a
├── b
│ ├── d
│ └── e
└── c
├── f
└── g
#同步一个文件
[root@localhost ~]# rsync -avz a /opt/dirTest
[root@localhost ~]# tree /opt/dirTest/
/opt/dirTest/
└── a
├── b
│ ├── d
│ └── e
└── c
├── f
└── g
#同步多个文件
[root@localhost ~]# rsync -avz test a /opt/testDir1
[root@localhost ~]# tree /opt/testDir1/
/opt/testDir1/
├── a
│ ├── b
│ │ ├── d
│ │ └── e
│ └── c
│ ├── f
│ └── g
└── test
基于sync同步
[root@localhost ~]# rsync -avz test a 192.168.248.200:/opt/TestDir
[root@Centos8 ~]# tree /opt
/opt
└── TestDir
├── a
│ ├── b
│ │ ├── d
│ │ └── e
│ └── c
│ ├── f
│ └── g
└── test
原文:https://www.cnblogs.com/diqiyao/p/14751232.html