您的位置:首页 > 运维架构 > Shell

shell脚本实现自动压缩一天前的日志文件并传到ftp服务器上

2012-06-08 11:26 1341 查看
生产环境下脚本自动备份脚本是企业中重要工具。备份数据和日志等文件是公司的重要资产,所以有句话叫“备份是救命的稻草”(——出自抚琴煮酒《构建高可用Linux服务器》一书)。

此脚本的作用是将制定目录下的日志文件备份,只备份当天和一天前的日志(日志命名格式精确到小时),并以当天的年月日为格式进行压缩,然后传送到指定ftp服务器。

实例:# ll /home/lislog/

-rw-r--r-- 1 itadmin dba 8079474 06-07 00:59 lis42.log.2012-06-07-00

-rw-r--r-- 1 itadmin dba 50354570 06-07 01:59 lis42.log.2012-06-07-01

-rw-r--r-- 1 itadmin dba 12084741 06-07 02:59 lis42.log.2012-06-07-02

……

-rw-r--r-- 1 itadmin dba 14110627 06-08 07:59 lis42.log.2012-06-08-07

-rw-r--r-- 1 itadmin dba 112698103 06-08 08:59 lis42.log.2012-06-08-08

-rw-r--r-- 1 itadmin dba 372195176 06-08 09:59 lis42.log.2012-06-08-09

将该路径下当天及一天前文件进行压缩,以当天日期命名后传送到ftp服务器上。

脚本内容backuplislog.sh:

#!/bin/bash
FTPHOST="1.1.1.7"
USERNAME="lislog"
PASSWORD="lislog"

#取前一天年月日
y=`date --date='1 days ago' "+%Y"`
m=`date --date='1 days ago' "+%m"`
d=`date --date='1 days ago' "+%d"`

#取当天年月日
yt=`date "+%Y"`
mt=`date "+%m"`
dt=`date "+%d"`

#以当天日期为压缩文件名
y1=`date "+%Y"`
m1=`date "+%m"`
d1=`date "+%d"`

#文件名信息
SRCFILE="lis42.log.$y-$m-$d*   lis42.log.$yt-$mt-$dt*   lis42.log"
DESFILE="lis42_$y1-$m1-$d1.zip"

#需要备份文件的目录
FILEPATH="/home/lislog"

# FTP Server备份目录
# BACKUPDIR="lislog"

#压缩处理
cd  $FILEPATH
zip $DESFILE  $SRCFILE

#登入FTP Server并传送档案
ftp -v -n $FTPHOST << END
user $USERNAME $PASSWORD
binary
put  $DESFILE
bye
END

#删除临时压缩文件
cd  $FILEPATH
rm -f $DESFILE

#end

最后扔到cron里就ok了,然后用的时候去拿就可以了

# crontab -l

30 6 * * * /home/itadmin/backuplislog.sh

结果查看:

#ll /home/lislog/

-rw-r--r-- 1 itadmin dba 240100295 06-08 06:31 lis42_2012-06-08.zip

经测试追踪发现,已经稳定执行。
本文出自 “我就是我非此非彼” 博客,请务必保留此出处http://wukui127.blog.51cto.com/2866802/892532
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: