记一次web站点备份到百度云盘的实践

96
有时右逝
0.1 2019.03.04 21:57 字数 1238

前言

站点备份是一个经常需要做的事情,毕竟难免存在服务器异常情况或者黑客入侵,从而丢失数据。我的一个朋友,是一个字幕组的站长,他的服务器到期了,暂时不打算续费。可能是最近版权越来越紧,字幕组毕竟在侵权的边缘。作为他的技术支持,这个备份任务自然落在我身上。于是研究了下备份事宜。

策略

备份通常就是 压缩服务器文件。然后下载到本地即可。

这里存在一些弊端。例如本地下载过慢、本地也容易丢失、不利于传递给其他人等问题。

因此我看中了百度云盘。作为国内目前最广泛使用的个人存储平台,百度云几乎人手一份。

免费、分享方便,空间够大,所以是很好的存储方案。

百度云的缺点是下载速度较慢,但是由于程序自动化完成,所以不用考虑速度问题。

这里备份选择: 先站点备份到远程服务器1份,再备份到云盘1份。 双保险。

其中使用的工具是 bypy

过程

这里是基于实际项目的实践,会使用项目自身的一些工具,例如该项目使用了wdlinux,因此可以自己通过控制面板进行 备份操作。如果你没有该工具,这需要自己 使用类似的面板或者命令进行打包。

  • 先基于wdlinux打包站点。


    image.png
image.png
image.png

最终我们得到的是一个压缩包文件。位于某个备份路径下。

  • 远程服务器镜像备份一次。

在站点服务器,进入备份路径下,

执行scp命令即可。

scp -P 22 -r  备份的压缩文件  远程服务器用户名@远程服务器ip地址:远程服务器备份文件夹路径

此时可以看到文件传递的进度条。此时不可以退出账号或者关闭终端,否则备份停止。

通常站点包含了代码和资源文件,压缩包都很大,如果一直等待备份完毕也不合理,因此可以选择后台执行命令,该操作需要使用nohup和&组合。

nohup  scp -P 22 -r  备份的压缩文件  远程服务器用户名@远程服务器ip地址:远程服务器备份文件夹路径 &

注意这里要小心,执行上面命令后先按回车,再输入exit 退出账号 才可以关闭终端窗口。否则会导致nohup异常退出。

注意确保账号拥有文件读写权限。避免备份失败。

如果执行nohup后 还未退出账号,此时可以通过jobs查看 刚刚的命令。

如果已经退出,这只能通过进程来查看命令

ps -aux | grep scp
  • 备份到百度云。
  1. 安装python环境。 这里我的系统是centos已经具备了环境,无需安装。
python --version
Python 2.7.5

pip --version
pip 18.0 from /usr/lib/python2.7/site-packages/pip (python 2.7)

没有环境的请自行百度处理。

  1. 安装bypy
pip install bypy
  1. 启动bypy
# 获取存储的空间信息。
bypy info

# 获取百度云文件列表
bypy list

# 将当前目录同步到百度云
bypy syncup

这里只需要以上3个命令即可,其他命令可以通过 bypy --help 查看。

首次执行需要授权。如下图(由于我授权时未截图,这里从网络上找的其他人的图)

image.png

其中标红的url 复制到浏览器打开,会出现授权码,再回到终端输入授权码即可。

这里可能出现授权失败的问题,我遇到了。 我的解决方案是

访问 https://passport.baidu.com/accountbind
如下图

image.png

鼠标移动上去后会出现删除菜单,删除授权后重新开始授权。

授权过程较慢,请耐心等待。直到出现success即可。

  1. 开始备份

上面授权成功后,此时可以开始进行备份了。

先创建一个专属备份文件夹。这里路径是 ~/bypy

mkdir bypy

如果你是多个文件,建议先放入到一个文件夹中,压缩之后再处理
压缩命令为

tar -cvzpf 压缩包的名字.tar.gz   需要备份的文件夹

将上面产生的压缩文件 拷贝到 bypy文件夹中。

cp 备份的压缩包   ~/bypy

备份命令如果没指定目录,会默认选择当前执行命令的文件夹。

因此需要先进入bypy文件夹下。

cd  ~/bypy

再执行

nohup bypy syncup &

执行上面命令后,先回车。再执行exit 退出账号,再关闭终端。

经过等待一段时间后,自己打开百度云盘即可看到备份文件。

image.png

其中nohup.out 文件是nohup命令的输出日志。

初期可以创建一个文本进行测试,有利于很快看到效果。

最后

该备份操作,可以通过crontab计划任务,从而实现定时自动完成备份。这里由于只需要备份1次,因此没有展示。

朝花夕拾
Web note ad 1