在某次项目中,遇到频繁将本地的log上传到指定的sftp服务上,每秒都都会上传。在最初的想法是通过代码级解决,功能也实现了,之前遇到一些问题:1、特别吃服务资源 2、影响其他服务,3、效率特别慢。后面经过反复验证,shell 脚本很好解决了之前遇到的问题,废话不多说了代码如下:
#用户名
USER=xxxx
#密码
PASSWORD=xxxx
#待上传目录
SRCDIR=/var/www/xsen/runtime/log
#日期
TIME=$(date "+%Y%m%d")
#SFTP目录
DESDIR=xxxx
#IP
IP=xxx
#端口
PORT=xxx
#获取文件
cd ${SRCDIR};
#修改时间在执行时间五分钟之前的文件
FILES=`find ${SRCDIR} -name "*${TIME}*.log"`
#循环上传
for FILE in ${FILES}
do
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${DESDIR}/
if [ ! -d "${TIME}" ]
then
mkdir ${TIME};
fi
cd ${TIME}/
lcd ${SRCDIR}
put ${FILE}
rm ${FILE} -rf
by
EOF
done