zoukankan      html  css  js  c++  java
  • rsync远程同步

      rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

    它的特性如下:
      可以镜像保存整个目录树和文件系统
      可以很容易做到保持原来文件的权限、时间、软硬链接等等。
      无须特殊权限即可安装。
      快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
      安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
      支持匿名传输,以方便进行网站镜像。

    rsync远程同步

    一:配置rsync源服务器(服务器A

     

    [root@localhost ~]# systemctl stop firewalld //关闭防火墙

    [root@localhost ~]# setenforce 0 //关闭selinux

    [root@localhost ~]# rpm -q rsync //查看rsync软件是否安装

    rsync-3.0.6-9.el6_4.1.x86_64

    [root@localhost ~]# vi /etc/rsyncd.conf         //修改配置文件

    添加

    uid = nobody   //指定运行rsync软件的用户

    gid = nobody   //指定运行rsync软件的组

    use chroot = yes   //固定到共享的目录

    address = 192.168.4.200   //监听本地的哪个ip地址

    port 873   //监听的端口号

    log file = /var/log/rsyncd.log   //日志文件路径

    pid file = /var/run/rsyncd.pid   //进程文件路径

    hosts allow = 192.168.4.0/24   //允许谁访问

    [wwwroot]   //共享出去的名字

        path = /var/www/html //共享的本地目录

        comment = Document Root of www1.benet.com   //描述信息 

        read only = yes   //是否只读

        dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z   //哪些文件不做压缩

        auth users = backuper   //指定访问的用户

        secrets file = /etc/rsyncd_users.db   //用户的密码数据库

    [root@localhost ~]# vi /etc/rsyncd_users.db   //编辑用户密码数据库

    添加

    backuper:pwd123 //账号:密码

    [root@localhost ~]# chmod 600 /etc/rsyncd_users.db   //修改密码数据库的权限

    [root@localhost ~]# ls -ld /var/www/html/

    drwxr-xr-x. 2 root root 4096 8月   2 2013 /var/www/html/

    [root@localhost ~]# rsync –daemon //启动rsync

    [root@localhost ~]# netstat -anpt | grep rsync //查看端口号和进程号

    tcp        0      0 192.168.4.200:873           0.0.0.0:*                   LISTEN      13663/rsync

    [root@localhost ~]# cd /var/www/html //进入目录,没有自己手动创建一个

    [root@localhost html]# ls

    [root@localhost html]# touch aaa //创建一个文件

    二:使用rsync备份工具(服务器B

    1:命令的基本使用方法

    [root@localhost ~]# systemctl stop firewalld   //关闭防火墙

    [root@localhost ~]# setenforce 0   //关闭selinux

    [root@localhost ~]# rsync /etc/fstab /opt   //本地同步测试

    [root@localhost ~]# rsync -rl /etc/fstab /boot/grub /opt   //本地同步目录测试

    2:配置源的表示方法(从源下载数据)

    [root@localhost ~]# rsync -avz backuper@192.168.4.200::wwwroot /root   //远程同步

    [root@localhost ~]# rsync -avz rsync://backuper@192.168.4.200/wwwroot /root                                       //远程同步

    3rsync备份操作实例(下载)

    [root@localhost ~]# mkdir /myweb   //创建目录

    [root@localhost ~]# rsync -avzH --delete backuper@192.168.4.200::wwwroot /myweb

    //远程同步,保持一致

    [root@localhost ~]# ls /myweb   //查看是否同步

    4:实现自动按计划复制

    [root@localhost ~]# vi /etc/server.pass   //创建密码文件

    添加

    pwd123   //密码

    [root@localhost ~]# chmod 600 /etc/server.pass   //设置权限

    [root@localhost ~]# crontab -e   //创建计划任务

    添加(在同一行,空格隔开)

    30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.4.200::wwwroot /myweb/

    [root@localhost ~]# systemctl restart crond //重启计划任务

    [root@localhost ~]# systemctl enable crond //开机自启动计划任务

    三:配置rsync+inotify实时同步

    1:在源服务器上修改参数并重启rsync服务(服务器A

    [root@localhost ~]# vi /etc/rsyncd.conf

    修改

        read only = no

    [root@localhost ~]# netstat -anpt | grep rsync

    tcp        0      0 192.168.4.200:873           0.0.0.0:*                   LISTEN      13663/rsync

    [root@localhost ~]# kill 13663

    [root@localhost ~]# rsync --daemon

    2:调整内核参数(服务器B)(默认的参数,不用改)

    [root@localhost ~]# vi /proc/sys/fs/inotify/max_queued_events

    16384           \监控时间队列

    [root@localhost ~]# vi /proc/sys/fs/inotify/max_user_instances

    128            \最多监控实例数

    [root@localhost ~]# vi /proc/sys/fs/inotify/max_user_watches

    8192             \每个实例最多监控文件数

    3:安装inotify

    [root@localhost ~]# cd /usr/src

    [root@localhost src]# tar zxf inotify-tools-3.14.tar.gz

    [root@localhost src]# cd inotify-tools-3.14

    [root@localhost inotify-tools-3.14]# ./configure

    [root@localhost inotify-tools-3.14]# make

    [root@localhost inotify-tools-3.14]# make install

    [root@localhost inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/

    -m:持续监控

    -r:递归整个目录

    -q:简化输出信息

    打开另一个终端(输入以下命令,观察上个终端的变化)

    [root@localhost ~]# cd /var/www/html

    [root@localhost html]# touch index.php

    [root@localhost html]# vi index.php

    4:编写同步脚本

    [root@localhost html]# vi /opt/inotify_rsync.sh

    添加

    #!/bin/bash

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

    RSYNC_CMD="rsync -avzH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.4.200::wwwroot"

    $INOTIFY_CMD | while read DIRECTORY EVENT FILE

    do

            $RSYNC_CMD

     done

    [root@localhost html]# chmod +x /opt/inotify_rsync.sh

    [root@localhost html]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local

    [root@localhost html]# cd /opt

    [root@localhost opt]# ./inotify_rsync.sh

    打开另一个终端在var/www/html中创建文件,观察上个终端的变化

    在到服务器(A)上看看var/www/html中的变化

  • 相关阅读:
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task11
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task10
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task9
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task8
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task7
    Java多线程之三volatile与等待通知机制示例
    Java多线程之一
    [WC2021] 括号路径
    [CF1375H] Set Merging
    [CF1342E] Placing Rooks
  • 原文地址:https://www.cnblogs.com/ccshi/p/13151842.html
Copyright © 2011-2022 走看看