一键备份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上),但本人水平实在有限,只能写这么多,高手请勿见笑。

Scroll to top