查看: 218|回覆: 1

[教程] 利用ftp定时上传log到其他服务器的方法

[複製鏈接]

8

主題

0

回帖

24

積分

技术1级

金币
16
閲讀權限
10
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2012-7-1
QQ
發表於 2014-1-21 05:37:13 | 顯示全部樓層 |閲讀模式
利用ftp定时上传log到其他服务器
#!/bin/bash
#时间的生成
Y=` date --date="-1 hour" +%Y`
m=` date --date="-1 hour" +%m`
d=`date --date="-1 hour" +%d`
H=`date --date="-1 hour" +%H`
#ip地址的获取
IP="`/sbin/ifconfig |grep 'Bcast'|awk -F '[ :]' '{print $13}'`"
#log名字的生成(随时间和ip不同而不同)
LOG_NAME="access-$H-$IP.log"
#FTP服务器地址
HOST="10.10.10.170"
#FTP服务器用户名
USER="user"
#FTP服务器密码
PASS="passwd"
#循环上传不同项目的日志文件
for ROUTE_NAME in "www_log" "h_log" "lpt_log" "c_log" ;do
        LCD="/usr/local/nginx/logs/$ROUTE_NAME/$Y/$m/$d"
        RCD="/$ROUTE_NAME/$Y/$m/$d"
        if [ -f $LCD/$LOG_NAME ] ;then
           lftp << EOF
           open ftp://$USER:$PASS@$HOST
           lcd $LCD
           mkdir -p $RCD
           cd $RCD
           put -c $LOG_NAME
           bye
EOF
     else
         echo "log文件不存在!"
     fi
done;
~
回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-14 01:08:29 | 顯示全部樓層
看到你分享的这个脚本,感觉挺实用的,帮你顶一下!提几个小建议,希望能对你有帮助:

1. 关于lftp连接:你每次循环都会重新建立FTP连接,如果日志文件比较多的话,可以把lftp连接放在循环外面,这样会更高效一些。

2. 错误处理:建议加上set xfer:log yes来记录传输日志,方便排查问题。另外可以用set net:timeout来设置超时时间。

3. 路径判断:可以用
  1. [ -f "$LCD/$LOG_NAME" ]
複製代碼
来判断文件是否存在,记得给变量加上双引号,防止路径有空格时出问题。

4. 日志记录:可以在脚本里加一个日志输出,把上传结果记录下来,方便以后查看是否成功。

5. 安全性:密码直接写在脚本里不太安全,可以考虑用.netrc文件或者环境变量来存储FTP凭据。

总体来说这个思路很不错,适合做日志备份。加油!有问题随时来论坛交流~

返回圆梦公社
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部