折腾了几个钟才搞出来的东西,必须备份下,有空真的学学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代码,当然需要添加每天自动执行的命令,这里我就不说了,百度去吧
附:
sudo apt-get install lftp
Centos安装lftp命令
yum install -y lftp
附:安装sendmail函数
apt-get install sendmail sendmail-bin
这个真的是鸟文...我一句都不想去看
@爱的回归线: 我也是被逼的...
Dropbox 不爱你 = =
@小雨: 不习惯用那啥的。。
30天貌似有点长了,十几个G就出来了 🙂
可以修改的嘛 我备份到某vps上去 反正不限空间... 但是30天真的没必要
表示不能回复
不能回复?
com被个基督教电台买了 😡 ,还不出售
我就只能用net,期待他忘记续费的一天。
曾经我也这么认为的...