【云盘】使用阿里云盘托管项目大文件
【云盘】使用阿里云盘托管项目大文件
由于经常需要切换服务器运行项目实验,不同服务器在项目实验过程中会产生不同的数据、模型等较大文件,不能像代码那样能够使用git托管,因此考虑使用阿里云盘作为”第三方平台“托管这些大文件。
一、使用思路
使用阿里云盘托管项目大文件的思路跟使用git托管项目代码的思路相似:
- 将服务器上的大文件【上传】到阿里云盘
- 需要使用某大文件而当前服务器没有这个文件时,从阿里云盘【下载】该文件到本地
二、配置过程
2.1 注册阿里云盘
这个步骤就不多说了,但是注意一定要安装阿里云盘APP,因为后面将电脑与阿里云盘账号关联的步骤中只能通过阿里云盘APP扫描网页中的二维码完成关联。
2.2 在服务器上下载aliyunpan命令包
这部分的过程如下:
1、在aliyunpan的github链接中找到合适的安装包
打开aliyunpan的github链接:https://github.com/tickstep/aliyunpan,找到并点击进入releases,跳转出来的页面中有一系列跟不同操作系统架构对应的安装包。
我使用的服务器用的是linux操作系统,但是这里提供的linux安装包也有好几种,对应不同的系统架构。
使用命令
uname -m
查询linux服务器的系统架构:
- 输出为
x86_64
→ 选择...-linux-amd64.zip
- 输出为
aarch64
→ 选择...-linux-arm64.zip
- 输出为
armv7l
→ 选择...-linux-armv7.zip
- 输出为
mips
、mips64
等 → 对应选择 mips 系列版本
经过查询后,确认我需要下载的是linux-amd64的安装包。具体的,假设我要下载aliyunpan-v0.3.7-linux-amd64.zip,此时可以右键该安装包、点击”复制链接地址“,然后得到下载链接:https://github.com/tickstep/aliyunpan/releases/download/v0.3.7/aliyunpan-v0.3.7-linux-amd64.zip
2、在服务器上下载安装包
进入有文件要上传的服务器,使用wget命令下载找好的安装包:
wget https://github.com/tickstep/aliyunpan/releases/download/v0.3.7/aliyunpan-v0.3.7-linux-amd64.zip
当然,也可以不通过wget命令下载,直接在github网页中将安装包文件下载到本地、再上传到服务器也行
3、在服务器上解压安装包
使用unzip命令解压下载好的安装包:
unzip https://github.com/tickstep/aliyunpan/releases/download/v0.3.7/aliyunpan-v0.3.7-linux-amd64.zip
4、进入解压后的文件夹
解压完成后,目录中会出现aliyunpan-v0.3.7-linux-amd64
文件夹,进入该文件夹。
cd aliyunpan-v0.3.7-linux-amd64
5、执行阿里云盘的二进制命令
进入文件夹后,输入命令ls
可以看到阿里云盘的二进制命令aliyunpan
。使用下方命令进入阿里云盘命令行:
./aliyunpan
2.3 授权使用阿里云盘,关联服务器与阿里云盘账号
在服务器上首次使用阿里云盘命令需要先登录。在命令行中输入login
命令:
aliyunpan > login
等待几秒,正常响应时命令行会返回一个网址链接,形如:
将这个链接(包括后面read、……、write那些内容)复制到浏览器中,会出现一个二维码,此时使用阿里云盘APP扫描该二维码,返回命令行并按Enter键即关联成功。
如果等待几秒后命令行提示”登录错误“的问题,一般是网络原因,多试几次或者换个时间再试。
三、aliyunpan基本命令
进入阿里云盘命令行后,输入help可以查看有哪些指令可以使用:
有ls、mkdir等命令,用法和普通的linux命令基本是一样的。
输入exit
即可退出命令行。
四、使用阿里云盘托管项目大文件
4.1 将服务器上的大文件【上传】到阿里云盘
进入aliyunpan命令行后,使用upload
命令将文件上传到阿里云盘(可以先在阿里云盘上创建好你打算放文件的文件夹):
upload <本地文件/目录的路径1> <文件/目录2> <文件/目录3> ... <目标目录>
在aliyunpan命令行中输入
upload --help
可以查看upload
命令的详细用法,文档配置了示例。
执行命令后会看到命令行中输出文件的上传情况。有些文件会重试几次才能上传成功。
4.2 从阿里云盘【下载】该文件到本地/服务器
进入aliyunpan命令行后,使用download
命令将文件从阿里云盘下载到本地。
在aliyunpan命令行中输入
download --help
可以查看download
命令的详细用法,文档配置了示例。
但是如果直接使用download ... --saveto ...
下载文件或文件夹,会发现该文件或文件夹的实际下载地址为:指定的地址+该文件或文件夹在阿里云盘中的完整路径。比如使用download a.txt --saveto /home/b
时,如果a.txt文件在阿里云盘中的路径为/d/a.txt,那么它下载到本地的路径是/home/b/d/a.txt,但其实我只是希望它下载到本地的路径是/home/b/a.txt。
为了修正这个问题,参考如下链接进行修改:
下载的文件,为什么会把云端的对应完整目录也一样下载到本地了呢? #462
JavaScript插件手册
具体如下:
1、进入文件夹aliyunpan-v0.3.7-linux-amd64/plugin/js/
,找到文件download_handler.js.sample
,复制得到副本,然后修改副本的全称为download_handler.js
。必须这样修改文件名,否则后面js插件不会生效。
2、打开js文件,将原来的downloadFilePrepareCallback
函数的内容全部注释掉,粘贴上新的函数内容:
function downloadFilePrepareCallback(context, params) {console.log(params)var result = {"downloadApproved": "yes","localFilePath": ""};if (params["driveFileType"] != "file") {return result;}// 下面的代码都是分隔路径,方便后面修改路径时使用var filePath = params["localFilePath"];filePath = filePath.replace(/\\/g, "/");// 目录完整路径var dirPath = "";// 文件名,不包括后缀名var fileName = "";// 文件后缀名var fileExt = "";var idx = filePath.lastIndexOf('/');if (idx > 0) {dirPath = filePath.substring(0,idx);fileName = filePath.substring(idx+1,filePath.length);} else {fileName = filePath;}idx = fileName.lastIndexOf(".")if (idx > 0) {fileExt = fileName.substring(idx,fileName.length);fileName = fileName.substring(0, fileName.length-fileExt.length)}// 只保留文件名,不需要目录结构var saveFilePath = fileName + fileExt;// 返回result["localFilePath"] = saveFilePath;return result;
}
3、保存,之后修改就会生效了。