Rsync 自动同步压缩日志文件至备份服务器

业务场景:将所有服务器内的日志文件以小时为单位压缩后保存同时清空源日志文件。此后通过rsync + inotify 机制将压缩文件统一备份到日志服务器内。实现对日志文件的统一保存和备份。
rsync 和inotify这里就不介绍了!有兴趣的可以到官网查看。
大致服务架构图:

一、三台机器的IP分别为:br/>源服务器:172.20.2.108
目标(备份)服务器:172.20.2.225
@todo:从源服务器(172.20.2.108)的/data/目录下的所有的文件实时通过到目标服务器(172.20.2.225)的/data目录下
源服务器下需要安装rsync 和inotify,源服务器做为server端,实时的向目标服务器client端发送数据。

二、安装rsync
一般情况下centos 6.9下都安装了rsync,所以就不必安装了,可以用以下命令检查一下是否已安装:rpm -qa | grep rsync

上面显示了我的机器上没有安装rsync
如果没有安装请往下看:
cd /opt/softdir
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
tar xf rsync-3.0.9.tar.gz
cd rsync-3.0.9 && ./configure --prefix=/opt/rsync && make && make install
rsync安装完毕!
三、创建同步文件所需要的密码文件,这样做是为了安全。
echo "newpassword" > /etc/rsyncd.secrets
echo "redhat" > /etc/rsyncd.secrets
注:这里的newpassword可以实任意字符。
处于安全考虑要把此文件的权限修改成600
chmod 600 /etc/rsyncd.secrets
四、安装inotify
先查看服务器是否支持inotify
ll /proc/sys/fs/inotify

会有三个文件,这说明此服务器支持inotify的。

下面安装inotify:
cd /opt/softdir
wget -c
https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
tar xf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13 && ./configure --prefix=/opt/inotify && make && make install
五、创建rsync复制脚本,用户shell实现,其功能就是:从源服务器(172.20.2.108)的/data/目录下的所有文件无论是添加、修改、删除文件,能够通过inotify监控到,并通过rsync实时同步到目标服务器(172.20.2.225)的/data下

vim  /usr/bin/rsync.sh
#!/bin/bash
host=172.20.2.225
src=/data/
des=web
user=root
/opt/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files
do
/opt/rsync/bin/rsync  -zrtopg  --delete  --progress --password-file=/etc/rsyncd.secrets $src [email protected]$host::$des
echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1
done

其中host是目标服务器的ip,src是源服务器要同步的目录,des是认证模块名,需要与目标服务器一致,user是建立密码文件里的认证用户。
修改rsync.sh的权限
chmod +x /usr/bin/rsync.sh
到此为止,源服务器的所有操作就完成了!下面配置目标服务器。

————————————————    我是分割线—————————————————

一、目标服务器也要安装 rsync,安装方式跟源服务器一样,这里就不在赘述了
二、建立密码文件:
echo "root:redhat" >/etc/rsyncd.secrets
同样要给此文件一个600的权限
chmod 600 /etc/rsyncd.secrets
注:在源服务器建立的密码文件,只有密码,没有用户名;而在目标服务器里建立的密码文件,用户名与密码都有。
三、写rsync的配置文件
vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log format = %t %a %m %f %b # 日志记录格式
[web]
path = /data
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 172.20.2.108
hosts deny = *
list = false
uid = root
gid = root
auth users =root
secrets file = /etc/rsyncd.secrets

四、目标服务器启动 rsync
/opt/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
五、源服务器启动同步:
/usr/bin/rsync.sh &
到这里,所有的都以完成。可以到源服务器下的/data目录下创建、删除文件,然后在看一下目标服务器下的/data下是出现同样的变化。

原文地址:http://blog.51cto.com/12476193/2315134

时间: 2024-09-28 14:17:49

Rsync 自动同步压缩日志文件至备份服务器的相关文章

rsync服务同步、日志文件、screen工具

10.32 rsync通过服务同步(上) 在使用该方法进行同步之前需要先在服务的开启相应服务同时要监听一个端口(可自定义),默认是监听873端口,开启服务之前编辑rsync配置文件"/etc/rsyncd.conf"(将服务添加进去)然后直接使用命令:"rsync --daemon(服务名称)"进行同步.或者将配置文件写到一个自定义文件中,使用命令"rsync --configfile"进行同步.配置完成后客户端可以通过指定端口与服务端进行通信.

rsync自动同步软件安装和使用

一.介绍 (不想看直接可以跳过) Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护.Rsync使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据:也可以

使用作业自动清理数据库日志文件

原文:使用作业自动清理数据库日志文件 在上一篇文章中介绍了如何删除数据库日志文件,但是想想还是不是不方便需要手工操作,于是想结合作业实现自动清理日志文件,在清理日志文件时我加上了条件,当磁盘控空间不足多少M才会清理,下面介绍如何实现该功能.没有阅读上一篇文章的,可以通过传送门阅读(删除数据库日志文件的方法)! 阅读目录 SQL查询磁盘空间大小 存储过程添加作业 示例下载 回到顶部 SQL查询磁盘空间大小  采用内置的存储过程,即可查看各个磁盘可用空间 exec master..xp_fixedd

Linux下自动清除MySQL日志文件

MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days=7 max-binlog-size=268435456

前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件

前端开发环境之GRUNT-JAVASCRIPT任务运行器 前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass. 原方法: ①安装ruby ②编译sass文件(eg:style) sass style.scss style.css ③监控文件/文件夹的变化来自动编译sass文件 sass --watch style.scss:style.css #file sass --watch cssFilePath            

TFS 自动同步Server 端文件的批处理命令

TFS 自动同步Server 端文件的批处理命令 目前在我们组的工作中很多时候需要将TFS上Server端的代码自动无人值守的同步到本地中来, 找到了一些解决方案的资料http://bbs.scmroad.com/archiver/?tid-21003.html. 经过试验,我们总结成以下步骤,希望对大家有所借鉴. Steps: 1.       点选VS Source Explorer 上面的TFS目录列表. 2.       新建一个TFS 的 workspace. 3.       点击S

rsync自动同步

Rsync介绍 sync是类unix系统下的数据镜像备份工具--remote sync.一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH.rsync主机同步. 特性如下: 1,.可以镜像保存整个目录树和文件系统. 2.可以很容易做到保持原来文件的权限.时间.软硬链接等等. 3.无须特殊权限即可安装. 4.快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 5.在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带

python+rsync精确同步指定格式文件

# coding: utf-8 #!/usr/bin/env python ''' updatedb更新本地服务器指定目录/home/upload/de locate.dbz数据库 然后locate命令正则查找符合条件的文件并将文件名输出到locate.src 通过paramiko模块得到远程服务器符合条件的文件并将文件名输出到locate.dst 比较这两个文件得到locate.diff,最好rsync命令同步locate.diff列表中的文件 到远程服务器 ''' import parami

SQL Server实现自动收缩数据库日志文件

1 --在作业中 执行下面SQL代码 即可实现 自动收缩日志文件.(MSSQL 维护计划中没有提供自动收缩日志文件的功能) 2 --非 镜像 复制订阅 日志传送的情况下 执行. 如果存在日志传送莫要执行 否则日志传送会失败 3 declare @exec_sql nvarchar(1200),@simple_sql nvarchar(1200),@full_sql nvarchar(1200) 4 declare @db_name varchar(128) 5 declare @db_count