业务场景:
公司的业务日志量很大,需要经常压缩日志并上传至归档服务器。所以写了脚本自动上传业务日志。由于ftp容易中断,所以使用rsync可进行断点续传。
rsync安装配置
1.在日志归档服务器上安装server端
可以直接yum安装,但是如果是想定制使用,建议编译安装,到时候服务器磁盘满了,
需要换服务器的时候直接把编译好的目录打包带走直接就能用了,免去二次安装的麻烦。
命令如下:
wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar -zxvf rsync-3.1.2.tar.gz
cd rsync-3.1.2
mkdir -p /opt/rsync
./configure --prefix=/opt/rsync
make && make
至此安装完毕,rsync就安装到你的/opt/rsync目录下了。
2.配置rsync
rsync的配置文件是要自己配置的,以及以一些提示文件等都要手动创建。这里为了方便统一,我在rsync程序目录下以conf文件夹作为配置目录。
mkdir -p /opt/rsync/conf \
mkdir -p /opt/rsync/log \
cd /opt/rsync/conf \
touch rsync.conf \
touch rsyncd.motd \
touch rsync.pass
文件创建完了,开始编辑rsync.conf文件
vim /opt/rsync/conf/rsync.conf
rsync.conf文件例子
pid file = /opt/rsync/conf/rsync.pid ###定义pid文件
lock file=/opt/rsync/conf/rsync.lock
port = 8730 ###自定义端口,默认为873,建议修改其他成端口
uid = ftp ###定义文件上传后的属主
gid = ftp ###定义文件上传后的属组
use chroot = no
max connections = 10 ###定义最大连接数
motd file = /opt/rsync/conf/rsyncd.motd ##定义传输后提示文字,可以自己随意编辑此文件中的文字。
log file = /opt/rsync/log/rsync.log ###定义日志目录,方便排错
[Test] ###定义模块名称
path = /data/backup/Test ##定义此模块目录
list = yes
auth users = dimple ##定义上传用户
read only = no ##定义文件夹不是只读
write only = no ##定义文件夹不是只写
ignore errors
secrets file = /opt/rsync/conf/rsync.pass ##定义密码认证文件,后面详细说
例子中注释方便大家理解,复制上去后可以删除。如果你需要更强大的功能可以去查看官方文档。rsync模块真的很好用,可以根据不同的业务线自己定制需求。
编辑rsyncd.motd文件
此文件只是用于显示客户端链接rsync服务端成功后的提示信息,可以随意设置,此处就不举例子了。
编辑rsyncd.pass
vim /opt/rsync/conf/rsync.pass
这个文件是密钥文件,服务端需要在模块里定义不同的密钥文件,也可以全局定义。
格式为: user:pass
例子:haha:123456
注意:客户端如果需要用密钥文件免输入密码传输文件,则只需要在文件中写入密码即可,无需用名
例如:客户端文件为/opt/rsync.pass,则文件内容为123456即可。
启动rsync
启动rsync命令,建议加上-daemon守护模式启动,然后指定配置文件
/opt/rsync/bin/rsync --daemon --config /opt/rsync/conf/rsync.conf
2.客户端上传文件测试
客户端上传文件,建议写脚本上传,然后定义秘钥文件,可以免密码输入操作,放在定时任务中最好,可以定时备份日志。
rsync上传总共有6种模式,大家有兴趣可以看看
这里我用的指定模块上传的方式,加了一些特定的参数,制定了端口和秘钥文件。
rsync -rlpvDR --port=8730 --bwlimit=30000 --password-file=/opt/rsync.pass test.txt haha@rsync_ip::Test
目前已经在生产服务器上用脚本调用rsync大规模归档备份日志,rsync支持断点续传,如果中断的话再传一次就可以了。
而且还有校验MD5的功能用起来很方便。