今天一下午就干了一件事——重装lnmp。其实装lnmp只需要半个小时的时间,当然这取决于VPS的性能。装了N遍了,重装lnmp对我来说是一件很痛苦的事。但今天不得不做,因为我犯了一个错,多打了一个空格。同时也表示我对这位朋友的歉意。丢了一个月的数据。
记得上次犯过这样的错误,当时用mv的命令,mv xxx /* /home/wwwroot/xxx.com,于是整站乃至整个vps就错乱了。不管是FTP客户端还是SSH都失效了。怎么办?我已经记不起当时是怎么解决的。貌似提前备份了一下,只需要用另外一台vps将数据拷过来就好了。可这次不同的是用了rm -r xxx /* ,咔,看出来了没,一个空格,就这么一个空格,全部数据被删除了,甚至系统文件都没了。我恨,恨不得将自己碎尸万段。这就好比本山大叔那双手一样,一抖多按了一个零,3000变30000,没了!钱乃小事,关键那么多数据没了,多可惜啊!
所以今天特别百度了很多关于SSH最简单最快速的备份教程。其实很久以前我也研究过这个教程,当时愣是没整明白。今天,我终于搞明白了。这跟win下的批处理是一样的道理和效果。老霸气了。
#!/bin/bash #Funciont: Backup website and mysql database #Author: 皇家元林 #Website: http://hjyl.org/ #IMPORTANT!!!Please Setting the following Values! ######~Set MySQL UserName and password~###### MYSQL_UserName=数据库用户名 MYSQL_PassWord=数据库密码 ######~Set MySQL Database you want to backup~###### Backup_Database_Name1=数据库名 Backup_Database_Name2=数据库名 Backup_Database_Name3=数据库名 Backup_Database_Name4=数据库名 ######~Set FTP Information~###### FTP_HostName=FTP的地址 FTP_UserName=FTP用户名 FTP_PassWord=FTP密码 FTP_BackupDir=/home/backup #备份文件路径 #Values Setting END! TodayWWWBackup=xhjyl_$(date +"%Y%m%d").tar.gz TodayDBBackup=db-*-$(date +"%Y%m%d").sql.gz OldWWWBackup=xhjyl_$(date -d -7day +"%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -7day +"%Y%m%d").sql.gz # backup nginx configure files tar -czvf /home/wwwroot/nginx_conf_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf/vhost #backup mysql /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 | gzip > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 | gzip > /home/backup/db-$Backup_Database_Name2-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name3 | gzip > /home/backup/db-$Backup_Database_Name3-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name4 | gzip > /home/backup/db-$Backup_Database_Name4-$(date +"%Y%m%d").sql.gz # backup wwwroot and mysql tar -czvf /home/backup/xhjyl_$(date +%Y%m%d).tar.gz /home/wwwroot --exclude=ftp --exclude=phpmyadmin rm $OldWWWBackup rm $OldDBBackup cd /home/backup lftp fish://$FTP_UserName:$FTP_PassWord@$FTP_HostName << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF
保存为backup.sh,上传到VPS,并添加755权限,执行。经测试是有效果的。
如果能定时自动备份就更棒了,据说crontab -e,测试了好几遍,没反应,不知道是什么原因。慢慢折腾吧!暂且记录这些。洗洗睡了。
P.s.这些代码在hilau.com也有记录。
P.s.有人说我的博客https在chrome下的那把锁被打上叉叉了,这是因为本站有些js调用来自外链,其中JQ库换成HTTPS已经好了,然后就那些Google广告的代码,不过这些貌似改不了的。
摸摸头,rm之类的命令你要审核后再按 enter,养成习惯。
12年前 · 梅州 · Unknown Unknown
@zwwooooo 是的,以后对这种命令得看仔细了。。伤不起的
12年前 · 邢台 · Unknown Unknown
小刘强大,以后有时间再来学习这个代码
12年前 · 嘉兴 · Unknown Unknown
@朱建林 这个比插件好用多了
12年前 · 邢台 · Unknown Unknown
不仅要小心空格,还要小心网上的一些Shell代码,直接复制下来就扔到终端,可能会有隐藏命令
12年前 · 重庆 · Unknown Unknown
@郑杰 对,所以对于不懂那些代码的我,备份很重要!
你真的换上Ubuntu了,搞的我都心动了
12年前 · 合肥 · Unknown Unknown
空格的威力挺猛的嘛
12年前 · 广州 · Unknown Unknown
@常阳时光 是的,它毁掉了我整个系统。。。
12年前 · 邢台 · Unknown Unknown
今天又看了一遍,这。。。我也有过一次,用了rm -r xxx /*
我当时只是想删除当前目录下的所有文件 用 rm -r xxx ./* ,没想到少打了一个. 全删完了。。。
10年前 · 嘉兴 · Unknown Unknown