SSH下自动备份到本地及利用lftp上传到SFTP空间

2013年07月28日 | 分享 | 10条评论

折腾了几个钟才搞出来的东西,必须备份下,有空真的学学linux命令

#!/bin/bash
echo "Working... Code by LiuWeili WWW.COBMW.COM..."
#从这里开始编辑
MYSQL_USER=^^^   #mysql用户名
MYSQL_PASS=^^^   #mysql密码
WEB_DATA=^^^   #要备份的网站数据目录
BACKUP=^^^   #备份至本地目录
DB_NAME=^^^   #备份指定数据库名称
#SFTP设置
USERNAME=^^^   #SFTP用户名
PASSWORD=^^^   #SFTP密码
HOST=^^^  #SFTP主机
SFTPBACKUP=^^^   #备份至SFTP远程目录
#停止编辑
#定义数据库的名字
DataBakName=Datass_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
#删除本地30天前的数据
rm -rf $BACKUP/Datass_$(date -d -30day +"%Y%m%d").tar.gz $BACKUP/Web_$(date -d -30day +"%Y%m%d").tar.gz
cd $BACKUP/
#导出用户下所有数据库,一个数据库一个压缩文件
#for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
# (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
#done
#导出指定数据库
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DB_NAME | gzip -9 - > $DB_NAME.sql.gz)
done
#压缩数据库文件为一个文件
tar zcf $BACKUP/$DataBakName $BACKUP/*.sql.gz
rm -rf $BACKUP/*.sql.gz
#压缩网站数据
tar zcf $BACKUP/$WebBakName $WEB_DATA
#上传至SFTP
lftp -u $USERNAME,$PASSWORD sftp://$HOST <<EOF
cd $SFTPBACKUP
rm -rf $SFTPBACKUP/Datass_$(date -d -30day +"%Y%m%d").tar.gz
put $BACKUP/$DataBakName
put $BACKUP/$WebBakName
bye
EOF
echo "Done... See you next time."

表示完全不熟悉linux的我能折腾出这些,已经感到很满足了。。。

别小看这几句短短的代码,菜鸟的我可是试了4个小时了(囧)...

有了上面的代码,就可以利用ssh自动备份俺的数据咯,也就不仅限制于备份在ftp上,备份到sftp也搞定了...

上面其实只是一个sh代码,当然需要添加每天自动执行的命令,这里我就不说了,百度去吧

附:

Dibian安装lftp命令

sudo apt-get install lftp

Centos安装lftp命令

yum install -y lftp

附:安装sendmail函数

apt-get install sendmail sendmail-bin  

10 条评论

发布评论