(一),rsync 简介
rsync 是 Linux 和 Unix 下一款远程数据同步工具, rsync 第一次会把数据全量同步到远端服务器, 之后会对比两个文件的不同, 传输差异文件, 实现增量同步
优点: 安全性高, 备份迅速, 使用同步算法, 只同步有变化的文件 备份文件保持原有文件的属性软硬连接, 且支持排除备份等
缺点: 在数据同步之前需要扫描所有的文件进行对比才能进行差异化同步, 如果同步文件达到百万级或者千万级, 扫描文件同步将变得非常的耗时, 降低了同步的效率
(二),rsync 基本命令介绍 (1V4)
rsync 是一个强大的命令, 他可以同时实现复制, 删除, 查看, 远程同步等功能
- 1. rsync==cp
- root@nfs01 test]# rsync -a aa.txt aa.txt.bak
- [root@nfs01 test]# ls
- aa.txt aa.txt.bak
- 2, rsync==scp
- [root@nfs01 test]# rsync -rp /test/ 10.0.0.41:/test/
- root@10.0.0.41's password:
- 3 ,rsync==rm
- [root@nfs01 test]# mkdir /null
- [root@nfs01 test]# rsync -r --delete /null/ /test/
- [root@nfs01 test]# ls
- 4, rsync==ls
- [root@nfs01 test]# rsync /etc/hosts
- -rw-r--r-- 352 2018/09/15 01:51:11 hosts
(三),rsync 工作方式
1, 本地备份方式
语法: Local: rsync [OPTION...] SRC... [DEST]
练习:[root@nfs01 test]# rsync -a /etc/hosts /tmp/hosts.bak
- ???[root@nfs01 test]# ll /tmp/hosts.bak
- ???-rw-r--r-- 1 root root 352 Sep 15 01:51 /tmp/hosts.bak
2, 远程数据备份方式
语法:
- Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
- Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
练习:[root@nfs01 test]# rsync -avz /backup/ root@10.0.0.41:/backup/
- root@10.0.0.41's password:
- sending incremental file list
- ./
- sent 1703 bytes received 333 bytes 370.18 bytes/sec
- total size is 1622 speedup is 0.80
小提示: 如果不指定 user 信息表示以当前用户进行登陆
3, 守护进程传输模式
语法:
- Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
- rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
- Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
- rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
小提示: 这里的 SRC 与远程传输方式不同, 这里的指的是模块信息
守护进程方式部署流程
一, 服务端部署流程
1) 检查软件是否安装
- [root@backup ~]# rpm -qa rsync
- rsync-3.0.6-12.el6.x86_64
2) 编写配置文件 (注意默认是没有的, 需要手动创建)
- [root@backup ~]# VIM /etc/rsyncd.conf
- #rsync_config
- #created by HQ at 2017
- ##rsyncd.conf start##
- uid = rsync
- gid = rsync
- use chroot = no
- max connections = 200
- timeout = 300
- pid file = /var/run/rsyncd.pid
- lock file = /var/run/rsync.lock
- log file = /var/log/rsyncd.log
- ignore errors
- read only = false
- list = false
- hosts allow = 172.16.1.0/24
- hosts deny = 0.0.0.0/32
- auth users = jiang
- secrets file = /etc/rsync.password
- [backup]
- comment = "practice and use"
- path = /backup
- ~
- -- INSERT --
配置参数详细说明
配置参数 | 说明 |
---|---|
uid = rsync | 指定 rsync 服务运行的时候,向磁盘进行读取和写入操作的操作者 |
gid = rsync | 指定 rsync 服务运行的时候,向磁盘进行读取和写入操作的操作组 |
use chroot = no | 进行数据同步存储时,安全相关参数,默认内网进行数据同步,可以关闭 |
max connections = 200 | 定义向备份服务器进行数据存储的并发连接数 |
timeout = 300 | 定义与备份服务器建立的网络连接,在多长时间没有数据传输时,就释放连接 |
pid file = /var/run/rsyncd.pid | 服务程序运行时,会将进程的 pid 信息存储到一个指定的 pid 文件中 |
lock file = /var/run/rsync.lock | 定义锁文件,主要用于配合 max connections 参数,当达到最大连接就禁止继续访问 |
log file = /var/log/rsyncd.log | 定义服务的日志文件保存路径信息 |
[backup] | 指定备份目录的模块名称信息 |
path = /backup | 指定数据进行备份的目录信息 |
ignore errors | 在进行数据备份传输过程过程中,忽略一些 I/O 产生的传输错误 |
list = false | 确认是否可以将服务配置的模块信息,在客户端可以查看显示 |
hosts allow = 172.16.1.0/24 | 设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单 |
hosts deny = 0.0.0.0/32 | 设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单 |
auth users = jiang | 指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建 |
secrets file = /etc/rsync.password | 设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息 |
3), 创建备份服务管理用户
useradd rsync -M -s /sbin/nologin
4) 创建备份目录
- mkdir /backup
- chown -R rsync.rsync /backup
5) 创建认证文件
- echo "jiang:jiang123">>/etc/rsync.password
- chmod 600 /etc/rsync.password
6) 启动 rsync 服务
rsync --daemon
二, 客户端部署流程
1) 确认软件是否安装
- [root@backup ~]# rpm -qa rsync
- rsync-3.0.6-12.el6.x86_64
2) 创建认证密码文件
- echo "jiang">>/etc/rsync.password
- chmod 600 /etc/rsync.password
3), 进行数据备份测试
- [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
- sending incremental file list
- hosts
二, 利用 inotify 实现实时同步
(一),inotify 简介
Inotify 是一个 Linux 内核特性, 它监控文件系统, 并且及时向专门的应用程序发出相关的事件警告, 比如删除, 读, 写和卸载操作等. 要使用 inotify, 必须具备一台带有 2.6.13 或更新内核的 Linux 机器
(二), 实时同步概念
一, 为什么要使用实时同步
因为定时任务有缺陷, 一分钟以内的数据无法进行同步, 容易造成数据丢失
二, 实时同步的工作原理
1, 创建要存储数据的目录
2, 利用实时同步的软件监控我们进行备份的数据目录
3, 利用 rsync 服务进行数据推送传输备份
(三), 实时同步软件部署
1), 安装 inotify 软件
yum install -y inotify-tools
2), 编写实时同步的脚本
- #!/bin/bash
- ####################
- inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|\
- while read line
- do
- rsync -az --delete /data/ jiang@172.16.1.41::backup --password-file=/etc/rsync.password
- done
说明: 在编写同步脚本之前需要保证 rsyc 守护进程方式同步正常
(四),inotify 命令说明
inotifywait
-m|--monitor 始终保持事件监听状态
-r 进行递归监控
-q|--quiet 将无用的输出信息, 不进行显示
--timefmt <fmt> 设定日期的格式
man strftime 获取更多时间参数信息
--format <fmt> 命令执行过程中, 输出的信息格式
-e 指定监控的事件信息
man inotifywait 查看所有参数说明和所有可以监控的事件信息
总结主要用到的事件信息:
create 创建, delete 删除, moved_to 移入, close_write 修改
来源: http://www.bubuko.com/infodetail-2790585.html