rsync
1. rsync简介
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
2. rsync特性
rsync支持很多特性:
- 可以镜像保存整个目录树和文件系统
- 可以很容易做到保持原来文件的权限、时间、软硬链接等等
- 无须特殊权限即可安装
- 快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽
- 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接
- 支持匿名传输,以方便进行网站镜像
3. rsync的ssh认证协议
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
4. rsync命令
#安装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 ~]# 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
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号