shell实现文件增量同步
大约 1 分钟
需求
在进行Elasticsearch搭建时需要将日志文件增量同步到本地,方便后续进行日志分析 因为不影响生产环境,所以使用shell进行文件增量同步
实现原理
- 使用rsync命令进行增量同步
- 使用sshpass提供密码访问方便定时任务
- 使用定时任务进行定时执行
实现步骤
编写脚本
#!/bin/bash
# 远程服务器信息
REMOTE_HOST="远程计算机IP"
REMOTE_USER="远程计算机用户"
REMOTE_PASSWORD="远程计算机密码"
# 获取当前年月日
CURRENT_DATE=$(date +'%Y-%m-%d')
REMOTE_LOG_PATH="/opt/small_new/logs/bridge/info/$CURRENT_DATE.log"
# 本地保存位置
LOCAL_LOG_PATH="/opt/logs/$CURRENT_DATE.log"
# 使用 rsync 命令进行增量同步
#rsync -avz --update $REMOTE_HOST:$REMOTE_LOG_PATH $LOCAL_LOG_PATH
# 使用 sshpass 提供密码,并执行 rsync 增量同步
sshpass -p $REMOTE_PASSWORD rsync -avz --update -e "ssh -o StrictHostKeyChecking=no" $REMOTE_USER@$REMOTE_HOST:$REMOTE_LOG_PATH $LOCAL_LOG_PATH
echo "日志文件已增量同步到本地:$LOCAL_LOG_PATH"
编写定时任务
crontab -e
#填入定时任务保存退出
* * * * * /opt/logs/getLog.sh >> /opt/logs/getLog.log 2>&1