rsync远程同步

配置rsync源服务器

        rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法.传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

        在远程同步任务中,负责发起rsync同步操作的客户机称为发起端.而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端应对该位置具有读取权限.如图所示。

配置rsync同步源 

(1)建立/etc/rsyncd.conf配置文件

配置文件rsyncd , cont位于/etc目录下。下面将以源目录/var/www/html、备份账号backuper为例,介绍其配置方法。

uid = nobody
gid = nobody
use chroot = yes
address = 192.168.223.128
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.223.0/24

[wwwroot]
  path = /var/www/html
  comment = http Doc
  read only = yes
  dont compress =*.gz *.bz2 *.zip *.rar *.tgz
  auth users = backuper
  secrets file = /etc/rsyncd_users.db

(2)为备份账户创建数据文件 

        根据上一步的设置,创建账号数据文件,添加一行用户记录.以冒号分隔,用户名称“backuper"密码为“pwd123”。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。

[root@lucky ~]# vim /etc/rsyncd_users.db
backuper:pwd123
[root@lucky ~]# ls -lh /etc/rsyncd_users.db 
-rw-r--r-- 1 root root 16 12月 29 00:33 /etc/rsyncd_users.db
[root@lucky ~]# chmod 600 /etc/rsyncd_users.db      //修改权限
[root@lucky ~]# ls -lh /etc/rsyncd_users.db 
-rw------- 1 root root 16 12月 29 00:33 /etc/rsyncd_users.db
[root@lucky ~]# 

        备份用户backuper 需要对源目录/var/www /html有相应的读取权限,实际上只要other组有读取权限,则备份用户backuper和运行用户nobody 也就有读取权限了。

[root@lucky ~]# ls -ld /var/www/html/
drwxr-xr-x. 4 root root 36 12月 12 01:16 /var/www/html/

(3)启动rsync服务程序,运行参数为“-- daemon” 

        上述操作完成以后,执行“rsync —-daemon”命令就可以启动rsync服务.以独立监听服务的方式运行。若要关闭rsync服务.可以采取kill进程的方式,如kill s(cat /var /run/rsyncd .,pid)。

[root@lucky ~]# rsync --daemon
[root@lucky ~]# netstat -anpt | grep rsync
tcp        0      0 192.168.223.128:873     0.0.0.0:*               LISTEN      8638/rsync          

使用rsync备份工具 

1、rsync命令的基本用法

        绝大多数的备份程序要求指定原始位置、目标位置,rsync命令也一样。最简单的rsync用法类似于cp命令。例如,可以将文件/etc/fstab、目录/boot /grub同步备份到/opt目录下,其中,“一r”选项表示递归整个目录树, "-l”选项用来备份链接文件。

[root@lucky ~]# rsync /etc/fstab /opt
[root@lucky opt]# rsync -rl /etc/fstab /boot/grub /opt

(1)命令格式及常用备份选项 

一r:递归模式,包含目录及子目录中的所有文件。

—l:对于符号链接文件仍然复制为符号链接文件。

一v:显示同步过程的详细( verbose)信息。
—a:归档模式.保留文件的权限.属性等信息,等同于组合选项“一rlptgoD”。

一z:在传输文件时进行压缩(cormpress)。
一p:保留文件的权限标记。
一t:保留文件的时间标记。
一g:保留文件的属组标记{仅超级用户使用)。

一o:保留文件的属主标记(仅超级用户使用)。

一H:保留硬连接文件。
一A:保留ACL属性信息。
一D:保留设备文件及其他特殊文件.
一delete:删除自标位置有而原始位置没有的文件。
一checksum:根据校验和〈而不是文件大小、修改时间)来决定是否跳过文件。

(2)配置源的表示方法

        在执行远程同步任务时,rsync命令需要指定同步源服务器中的资源位置。rsync同步源的资源表示方式为“用户名@主机地址:.共享模块名”或者“rsync://用户名@主机地址/共享模块名”.前者为两个冒号分隔形式,后者为URL地址形式。例如,执行以下操作将访问rsync同步源,将指定的资源下载到本地/root目录下进行备份。

[root@checker ~]# rsync -avz backuper@192.168.223.128::wwwroot /root/
或
[root@checker ~]# rsync -avz rsync://backuper@192.168.223.128/wwwroot /root

 2、rsync备份操作示例

执行以下操作将访问源服务器中的wwwroot 共享模块,并下载到本地的/myweb目录下,

        实际生产环境中的备份工作通常是按计划重复执行的。例如,每天晚上22∶30对服务器的网站目录做-次同步,定期任务可以交给crond服务来完成。
        为了在同步过程中不用输入密码.需要创建一个密码文件,保存backuper 用户的密码.如/etc/server . pass。在执行rsyn同步时使用选项“——password-file= /etc/server ,pass”指定即可。

[root@checker ~]# vim /etc/server.pass
[root@checker ~]# chmod 600 /etc/server.pass 
[root@checker ~]# crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.223.128::wwwroot /myweb     //每天22:30执行脚本
[root@checker ~]# systemctl restart crond
[root@checker ~]# systemctl enable crond

配置inotify+rsync实时同步

1、调整inotify内核参数

        在Linux内核中.默认的 inotify机制提供了三个调控参数:max_queue_events , max_user_instances,max_user_watches,分别表示监控事件队列(16 384)、最多监控实例数(128)、每个实例最多监控文件数〈8192)。

[root@lucky ~]# cat /proc/sys/fs/inotify/max_queued_events 
16384
[root@lucky ~]# cat /proc/sys/fs/inotify/max_user_instances 
128
[root@lucky ~]# cat /proc/sys/fs/inotify/max_user_watches 
8192

        当要监控的目录.文件数量较多或者变化较频繁时.建议加大这三个参数的值。例如,可直接修改/etc/sysctl , conf配置文件.将管理队列设为32768,实例数设为1024,监控数设为1048576,通常情况下.监控数所设的值建议大于监控目标的总文件数。

[root@lucky ~]# vim /etc/sysctl.conf 
............   //省略注释信息
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@lucky ~]# sysctl -p

2、安装inotify-tools

        使用inotify 机制还需要安装inotify-tools,以便提供 inotifywait、inotifywatch 辅助工具程序,用来监控.汇总改动情况。inotify--toois可从网站htp:/ / inotify-tools , sourceforge , net/下载,版本为3.14。

[root@lucky ~]# tar zxvf inotify-tools-3.14.tar.gz 
[root@lucky ~]# cd inotify-tools-3.14/
[root@lucky inotify-tools-3.14]# ./configure 
[root@lucky inotify-tools-3.14]# make
[root@lucky inotify-tools-3.14]# make install

        以监控网站目录/var/www/html为例.可以先执行“inotifywait”命令,然后在另一个终端向/var/www/html目录下添加文件、移动文件.跟踪屏幕输出结果。其中,选项“--e”用来指定要监控哪些事件,选项“一m”表示持续监控,选项“一r”表示递归整个目录.选项“-q”简化输出信息。


3、编写触发同步脚步
         使用inotifywait输出的监控结果中,每行记录中依次包括目录.事件.文件.据此可以识别变动情况。为了简单,只要检测到变动时执行rsync上行同步操作即可。需要注意的是.当更新较频繁时,应避免并发执行rsync备份——若rsync进程已经存在,则忽略本次同步.或者根据rsync进程数量(取决于实际任务)来决定是否同步。

[root@lucky ~]# vim /opt/inotify_rsync.sh

#!/bin/bash
asd="inotifywait -mrq -e modify,create,move,delete /var/www/html"
ab="rsync -rav /var/www/html root@192.168.223.128:/myweb"
$asd | while read DIRECTORY EVENT FILE
do
        $ab
done

         上述脚本用来检测本机/var/www/html目录的变动情况.---旦有更新触发rsync同步操作. .上传备份至服务器192.168.223.128的/var / www /html目录下。


         


 


 

 

相关推荐

  1. rsync远程文件同步到本地

    2023-12-29 13:22:06       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 13:22:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 13:22:06       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 13:22:06       82 阅读
  4. Python语言-面向对象

    2023-12-29 13:22:06       91 阅读

热门阅读

  1. 回顾2023

    2023-12-29 13:22:06       52 阅读
  2. Ubuntu Linux 入门指南:面向初学者

    2023-12-29 13:22:06       59 阅读
  3. 常见负载均衡方案分析

    2023-12-29 13:22:06       58 阅读
  4. c#生成临时文件

    2023-12-29 13:22:06       50 阅读
  5. 基于SpringBoot的仓库管理系统

    2023-12-29 13:22:06       61 阅读
  6. Zookeeper相关面试题及答案

    2023-12-29 13:22:06       46 阅读
  7. vue常见面试题

    2023-12-29 13:22:06       39 阅读
  8. 我的2023

    2023-12-29 13:22:06       63 阅读