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

2025-10-22 20:06:30

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

        (2)把这个压缩包上传到ftp服务器上。

2、设置变量名:

#!/ibin/bash #前面加了个空格,不加空格有可能报错,跟Linux配置有关系 -bash: ./a.sh: /ibin/bash: bad interpreter: No such file or directory

y1=`date "+%Y"`   #获取当前时间年月日中的年。 注意=后面不是单引号``(这个符号在esc符号下面。英文状态下。) ''(这才是单引号)

m1=`date "+%m"`  

d1=`date "+%d"`

file="$y1-$m1-$d1"log #拼接文件名。 如:20160327log

echo $file

echo $y1

echo $m1

echo $d1

srcdir="/" #本地目录

desdir="ftp" #ftp服务器的目录

ip=192.168.0.0 #ftp服务器ip地址,根据自己的情况写。要进行ftp上传首先要安装ftp,这个自己上网上找教程,很多的。 本地目录下能用ftp指令就行了。

port=21 #ftp服务器端口号。默认21

user="ftp" #ftp用户名

password="123456" #ftp密码

3、打开日志文件夹,剪切日志到新的文件夹下,然后压缩。

cd /opt/

rm -rf /logFile

ls -l |grep r|awk '{print $9}'|grep -v 'name.txt' > /name.txt #将文件名读出来放到name.txt文件中,name.txt文件除外。

mkdir /$file

TatolCount=`cat /name.txt|wc -l` #统计一下一共有多少个文件名。

echo $TatolCount

for i in $(seq 1 $TatolCount); do  #有多个文件就for循环多少次

echo $i 

filename=`sed -n ''$i'p' /name.txt | awk '{print $1}'`               #将第n行的文件名拿出来赋值给filename 注意sed后面是``(不是单引号,esc下面的符号) '$i'(这里是单引号)

echo $filename

cd /opt/$filename

ls

mv ./2* /$file #剪切文件到新的文件下。

echo $logFile

done

#剪切完毕压缩文件夹

tar="$file".tar 

tar czvf /$tar /$file

rm /$file -r

4、#ftp上传压缩好的文件。

ftp -v -n >>error.log <<EOF #将上传过程中产生的打印信息写到error.log里面 后面判断是否成功要用

open $ip $port

user $user $password

binary

cd $desdir #打开ftp文件目录

lcd $srcdir #本地文件目录

prompt off

mput $tar #上传文件 

close

bye

EOF

5、grep -c '226 Transfer complete.' error.log #判断上传是否成功。上传成功error.log里面会有226 Transfer complete.字样   操作完毕删除没用的文件。

if [ $? == 0 ]

then

echo "success"

rm $file

else

echo "error"

fi

rm error.log

以上是说明。看了以上的说明还不明白的话进这个itofficeweb网站,搜索文章shell脚步自动备份。

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