Rsync远程同步

文章目录
[隐藏]

1.介绍

Rsync(Remote synchronize) 是一个远程同步工具,通过LAN、WAN快速同步多台主机之前的文件。也可以同步本地硬盘不同目录。
特性:
1. 可以镜像保存整个目录树和文件系统
2. 可以保持源文件权限、时间、软硬链接
3. 无特殊权限即可安装
4. 使用增量同步算法,文件传输效率高,同步时间快
5. 可以使用rcp、ssh方式验证传输
6. 支持匿名传输,方便网站镜像
7. 传输数据加密,保证数据安全性
缺点:
1. 因为增量更新方式,更新前需要检查项目所有文件,所以项目很大会很耗时。
2. 不能实时监测,同步数据。

2.安装配置

1. 安装
yum install rsync -y

2. 配置
[root@backup ~]# cat /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    #####################################
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup

3. 初始环境配置:
    1. 创建rsync用户(rsync程序需要rsync这个用户来运行)
    [root@backup ~]# groupadd rsync
    [root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
    [root@backup ~]# id rsync
        uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)

    2. 虚拟用户    /etc/rsync.passwd      username:password
    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
    [root@backup ~]# chmod 600 /etc/rsync.passwd
    
    3. 创建一个/backup目录
    [root@backup ~]# mkdir /backup
    [root@backup ~]# chown -R rsync.rsync /backup/
    
    4. 启动
    [root@backup ~]# systemctl start rsyncd
    [root@backup ~]# systemctl enable rsyncd
    
    5. 检测是否启动
    [root@backup ~]# netstat -lntp | grep 873
    tcp        0      0 0.0.0.0:873       0.0.0.0:*        LISTEN    8616/rsync

3.基本使用

rsync 命令基本格式为:
1:本地使用:
rsync [OPTION…] SRC… [DEST]
2:通过远程 Shell 使用:
PULL: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
PUSH: rsync [OPTION…] SRC… [USER@]HOST:DEST
3:访问 rsync 服务器:
PULL: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
PUSH: rsync [OPTION…] SRC… [USER@]HOST::DEST
PULL: rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
PUSH: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST

注:
SRC: 是要复制的源位置 
DEST: 是复制目标位置
若本地登录用户与远程主机上的用户一致,可以省略 USER@
使用远程shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符
使用 rsync服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符 
当访问 rsync 服务器时也可以使用 rsync:// URL
PULL:复制是指从远程主机复制文件到本地主机(下载) PUSH:复制是指从本地主机复制文件到远程主机(上传) 当进行“PULL”复制时,若指定一个SRC 且省略 DEST,则只列出资源而不进行复制

4.参数

-a           #归档模式传输, 等于-tropgDl
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-D           #保持设备文件信息
-P           #显示同步的过程及传输时的进度等信息
-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100       #限速传输
--delete            #让目标目录和源目录数据保持一致,源有什么,目标就有什么(需要源目录和目标目录路径一致)

5.实例:update.sh(本地文件使用SSH验证方式同步到服务器,第一次列出更新的文件,确认更新后,同步文件到服务器)

#!/bin/bash
read -p "是否确定更新?  Y|N|YES|NO: " choice
case ${choice} in
[yY][eE][sS]|[yY] )
     #检查更新的文件
     rsync -acvne 'ssh -i /Users/mini/.ssh/id_rsa' /data/test/ root@120.xx.xx.xx:/data/test
        read -p "是否确定更新? Y|N|YES|NO: " choice
                case ${choice} in
        [yY][eE][sS]|[yY] )
                echo -e "\033[31;1m开始更新\033[0m"
                #更新
                rsync -ave 'ssh -i /Users/mini/.ssh/id_rsa' /data/test/ root@120.xx.xx.xx:/data/test
                echo -e "\033[31;1m更新完成\033[0m";;
        * )
                echo -e "\033[31;1m取消更新\033[0m";;
        esac
     ;;
[nN][oO]|[nN] )
     echo -e "\033[31;1m取消更新033[0m"
    ;;
* )
     echo -e "\033[31;1m请输入有效字符\033[0m"
    ;;
esac


注:
/Users/mini/.ssh/id_rsa:本地SSH KEY公钥(服务器需要添加该公钥)
/data/test/:本地文件目录路径
120.xx.xx.xx:/data/test:目标服务器IP + 目标目录路径
208 人浏览过

发表评论

邮箱地址不会被公开。 必填项已用*标注