快捷搜索:   服务器  PHP  安全  IIS  linux 安全

使用SSH命令备份恢复VPS上网站和数据库的方法教程

一、备份网站和数据库的方法

1、用putty登陆你的VPS。 

PUTTY的下载地址https://down.bnxb.com/tools/4744.html 

PUTTY的使用教程:https://www.bnxb.com/linux/2010/03074743.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 


您可能还会对下面的文章感兴趣: