rsync-inotify实时备份
主要备份的事用户的图片视频音频这些文件这些文件需要实时备份
1.先检查linux内核是否支持inotify
ll /proc/sys/fs/inotify
-rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches
# 出现以上三个就说明支持
2.下载安装inotify-tools
yum -y install inotify-tools
3.修改配置文件
# 表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
echo 9999999 > /proc/sys/fs/inotify/max_queued_evnets
# 表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
echo 9999999 > /proc/sys/fs/inotify/max_user_instances
# 表示每一个real user ID可创建的inotify instatnces的数量上限。
echo 9999999 > /proc/sys/fs/inotify/max_user_watches
4.inotifywait参数
-m :# 实时监控。
-d:# 后台运行。
-r:# 递归,对子目录监控。
-e:# 监控事件。以下
access:# 检测文件访问事件。
close_write:# 写入关闭事件。
modify:# 文件发生变化。
attrib:# 文件属性变化事件。
delete:# 文件被删除。
--timefmt :# 当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是'%d/%m/%y %H:%M';
--format :# 自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:
%w:# 显示被监控文件的文件名;
%f:# 如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
%T:# 使用--timefmt选项中自定义的时间格式.inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write /data #输出时间innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #简化输出
5.调试语句
/usr/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%m' --format '%w %e %f %T' -e attrib,create,delete /backup/ >> inotify.log -m # 实时监控-r # 递归-q # 减少冗余信息,只打印出需要的信息。--timefmt # 是指定时间的输出格式。 给下面的T用的--format # 指定文件变化的详细信息。-e # 是要监控的动作
6.写脚本
#!/bin/sh
# __author__:
/usr/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%w %e %f %T' -e attrib,create,delete /backup/ | while read file
do
/usr/bin/rsync -az --delete /backup/ rsync_backup@152.136.106.241::daydayup --password-file=/etc/rsync.password
echo "${file} was rsynced" >> /var/log/rsync_inotify.log 2>&1
done
7.运行脚本
sh /server/backup/inotify.sh & # 把这个sh脚本放在后台运行
# 如果关掉了 xhsell找不到了 就 ps -ef | grep inotify.sh 不要启动太多....一定要注意
8.写进开机启动
# 直接把脚本放在/etc/profile.d/ 目录下 开机自动运行
# 第二种就是systemctl
> vim /usr/lib/systemd/system/inotify.service
[Unit]
Description=This is a inotify service.
[Service]
Type=simple
ExecStart=/bin/sh /server/backup/inotify.sh
[Install]
WantedBy=multi-user.target
> systemctl enable inotify # 开机自动
> systemctl daemon-reload # 刷新一下权限
9.测试
面试题
你们公司如果服务器宕了 或者 警报了…怎么办?
答 不管什么情况先恢复业务 也就是让项目正常运行…再去查看什么问题…去哪查看啊 日志呗…
那业务怎么恢复啊 从备份服务器 把数据拉下来然后重启一下服务 ok了… 如果反应快 或者写一个自动化脚本 几秒就完事了 用户根本看不出来是发生了宕机
还有你们公司的备份策略是什么?
代码 日志 配置文件 每天晚上12点定时备份到备份服务器
用户的 图片 视频 音频 包括一些特定的数据 这些是要实时备份…实时备份就是多了一个立马就备份 少了一个也马上把备份服务器的那个也同步删掉 如果你的业务量不大 用上面那个定时任务备份也行
这叫同步…就是 你的web服务器有什么 你的备份服务器就有什
备份干嘛…如果发生的容灾…能马上恢复你的业务