使用SSH命令备份恢复VPS上网站和数据库的方法教程
一、备份网站和数据库的方法
1、用putty登陆你的VPS。
PUTTY的下载地址https://down.bnxb.com/tools/4744.html
PUTTY的使用教程:https://www.bnxb.com/linuxserver/21277.html 备注:所谓的SSH账户就是你登陆服务器的ROOT账号密码
2、设置SCREEN并压缩程序文件
为了防止我们本地网络断开,造成VPS上执行的命令中断,最好安装一个screen,这个命令最小化安装的LINUX系统没有自带,需要安装
CentOS系统执行以下命令安装: #yum install screen Debian/Ubuntu系统执行以下命令安装: #apt-get install screen
然后执行
screen -S bnxb
创建一个进程
这样如果我们意外中断了SSH的连接,下次登陆VPS,可以执行
screen -r bnxb
这样恢复之前的界面,这样就不会中断程序执行
下面进入正题,压缩文件夹
zip -r web.zip bnxb.com
注:bnxb.com为存放程序的目录,你可以先用ls命令列下目录,看看你要备份的目录在哪里
另外需要说明的是ZIP命令所产生的压缩包,是压缩率最低的,不过有个好处就是压缩速度很快,但如果为了节省你的压缩后存储空间,可以考虑压缩成BZ2格式,这个要用到TAR命令,可以拉到本文最下面,专门做说明
另外如果你的文件大于2G(压缩后大于2G)那么在部分UNIX类服务器上可能无法顺利用ZIP打包,这时候你可能需要用下面的命令备份成GZ格式才行
tar -zcvf web.tar.gz bnxb.com
另外如果你文件很多,经常备份的话,直接运行TAR将所有文件都备份一次肯定非常慢,那么可以在第一次运行命令备份个完整备份后,然后不要将web.tar删除,以后用tar -u命令进行增量备份,这样就只备份改动部分,速度会快非常多,不过这种方式未进行压缩处理,文件会比较大
命令如下:
第一次备份:
tar -cf web.tar bnxb.com
增量备份:
tar -uf web.tar bnxb.com
3、备份mysql数据库
mysqldump -u username -h mysql.bnxb.com -p database > mydata.sql
输入后,按提示输入密码即可(输入密码不显示,实际已经输入)。以上带颜色的字体需要修改为你的参数,其中mysql.bnxb.com请改为您的Mysql服务器地址(本地的MYSQL用localhost代替),username改为你的MYSQL用户名,database改为你的数据库名
然后登陆FTP把备份好的文件包下载到本地电脑保存下来
另一种备份mysql数据库的命令:
假如我们要备份的数据库参数为::
MySQL地址 mysql.bnxb.com
MySQL名称 db_name
MySQL帐号 db_user
MySQL密码 123456
进去SSH后运行如下命令::
mysqldump -hmysql.bnxb.com -udb_user -p123456 db_name >bak.sql
你没看错: -h,-u,-p后面没空格,直接加的都是,加入空格后会出错
根据数据库大小不同,备份所花费的时间也不一样,,耐心等待
4、登陆FTP下载
可以登陆服务器把备份文件下载到本地电脑备份
或者使用wget命令在新服务器上执行进行文件拉取
比如我们旧服务器上备份了一个文件放在了http://www.bnxb.com/a.zip
那我们只需要在新服务器上执行
#wget http://www.bnxb.com/a.zip
就会把文件下载到当前目录下,如果需要定位到新服务器上的某个目录,那就用cd命令进入
比如
cd /home/wwwroot/bnxb.com
二、恢复网站和数据库的方法
-----------------------------
1、恢复文件ZIP格式:
unzip xxx.zip
如果是压缩成tar.gz
解压tar.gz格式那么用命令
tar -xzvf xxx.tar.gz
一般来说如果你用将网站搬迁到别的服务器,可能会出现权限不一致现象,这个时候就要运行一下
chmod -R 777 第一层目录名
这样将所有文件权限都设置为777,然后等网站能访问了,再手工去调整具体目录权限(为安全起见)
2、恢复数据库:
假如我们想把bak.sql这个数据恢复到以下的数据库里面::
MySQL地址 localhost
MySQL名称 sql_name
MySQL帐号 sql_user
MySQL密码 123456
登录SSH后,运行以下命令::
mysql -u数据库用户名 -p数据库密码 数据库名称 < 数据库备份文件.sql
你没看错: -h,-u,-p后面没空格,直接加的都是,加入空格后会出错
这个命令之前你要先用CD命令 进入要导入的数据库存放的FTP目录下面,再运行上面命令才行。
根据机器性能不同,所需时间也不一样.........
关于乱码的问题补充
导出的时候,强制字符集 ::
mysqldump -h localhost -u name -p --default-character-set=utf8 dbname >backup.sql
导入的时候,强制字符集
mysql -h localhost -u name -p --default-character-set=utf8
use dbname
source dbname.sql
:注意,utf8是个例子,按照实际情况设置
说下TAR.BZ2格式压缩怎么写命令,这个压缩格式是目前LINUX下压缩率最高的格式
范例一:将整个 bnxb.com 目录下的文件全部打包成为 web.tar
[root@linux ~]# tar -cvf web.tar bnxb.com <==仅打包,不压缩!
[root@linux ~]# tar -zcvf web.tar.gz bnxb.com <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf web.tar.bz2 bnxb.com <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为文档名~
更多SSH的命令,可以查阅http://www.bnxb.com/linux/2010/01191833.html