shell脚本自动备份日志(ftp上传)

2025-04-24 10:41:49

1、功能设计:(1)把所有的日志剪切到一个文件夹下,然后打个压缩包。 (2)把这个压缩包上传到ftp服务器上。

2、设置变量名:#!/ibin/bash #前面加了个空格,不加空格有可能报错,跟Linux配置有庙堠杼寺关系-bash: ./a.sh: /ibin/bash: bad interpreter: No such file or directoryy1=`date "+%Y"` #获取当前时间年月日中的年。 注意=后面不是单引号``(这个符号在esc符号下面。英文状态下。) ''(这才是单引号)m1=`date "+%m"` d1=`date "+%d"`file="$y1-$m1-$d1"log #拼接文件名。 如:20160327logecho $fileecho $y1echo $m1echo $d1srcdir="/" #本地目录desdir="ftp" #ftp服务器的目录ip=192.168.0.0 #ftp服务器ip地址,根据自己的情况写。要进行ftp上传首先要安装ftp,这个自己上网上找教程,很多的。 本地目录下能用ftp指令就行了。port=21 #ftp服务器端口号。默认21user="ftp" #ftp用户名password="123456" #ftp密码

3、打开日志文件夹,剪切日志到新的文件夹下,然后压缩。cd /opt/rm -rf /logFilels -l |grep r|awk '{print $9}'|爿讥旌护grep -v 'name.txt' > /name.txt #将文件名读出来放到name.txt文件中,name.txt文件除外。mkdir /$fileTatolCount=`cat /name.txt|wc -l` #统计一下一共有多少个文件名。echo $TatolCountfor i in $(seq 1 $TatolCount); do #有多个文件就for循环多少次echo $ifilename=`sed -n ''$i'p' /name.txt | awk '{print $1}'` #将第n行的文件名拿出来赋值给filename 注意sed后面是``(不是单引号,esc下面的符号) '$i'(这里是单引号)echo $filenamecd /opt/$filenamelsmv ./2* /$file #剪切文件到新的文件下。echo $logFiledone#剪切完毕压缩文件夹tar="$file".tartar czvf /$tar /$filerm /$file -r

4、#ftp上传压缩好的文件。ftp -v -n >>error.log <<EOF #将上传过程中产生的打印信息写到error.log里面 后面判断是否成功要用open $ip $portuser $user $passwordbinarycd $desdir #打开ftp文件目录lcd $srcdir #本地文件目录prompt offmput $tar #上传文件closebyeEOF

5、grep -c '226 Transfer complete.' error.log #判断上传是否成功。上传成功error.log里面会有226 Transfer complete.字样 操作完毕删除没用的文件。if [ $? == 0 ]thenecho "success"rm $fileelseecho "error"firm error.log以上是说明。看了以上的说明还不明白的话进这个itofficeweb网站,搜索文章shell脚步自动备份。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢