一键备份vps上的文件

  这几天帮一客户把网站从国内某垃圾idc搬到国外的vps(何为垃圾?丫的竟然不支持在线压缩,=。=),本来是想帮其安装kloxo的面板方便直观的操作文件,但考虑到kloxo用的是Apache,而我打算的帮他装lnmp(Linux+nginx+Mysql+php),遂放弃kloxo,于是立马wget了Licess大大的lnmp一键包进行安装。

  待配置好vps环境,迁移完网站后,备份这个问题该考虑了,熟悉ssh操作的这不是什么问题,用putty登录进去几个tar命令再下载或sftp到其他服务器上就完事了,可对于一个对ssh操作完全不懂的人来说这就是个难事了,于是我进入了蛋疼的苦想冥思中,难道真要手把手教他ssh操作吗?各种命令参数不光要了他的命也要要了我的命,这个时候我想到了putty的命令行程序plink,或许在它身上可以找到出路。

先介绍一下什么是putty、plink?

putty是一个在win系统下拥有GUI界面的ssh客户端,它能用来远程管理Linux系统,而plink就是putty的命令行程序,依托Windows的cmd进行操作,当然,它们还能用来干点其他事,不必言表,你懂的!

设想的解决方案

通过建立批处理文件运行plink自动登录到vps上,然后用./命令运行放置于vps上sh文件(其实sh文件也能理解为Linux下的批处理),然后再把cd、tar、mv命令写在sh文件上,这样就实现了在Windows中点一下就备份vps上文件的目的。

先在Windows中新建个文本,写入以下代码,另存为vpsbackup.bat(一定要把txt后缀改为bat后缀)。
Windows中批处理文件的代码:
cd c:\
c:
plink -batch -ssh -pw ssh密码 ssh用户名@vps的ip ./backup.sh
cmd.exe

再新建个文本,把以下代码根据自己的具体情况修改后写入,另存为backup.sh(一定要把txt后缀改为sh后缀),上传到vps的root目录。

#!/bin/bash
#把/home/wwwroot/换成需备份文件所在的目录
cd /home/wwwroot/
#把example1换成想要的压缩包名称,content换成需要备份的文件名或目录,形如file1.php file2.php file3.php conten1 content2
tar -zcvPf example1.tar.gz file.php content
#如果还想备份upload文件下的某几个文件或文件夹,那就添加下面的,把/home/wwwroot/upload换成需其他备份文件所在的目录
cd /home/wwwroot/upload
tar -zcvPf example2.tar.gz file21.php file22.php file23.php conten21 content22
#然后再移动到根目录方便下载备份,同样也可以建立一个单独存放备份的文件夹如backup存放备份
mv example2.tar.gz /home/wwwroot/

如果backup.sh是在ssh中用vi建立的话可以忽略以下内容
因为backup.sh是在Windows环境下建立的,Linux环境不认它,所以我们需要登入ssh运行vi修改文件编码,方法如下
chmod a+x backup.sh
vi backup.sh
:set fileformat=unix
:wq

这个步骤很重要,话说我在测试的时候就是因为没改编码的原因导致bad interpreter: No such file or directory。

  最后把下载的plink.exe,放在C盘根目录,vpsbackup.bat随意放置,只要别手贱点到导致无谓的备份就成,如果发现backup.sh无法运行的话请把权限设置为777。本文主要是分享下这个思路,利用vps上的backup.sh文件可以有更多的功能(如利用sftp把备份发送到另外的vps上),但本人水平实在有限,只能写这么多,高手请勿见笑。

《一键备份vps上的文件》上有115条评论

  1. 这不舍近求远么
    有别的vps的话,还用ftp干嘛,两个直接时时同步就完了。
    改编码在editplus里就能改了。

    1. 他只有一个vps,这也是没办法的选择。客户对ssh操作完全没概念,只能帮他想这个办法了。

  2. 楼主写的很不错,没有多余的修饰,文章也显得容易理解。总体感觉很有可读性。顶你一个。欢迎回访哦~

    1. 贵客来了啊~说实在话,要安心写博,还是选个靠谱的空间比较好,这样就不用费力气在空间上出现的这样那样的问题上了。

  3. 可以用PSCP也是PUTTY的内置功能。直接用SSH下载。把这个命令写到VPSbackup.bat里就行了。

    VPS上只要做个定时脚本打包备份就行了。也不需要放到网站根目录了。安全!

    我自己也用的VPS但还没有想备份。不过你倒是提醒我了。我回头也做一下。

    1. 恩,主要是对方无多余vps或备份主机,不然的话帮他写个定时备份发ftp的脚本就完事了。。

      1. 得到你的文章提醒,我自己来家把VPS自动备份了。。其实我都不用备份。数据少啊。

        并且我博客也写了关于windows的自动备份。哈哈。学你一下下。。

  4. 我来看你啦 好久不来了 我的小博 域名以不小心 被别人买去了 所以可以去掉我的连接拉 不知什么时候我博就进不去啦~~哎 我新 域名 ExistentialSpace.com 还未启用~~ 启用啦我会 长来看你的~~~可以的话 可以先帮我来个连接
    http://www.ExistentialSpace.com 存在空间~~~~嘿嘿

  5. 前两天朋友给我个VPS让我练手,给我6段代码,装kloxo。。。还好,第二次就成功了。。。

    1. 现在一键包很多了,像什么lnmp,lanmp等等~~还有litespeed安装也很方便了,同样也可以在web页面上管理操作~

  6. 就是超怕折腾VPS,所以因故也一直不敢买哦,再者似乎有些浪费,一分钱一分货的道理哪个行当都是一样滴。

  7. 请问我有一台家用电脑,基本上是24小时开机,XP系统, 在阿里云还有一个centos的VPS, 如何定时下载VPS上的网站数据?能出个教程吗?
    感谢ing

发表评论

电子邮件地址不会被公开。 必填项已用*标注