SSH下自动备份到本地及利用lftp上传到SFTP空间
折腾了几个钟才搞出来的东西,必须备份下,有空真的学学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就出来了 :smile:
可以修改的嘛 我备份到某vps上去 反正不限空间… 但是30天真的没必要
表示不能回复
不能回复?
com被个基督教电台买了 :x ,还不出售
我就只能用net,期待他忘记续费的一天。
曾经我也这么认为的…