精华内容
下载资源
问答
  • 它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer 算法闻名。 rsync监听端口:87

    rsync服务基本介绍

    Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同泰备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync.软件适用于unix/linux/windows等多种操作系统平台。Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer 算法闻名。

    rsync监听端口:873
    rsync运行模式:C/S

    Rsync(Remote synchronization) 功能

    • 本地和远程两台主机之间的数据快速复制、远程全量或增量备份(类似scp命令)
    • 支持配置守护进程方式实现异机数据复制(备份)
    • 支持本地主机的不同分区或目录之间全量及增量复制数据(类似cp,比cp 由于可以实现增量拷贝)

    rsync 命令功能

    1. 实现本地数据同步复制(本地工作模式,相当于cp命令)
    2. 实现远程数据同步复制(远程Shell工作模式,相当于scp命令)
    3. 实现数据信息删除功能(本地工作模式,相当于rm命令)
    4. 实现数据信息查看功能(本地或远程工作模式,相当于ls命令)

    备份方式

    全量备份

    所有数据全部传送。
    把原来的文件和新的文件一起统一传送
    全量复制,效率低

    假设客户端上有 file1 file2 file3文件,服务端上有 file1文件,现要将客户端上的数据备份至服务端。

    在这里插入图片描述

    增量备份方式

    在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输
    增量复制,效率较高

    假设客户端上有 file1 file2 file3 文件,服务端上有 file1 文件,现要将客户端上的数据备份至服务端
    在这里插入图片描述

    rsync命令使用方法

    rsync命令 属于1v4命令

    命令参数

    1. -a #归档模式传输, 等于-tropgDl
    2. -v #详细模式输出, 打印速率, 文件数量等
    3. -z #传输时进行压缩以提高效率
    4. -r #递归传输目录及子目录,即目录下得所有目录都同样传输
    5. -t #保持文件时间信息
    6. -o #保持文件属主信息
    7. -p #保持文件权限
    8. -g #保持文件属组信息-l #保留软连接
    9. -P #显示同步的过程及传输时的进度等信息
    10. -D #保持设备文件信息-L #保留软连接指向的目标文件
    11. -e #使用的信道协议,指定替代 rsh 的 shell 程序
    12. –exclude=PATTERN #指定排除不需要传输的文件模式
    13. –exclude-from=file #文件名所在的目录文件
    14. –bwlimit=100 #限速传输
    15. –partial #断点续传
    16. –delete #让目标目录和源目录数据保持一致

    本地备份命令:cp

    注:创建一个文件夹写入数据

    mkdir /aaa
    cd /aaa/
    touch a b c
    
    ll
    总用量 0
    总用量 0
    -rw-r--r--. 1 root root 0 1月   3 15:54 a
    -rw-r--r--. 1 root root 0 1月   3 15:54 b
    -rw-r--r--. 1 root root 0 1月   3 15:54 c
    

    本地备份数据方法1

    注:/aaa/ 后面带 / 则是备份里面的文件

    rsync -avz /aaa /opt/
    sending incremental file list
    ./
    a
    b
    c
    sent 159 bytes  received 72 bytes  462.00 bytes/sec
    total size is 0  speedup is 0.00
    cd /opt/
    ll
    总用量 0
    -rw-r--r--. 1 root root 0 1月   3 15:54 a
    -rw-r--r--. 1 root root 0 1月   3 15:54 b
    -rw-r--r--. 1 root root 0 1月   3 15:54 c
    drwxr-xr-x. 2 root root 6 3月  26 2015 rh
    

    本地备份数据方法2

    注:/aaa 后面没有带 / 则是备份整个目录

    rsync -avz /aaa /opt/
    sending incremental file list
    aaa/
    aaa/a
    aaa/b
    aaa/c
    cd /opt/
    ll
    总用量 0
    -rw-r--r--. 1 root root  0 1月   3 15:54 a
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    -rw-r--r--. 1 root root  0 1月   3 15:54 b
    -rw-r--r--. 1 root root  0 1月   3 15:54 c
    drwxr-xr-x. 2 root root  6 3月  26 2015 rh
    

    远程备份数据

    1.全量备份
    本机地址:192.168.100.12
    远程地址:192.168.100.2

    备份远程数据
    本机地址:192.168.100.12

     rsync -avz /aaa root@192.168.100.2:/bbb

    远程地址:192.168.100.2 查看

    cd /bbb/
    ll
    总用量 0
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    
    cd aaa/
    ll
    总用量 0
    -rw-r--r--. 1 root root 0 1月   3 15:54 a
    -rw-r--r--. 1 root root 0 1月   3 15:54 b
    -rw-r--r--. 1 root root 0 1月   3 15:54 c

    2.增量备份

    本机地址:192.168.100.12

    rsync -avz /aaa/ root@192.168.100.2:/opt
    root@192.168.100.2's password: 
    sending incremental file list
    aaa/
    aaa/a
    aaa/b
    aaa/c
    cd /opt
    ll
    总用量 0
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    drwxr-xr-x. 2 root root  6 3月  26 2015 rh
    

    代替删除命令:rm

    –delete

    创建目录文件
    192.168.100.2 :/aaa 代替删除

    mkdir /ccc
    echo '111' > index.html
    总用量 4
    -rw-r--r--. 1 root root 4 1月   3 16:44 index.html
    [root@lvs2 ccc]# rsync -avz --delete /ccc/  root@192.168.100.2:/aaa
    root@192.168.100.2's password: 
    sending incremental file list
    created directory /aaa
    ./
    index.html

    192.168.100.2查看

    //没有代替修改前
    cd /bbb/
    ll
    总用量 0
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    
    //代替修改后
    总用量 4
    -rw-r--r--. 1 root root 4 1月   3 16:44 index.html

    rsync 拉操作

    Pull: rsync [OPTION…] [USER@]HOST:SRC…[DEST]
    [USER@] 以什么用户身份拉取数据(默认以当前用户)

    注意:需要对端也要有相同的用户(对端用户密码)
    hosts 指定远程主机IP地址或者主机名称
    SRC 要拉取的数据信息
    dest 保存到本地的路径信息

    192.168.100.2创建一个文件

     ll /opt/
    总用量 0
    -rw-r--r--. 1 root root  0 1月   3 16:31 a
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    drwxr-xr-x. 2 root root  6 3月  26 2015 rh
    
     ll /opt/
    总用量 4
    -rw-r--r--. 1 root root  0 1月   3 16:31 a
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    -rw-r--r--. 1 root root  4 1月   3 18:51 bbb
    drwxr-xr-x. 2 root root  6 3月  26 2015 rh
    
    cat bbb
    123
    

    192.168.100.12拷贝192.168.100.2文件bbb

    rsync -avz root@192.168.100.2:/opt/ /opt
    receiving incremental file list
    ./
    .aaa.swp
    a
    bbb
    
    
    ll /opt
    总用量 0
    -rw-r--r--. 1 root root  0 1月   3 15:54 a
    drwxr-xr-x. 2 root root 33 1月   3 15:54 aaa
    -rw-r--r--. 1 root root  0 1月   3 15:54 b
    -rw-r--r--. 1 root root  4 1月   3 18:51 bbb //拷贝成功
    -rw-r--r--. 1 root root  0 1月   3 15:54 c
    drwxr-xr-x. 2 root root  6 3月  26 2015 rh
    
    cat bbb
    123

    配置rsync服务器

    rsync同步源指备份操作的远程服务器,也称为备份源
    在这里插入图片描述

    rsync服务器配置文件修改

    [root@rsync ~]# vi /etc/rsyncd.conf 
    uid = nobody                                   # 7  运行用户是匿名用户,可以改也可以不改
    gid = nobody                                   # 8  运行组是匿名用户,可以改也可以不改
    use chroot = no                                # 9 不锁定宿主目录
    max connections = 200                          # 10 最大连接数
    pid file = /var/run/rsyncd.pid                 # 11 进程文件存储路径
    log file = /var/log/rsyncd.log                 # 接 11 行添加第 12 行,日志文件路径
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2    # 17 哪些数据类型不做压缩
    hosts allow = 192.168.0.0/24                      # 18 添加,设置 rsync 下共享目录
    address = 192.168.100.12                            # 19 添加,监听地址为本机  
    port 873                                       # 20 添加,本机端口号
    [wwwroot]                                      # 21 修改共享目录
    path = /www                                    # 22 目录路径
    comment = web site page                        # 23 网页描述
    read only = yes                                # 24 权限为只读
    auth users = lisi                              # 25 访问的授权账号与密码
    secrets file = /etc/user.db                    # 26 存账户名密码的数据库文件

    账户名与密码

    vi /etc/user.db
    lisi:123456

    给本地读的权限

    chmod 600 /etc/user.db 在这里插入代码片

    重启服务

    rsync --daemon               # 以守护进程开启
    netstat -anpt | grep 873
    tcp        0      0 192.168.100.12:873           0.0.0.0:*           LISTEN    

    复制操作

    注:客户机复制服务器上的文件

    服务器上创建文件

     mkdir /www
     
     cd /www
     touch 1 2 3
    
     ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 30 12:55 1
    -rw-r--r--. 1 root root 0 12月 30 12:55 2
    -rw-r--r--. 1 root root 0 12月 30 12:55 3

    客户机创建存放目录

    mkdir /bak

    客户机将服务器上的文件复制过来

    rsync -avz lisi@192.168.100.12::wwwroot /bak
    //rsync -avz lisi@192.168.100.12/wwwroot /bak
    Password: 
    receiving incremental file list
    ./
    1
    2
    3

    客户机查看文件

    ll  /bak
    总用量 0
    -rw-r--r--. 1 root root 0 12月 30 12:55 1
    -rw-r--r--. 1 root root 0 12月 30 12:55 2
    -rw-r--r--. 1 root root 0 12月 30 12:55 3

    免交互

    客户机创建 lisi 的密码文件

    vi paassword
    123456

    对密码文件授权

    chmod 600 password

    客户机创建存放目录

    mkdir /bak2

    免密复制

    rsync -avz --password-file=/root/password rsync://lisi@192.168.100.12/wwwroot /bak2
    receiving incremental file list
    ./
    1
    2
    3

    查看文件

    ll /bak2
    总用量 0
    -rw-r--r--. 1 root root 0 12月 30 12:55 1
    -rw-r--r--. 1 root root 0 12月 30 12:55 2
    -rw-r--r--. 1 root root 0 12月 30 12:55 3

    rsync服务器 + inotify监控文件

    Linux内核的 inotify 机制

    • 从版本2.6.13开始提供
    • 可以监控文件系统的变动情况,并做出通知响应
    • 辅助软件:inotifv-tools
      在这里插入图片描述
      注:两个都要做以下操作

    客户机与服务器创建文件及网页数据

    //服务器和客户机
    mkdir -p /var/www/html
    
    cd /var/www/html
    //客户机先写入网页
    vi index.html
    this is my rsync.

    客户据和服务器安装 apache

    yum -y install httpd
    systemctl start httpd

    修改服务器 rsync 配置文件中的描述文件

    vi /etc/rsyncd.conf
    path = /var/www/html                         # 22

    重启服务

    pkill rsync
    rsync --daemon
     netstat -anpt | grep 873
    tcp        0      0 192.168.100.12:873           0.0.0.0:*               LISTEN      58776/rsync 

    客户机将网页文件代替删除也就是复制到服务器

    rsync -avz --delete /var/www/html/ root@192.168.100.12:/var/www/html/
    

    rsync实时同步

    定期同步的不足
    执行备份的时间固定,延迟明显、实时性差
    当同步源长期不变化时,密集的定期任务是不必要的

    实时同步的优点
    一旦同步源出现变化,立即启动备份
    只要同步源无变化,则不执行备份

    客户机安装 inotify 软件

    安装inotify-tools辅助工具
    inotifywait:用于持续监控,实时输出结果
    inotifywatch:用于短期监控任务完成后再出结果

    注:tar zxvf inotify-tools-3.14.tar.gz
    客户机解压缩,编译安装

     tar zxvf inotify-tools-3.14.tar.gz
     cd inotify-tools-3.14/
     ./configure
     make && make install

    开启监控
    注:持续监控

    inotifywait -mrq -e modify,create,delete,move /var/www/html/ //

    注:
    -m:持续监听
    -r:使用递归形式监视目录
    q:减少冗余信息,只打印出需要的信息
    -e:指定要监视的事件,多个时间使用逗号隔开

    再开启一个客户机窗口添加文件
    注:另外再开启一个新的终端设置,因为客户机端开启监控后不能做输入操作 不要忘记安装apache这些

    cd /var/www/html/
    touch a.html

    到监听的客户机上查看

    /var/www/html/ CREATE a.html

    客户端停掉监听编写脚本

    vi /opt/inotify.sh
    #!/bin/bash
    INOTIFY_CMD="inotifywait -mrq -e modify,create,delete,move /var/www/html"
    RSYNC_CMD="rsync -avz --delete --password-file=/root/password /var/www/html/ lisi@20.0.0.14::wwwroot"
    $INOTIFY_CMD | while read DIRECTORY EVENT FILE
    do
       if [ $(pgrep rsync | wc -l) -le 0 ]
       then $RSYNC_CMD
       fi
    done

    改服务器 rsync 配置

    vi /etc/rsyncd.conf 
    read only = no                                # 24 

    对服务器 /var/www/html 授权

    chmod 777 /var/www/html/
    
    ls -l /var/www/
    总用量 0
    drwxr-xr-x. 2 root root  6 8月   4 2017 cgi-bin
    drwxrwxrwx. 2 root root 24 12月 30 23:31 html //权限给满

    客户机开启脚本

    sh /opt/inotify.sh 

    客户机重开一个窗口写入数据
    注:由于脚本的原因,写入的数据已经自动复制到服务器上

    cd /var/www/html/
    vi bbb.html
    server bbb.

    服务器查看

    cd /var/www/html/
    -rw-r--r--. 1 nobody nobody 12 12月 31 00:23 bbb.html

    客户机修改内核参数,rsync+inotify实时同步

    vi /etc/sysctl.conf 
    fs.inotify.max_queued_events = 16384
    fs.inotify.max_user_instances = 1024
    fs.inotify.max_user_watches = 1048576
    
    sysctl -p                      # 写入系统内存
    fs.inotify.max_queued_events = 16384
    fs.inotify.max_user_instances = 1024
    fs.inotify.max_user_watches = 1048576

    fs.inotify. max queued_events = 16384 //监控事件的最大队列数
    fs.inotify.max_user_instances = 1024 //监控的最大实例数
    fs.inotify.max_user_watches = 1048576 //监控的每实例的最大文件数

    展开全文
  • 1,Rsync介绍 rsync:是一个远程同步传输工具,可通过LAN/WAN快速通过多台主机之间的文件 rsync通过“rsync算法”来远程同步传输两个主机之间不同的文件。而不需要传输已经有的文件来达到快速...

    1,Rsync介绍
    rsync:是一个远程同步传输工具,可通过LAN/WAN快速通过多台主机之间的文件
    rsync通过“rsync算法”来远程同步传输两个主机之间不同的文件。而不需要传输已经有的文件来达到快速传输同步文件的目的
    端口:873
    模式:C/S

    2,应用场景
    备份方式:
    全量备份: 备份所有的文件
    增量备份: 备份与上一次备份增加的文件

    应用场景
    1)本端传输到对端
    2)对端传输到本端
    3)分层模式
    12,RSYNC远程同步复制服务
    4)云服务器中转
    12,RSYNC远程同步复制服务
    rsync与cp命令和scp命令的区别?
    cp:在一个主机内复制数据,不能实现主机与主机之间
    scp:可以实现主机与主机之间的远程复制数据,但不能实现只复制增量文件
    scp -r /root 172.16.1.41:/root/ 将本端的数据复制到172.16.1.41主机的/root目录下
    scp -r 172.16.1.41:/root/ /root将172.16.1.41主机的/root目录下的数据复制到本端
    3,rsync三种模式
    1)本地模式
    2)远程模式
    3)服务模式
    创建测试数据文件:

    1)dd if=/dev/zero of=/root/1G.txt bs=1M count=1024                                                  
    for i in {1..10}                                                    
    do                                                  
    echo "S{i}" > /root/test_${i}.txt                                                   
    done                                                    

    1)本地模式
    rsync -avzP /root/ /tmp 类似与cp的命令
    rsync -azvP a.txt /tmp

    2)远程模式
    rsync -avzP /root/ 172.16.1.41:/root/ 将本地/root目录下的数据远程同步到172.16.1.41端的/root目录下
    rsync -avzP 172.16.1.41:/root/ /root 将172.16.1.41端/root目录下的数据同步到本端/root目录下
    a 表示以递归方式传输文件,并保持所有文件属性
    v 详细模式输出
    z 对备份的文件在传输时进行压缩处理
    P 显示传输速率

    3)服务模式
    1)安装
    yum -y install rsync

    rpm -qc rsync 查看服务的配置文件

    2)配置
    1,创建统一的用户和组www uid=666 gid=666
    12,RSYNC远程同步复制服务
    12,RSYNC远程同步复制服务

    2,修改配置文件(服务端)
    12,RSYNC远程同步复制服务
    uid = rsync #rsync使用的用户,默认nobody
    gid = rsync #rsync使用的gid 默认nobody
    use chroot = no #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为 #true就限定为模块默认目录,通常都在内网使用rsync所以不配也可以 max connections = 200 #设置最大连接数timeout = 300 #超时时间 建议300-600
    pid file = /var/run/rsyncd.pid #pid文件位置
    lock file = /var/run/rsync.lock #指定lock文件用来支持“max connections ”参数使总连接不会超过限制
    log file = /var/log/rsyncd.log #日志文件路径
    ignore errors #忽略io错误 (最好注释或者不要配上去,有了这个代码,错误信息不回输入进日志文件,只是显示在屏幕上,不利于排错)
    read only = false #指定客户端是否可以上传文件,默认
    truelist = false #是否允许客户端查看可用模块
    hosts allow = 192.168.253.0/24 #允许连接的ip段或个别ip,默认任何人都可以连接
    hosts deny = 0.0.0.0/32 #不允许连接的IP段或个别ip
    auth users = rsync_backup #匿名用户严重登录
    secrets file = /etc/rsync.password #指定用户名和密码文件
    格式: 用户名:密码 密码不超过8位#这个是密码文件 权限最好是600 [backup] comment = "this is a comment" #此参数指定在客户端获取可用模块列表时显示在模块名称旁边的描述字
    path = /backup #模块在服务端的绝对路径
    3,配置密码文件和服务端存放数据目录
    12,RSYNC远程同步复制服务
    12,RSYNC远程同步复制服务
    4)客户端远程备份数据到Rsync服务端成功
    12,RSYNC远程同步复制服务
    备份数据在服务端显示用户和组都是www
    12,RSYNC远程同步复制服务
    注意:rsync服务搞清楚root用户和配置文件里的www用户以及登录的虚拟用户rsync_backup之间的关系
    1)通过ps -aux|grep rsync可以看到rsync服务的deamon是root用户在运行
    2)当数据在传输的过程中式www用户在执行
    3)rsync_backup用户的功能仅仅是在登录的时候做验证功能
    4,如何实现免密登录远程复制,同时在定时任务中的应用场景 (客户端)
    方法一
    12,RSYNC远程同步复制服务
    方法二
    通过环境变量预先定义好虚拟用户登录密码,export RSYNC_PASSWOR="oldboy"。
    这是临时生效,可以写在脚本里,放定时任务里就可以实现免密自动备份!
    12,RSYNC远程同步复制服务
    12,RSYNC远程同步复制服务

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,539
精华内容 615
关键字:

同步远程复制