前言:絕望的 50KB/s
最近在給一臺遠端 Linux 伺服器部署專案,遇到在一個極其離譜的網路環境:
- 檔案很大:程式碼加資料包足足有 6.7GB。
- 網路極差:本地 Mac 與伺服器之間的 Ping 值高達 700ms+,且伴隨嚴重丟包。
- 速度感人:嘗試使用
scp或rsync直傳,速度穩定在 40KB/s…… 傳完預計需要 40 個小時,而且隨時會斷開。
但在排查過程中發現,伺服器本身的下行頻寬其實並不差(Speedtest 實測有 70Mbps),瓶頸在於“我與伺服器之間”那條擁堵的鏈路,導致 TCP 協議的滑動視窗崩潰,速度上不去。
解決思路: 既然直連不行,那就找個“中轉站”。利用百度網盤(配合 SVIP)作為高速橋樑,並在 Linux 伺服器上透過命令列工具跑滿頻寬下載。
本文將介紹一套 bypy + aria2 多執行緒下載 的終極解決方案。
方案優勢
-
速度快:利用百度網盤的 CDN 和伺服器自身的頻寬,避開點對點擁堵。但是要有百度網盤的會員才能享受高速下載。
-
穩定:aria2 支援多執行緒併發和斷點續傳,搞定大檔案。
操作全流程
第一步:本地檔案壓縮上傳
壓縮: 先將專案資料夾壓縮成 zip 包。可以在終端執行:
zip -r project.zip project_folder
上傳: 開啟百度網盤客戶端,將 project.zip 上傳到網盤 /apps/bypy/ 目錄下,方便後續操作。
第二步:伺服器環境準備
登入你的遠端 Linux 伺服器。我們需要安裝兩個工具:
- bypy:百度網盤的 Python 客戶端。
- aria2:多執行緒下載神器(關鍵!沒有它大檔案會卡死)。
如果你有 conda 環境(終端顯示 (base)),安裝非常簡單:
# 1. 安装 bypy
pip install bypy
# 2. 安装 aria2
conda install -c conda-forge aria2
# 或者
apt-get install aria2 # 如果你有 root 权限
驗證安裝:
輸入 aria2c -v,如果能看到版本號說明安裝成功。
第三步:繫結百度網盤賬號
在伺服器終端輸入:
bypy info
- 終端會顯示一個長連結。
- 複製這個連結,在本地瀏覽器開啟。
- 登入百度賬號,複製網頁上顯示的授權碼。
- 回到伺服器終端,貼上授權碼並回車。
顯示容量資訊即表示繫結成功。
第四步:開啟多執行緒高速下載(核心!)
bypy 預設使用的是 Python 單執行緒下載,遇到幾個 G 的大檔案經常會**“起步快,然後迅速掉速直到卡死(0%不動)”**。
必須掛載 aria2 進行多執行緒拉取。
請執行以下命令:
# --downloader aria2: 指定使用 aria2 下载器
# --processes 4: 开启 4 线程并发(跑满带宽)
# --timeout 600: 增加超时容忍度,防止网络波动中断
bypy --downloader aria2 --processes 4 --timeout 600 download project.enc
效果對比:
- 普通下載:200KB/s -> 0KB/s (卡死)。
- Aria2 下載:
[#20a9c1 1.2GiB/6.2GiB(19%) CN:4 DL:5.2MiB]-> 5.2MB/s 穩定跑滿!
第五步:解密與解壓
下載完成後,你得到了 project.zip。現在用同樣的密碼把它變回 zip 包。
# 解压
unzip project.zip
總結
當 SSH 鏈路質量極差時,不要死磕 SCP 或 Rsync。
“本地壓縮 -> 網盤中轉 -> Aria2 多執行緒拉取” 是一條雖然步驟稍多,但絕對可行、安全且高速的路徑。特別是對於幾個 G 的程式碼或模型權重檔案,這是最節省時間的選擇。
小貼士: 如果你的檔案不在
/apps/bypy/目錄下,記得在網盤網頁端把檔案移動進去,否則bypy可能找不到檔案(apps資料夾名稱可能是中文,注意識別)。