记录一次 用服务器下载文件,并上传到百度网盘的实践

最近学会使用DepotDownloader下载旧版游戏,担心有一天steam不给下载了,所以就想他们都下载下来,然后保存到网盘上,然后分享出来。
我所下载的游戏叫《泰拉瑞亚》最新版有1.3万多个文件,文件大小在400m左右,在我电脑上下载需要20多分钟,而服务器上只需2分钟不到,这个速度非常棒啊,于是想用服务器来完成下载。DepotDownloader需要.net 环境支持,正好centos能够安装.net.

安装 .net

yum install dotnet

下载并解压 depotdownloader

wget https://github.com/SteamRE/DepotDownloader/releases/download/DepotDownloader_2.4.0/depotdownloader-2.4.0-prerelease.zip
unzip depotdownloader-2.4.0-prerelease.zip -d ./client/

下载旧版

dirName=1.4.0.5
manifest=5578977409290338966
dotnet ./client/DepotDownloader.dll \
 -username $userName \
 -password $password \
 -app 105600 \
 -depot 105603 \
 -manifest $manifest \
 -dir ./$dirName \
 -validate \
 -remember-password

考虑到游戏文件数量比较多,但实际文件大小不大,打包成zip再从服务器下载下来比较靠谱,一来文件小一点节约带宽,而来可以保证文件完整性。
打包成zip,考虑到“.DepotDownloader”可能会带有我个人的steam信息,而且这也非游戏必须部分,所以打包的时候排除掉。

zip -q -9 -r $dirName.zip "./$dirName" -x "./$dirName/.DepotDownloader/*"

此时就是把刚才的zip下载到本地,然后传到百度网盘上。服务器的带宽是1m的,下载速度只有100多kb/s,这个速度非常慢,整理资料发现可以从steam下载到90多个旧版,这速度还不得下到猴年马月。
很自然地,便想到百度网盘有没有命令行版,这样可以自己从服务器上上传到百度云盘。于是找到 bypyBaiduPCS-Go
使用BaiduPCS-Go时经常提示验证码输错,有些验证码很清晰也很好识别是不可能输错的,即使有几率输入正确后,仍然提示要手机和邮箱验证,点了手机验证,手机迟迟没收到验证码。此方法不通。

使用bypy时看到这些提示,也是有些哭笑不得,看来百度网盘官方也不太在意pcs接口的可靠性。根据提示我安装了1.6.10版。然后上传文件成功!
在这里插入图片描述
起初我以为bypy能列出我网盘的文件,当上传完一个测试文件后才发现,原来文件被单独放在 “/我的应用数据/bypy/”文件夹下,看到这有点小激动,直接传到百度网盘上可行!!!由于上面提示百度网盘返回的md5全错了,我用百度网盘下载了刚才的文件,然后做md5校验,发现是一致的,这个工具是有效的!!!
在这里插入图片描述
经过对比整理出90多个版本,于是自己写了一个批处理来执行。目前来说整个工作大概有个步骤:

从steam上下载–>打包成zip–>上传到百度云盘
由于服务器的 磁盘空间只有40GB,目前仅剩下15GB左右的空间。从steam下载游戏文件,再打包成zip,这就是双倍大小,下完30个旧版后,磁盘空间就剩下3GB了,不能一口气单独执行完上面的单个步骤,因为考虑到从steam上下载时间过长可能会要验证什么的,所以先做好一次性下完比较保险。所以当一个zip被成功上传到百度云盘上这个zip都应被删除,上面的三个步骤应该是往复90次的。于是脚本写成这样了。

#!/bin/bash
# https://steamdb.info/app/105600/
# https://steamdb.info/depot/105601/manifests/

# 获得本sh所在目录
sh_path=$(cd `dirname $0`; pwd)
cd "$sh_path"

userName=你的用户名
password=你的密码
depots=(
    '1.4.1.2','7174777254123425714'
    '1.4.0.5','5578977409290338966'
    '1.4.0.1','982630871057430331'
    '1.3.5.3','8115792227484220109'
)
for var in ${depots[@]};do
    myArr=(${var//,/ })
    dirName=${myArr[0]}
    manifest=${myArr[1]}
	
	# 从steam上下载游戏
    dotnet $sh_path/client/DepotDownloader.dll -username $userName -password $password -app 105600 -depot 105601 -validate -remember-password -manifest $manifest -dir $sh_path/$dirName
    
	# 压缩成zip
	# 压缩完后,删除源文件
	# 记录zip的md5,到时候从百度网盘下几个文件校验一下
    zip -q -9 -r $dirName.zip "./$dirName" -x "./$dirName/.DepotDownloader/*"
    rm -rf $dirName
    md5sum $dirName.zip>>log_md5.txt
    
    # 上传到百度云盘,完成后自动删除
    bypy upload $dirName.zip
    rm -rf $dirName.zip
done

在这里插入图片描述

吐槽一下,服务器支持临时提升带宽,在写脚本前把带宽升级成4m,过了一段时间发现速度还是太慢了,4m要到明早0点到期,想说今天下午升级4个小时的10m来加快进度,谁知道还是从1m开始计费,这不是多收费么,看来平台鼓励你一次性升完。。。
在这里插入图片描述



总结

  • 得益于服务器的下行网络,服务器从steam下载文件稳定且快速,但受降于服务器带宽,从服务器上下载文件到本地,以及上传到百度网盘速度较慢。
  • 服务器的磁盘读写能力也是很不错的,压缩操作挺快。
  • 直接从服务器上传到百度网盘,节省了大量的下载和上传时间。
  • 类似的任务,给服务器执行,高效且可靠,不用长时间挂机,也可以卸下心里负担。

写文章时,心情多少有点激动,多多少少有点感慨,服务器怎么这么给力,然后就是思路清晰,是高效解决问题的前提。

百度网盘文件下载到本地可以使用多种方法。一种方法是使用百度网盘提供的命令行工具bypy。通过使用bypy命令行工具,你可以上传、下载和管理百度网盘中的文件。常用的命令包括:bypy list(显示百度网盘中的文件)、bypy upload(上传文件百度网盘)、bypy downfile(从百度网盘下载单个文件)和bypy downdir(从百度网盘下载整个文件夹)。\[2\] 另一种方法是将文件下载到本地,然后再传输到服务器。你可以使用常见的下载工具如axel来加快下载速度。下载完成后,你可以使用rz/sz命令将文件传输到服务器上。这种方法可能会更快一些,特别是对于大文件来说。\[1\] 需要注意的是,以上方法适用于小文件,对于大文件,可能需要百度网盘的VIP会员才能更快地下载。如果你有其他的方法或者知道如何获取百度网盘下载地址,也可以尝试使用这些方法来下载文件。\[1\] #### 引用[.reference_title] - *1* *3* [Linux服务器下载百度网盘文件](https://blog.csdn.net/Lian_Ge_Blog/article/details/129244288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [服务器如何下载百度网盘文件?Linux服务器如何在百度网盘中连接、上传下载;在Linux服务器下载百度云盘中的资料](https://blog.csdn.net/weixin_39589455/article/details/128985553)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值