这里先说下脚本的实现过程:
1.先在服务器上把备份自动打包到一个web目录下(当然这个web目录其他人无法访问到的),好让脚本去下载.
2.在本地服务器把备份包下载下来,进行解压然后拷贝到专门的备份目录里.
3.当上面两步都完成了,我们就要把服务器上那个备份包删除,避免泄露.
下面是脚本:
1.这个是在服务器上把最新备份筛选出来,并把最新备份打包到web目录:
cat copy_bakfile.sh
代码如下 |
复制代码 |
#!/bin/bash
location="/root/sqlbak/"
newfile="/root/newfile"
file='/root/newfile'
web="/var/www/vhosts/wwwroot/phpmyadmin"
rm -f ${file}/*
#file=$(find $location -type f -mtime -1)
file=$(find $location -type f -mmin -60)
cp $file $newfile
sleep 3
ls -l $newfile |awk '{print $9}'|xargs tar -C $newfile/ -czf $web/bak.tar.gz
|
2.这是下载备份包脚本(先连到服务器上执行copy_bakfile.sh把最新备份筛选出来,并打包到web目录,并把打包好的bak.tar.gz下载到本地)
cat down.exp
代码如下 |
复制代码 |
#!/usr/bin/expect -f
set timeout -1
set passwd PASSWORD
spawn ssh -p18330 [email protected]
expect {
"yes/no" { send "yesr";exp_continue }
"password:" { send "$passwdr" }
}
expect "*#*" { send "sh /root/soft_shell/copy_bakfile.shr" }
expect "*#*" { send "exitr" }
spawn axel -q http://blog.slogra.com/bak.tar.gz -o /root/sqlbak/
expect eof
|
3.这是解压备份包脚本
cat process.sh
代码如下 |
复制代码 |
#!/bin/bash
pid=`ps -C axel --no-header|wc -l`
file=`find /root/sqlbak/ -name bak.tar.gz.st|wc -l`
list="/root/sqlbak"
newfile="/data/onlinesqlbak"
date="`date '+%Y-%m-%d %H:%M:%S'`"
if [[ $pid -eq 0 ]] || [[ $file -eq 0 ]];then
expect /root/soft_shell/delbak.exp
#tar zxf $list/*
tar zxf $list/* -C $newfile/
sleep 10
rm -f $list/bak.*
#for i in $list/*;do cp -r $i $newfile/;done
#sleep 1
#rm -f $list/*.gz
else
echo "$date | load download....." >>/root/processlog.txt
fi
|
s:相信大家都知道怎么确认是否有下载完,这个脚本就起到检查down.exp是否有下载完,确认下载完了才解压bak.tar.gz,并把解压出来的拷贝到专门的备份目录里,并执行删除脚本去删除服务器上web目录里的bak.tar.gz包.
4.这是删除服务器上bak.tar.gz包的脚本
cat delbak.exp
代码如下 |
复制代码 |
#!/usr/bin/expect -f
set timeout -1
set passwd PASSWORD
spawn ssh -p18330 [email protected]
expect {
"yes/no" { send "yesr";exp_continue }
"password:" { send "$passwdr" }
}
expect "*#*" { send "rm -f /var/www/vhosts/wwwroot/phpmyadmin/bak.tar.gzr" }
expect "*#*" { send "exitr" }
expect eof
|
最后说一句,要使用上面这几个脚本,记得先安装axel和expect这两个工具,不然你是无法把备份包down下来的.
原文来自:http://blog.slogra.com/post-517.html