百度網盤下載方式總結
今天又折騰了下如何較為快速地下載百度網盤的文件,這里記錄一下,以后不再折騰了
1. 手機下載,Ftp傳到電腦
手機不知道為什么下載會比電腦快不少,特別是大文件。Linux版下載文件也很快,感覺可能是對Linux版有優化
缺點就是手機要一直連着wifi,而且比較耗電
2. aria2
md不要再試了,這個東西一是配置起來非常繁瑣,跨平台更繁瑣,二是也不能實現加速,只是能直鏈下載。唯一將來可能有用的地方是在路由器上配置aria2然后到路由器上下載,這樣不額外費電。但是還是,配置起來非常麻煩
3. 虛擬機下載
這指的是因為Linux下載快,所以開Linux虛擬機下載
缺點就是麻煩
4. 服務器下載
這是上午研究的重點。先用雲服務器遠程桌面下載,然后下載回本地。但是這里的問題是雲服務器出口帶寬非常小,所以下載還是非常慢,有兩個辦法:
-
第一個是將文件下載到另外一台雲服務器AWS(AWS的帶寬大,但是因為內存小所以不好直接安裝GUI和百度網盤客戶端),然后通過SSH下載下來。這個辦法的問題就是AWS流量是有限的,超出15G要收費
這里有幾個細節,就是首先,如果是遠程連接的服務器,那么斷開連接的話shell中的命令會中斷執行。解決這個問題的辦法是nohup或者screen命令
3.1 nohup 命令
如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用 nohup 命令. 該命令可以在你退出帳戶 / 關閉終端之后繼續運行相應的進程. nohup 就是不掛起的意思.
我們現在開始啟動服務 python pyserver.py,並且希望在后台運行. 我們就可以使用 nohup,命令如下:
nohup ./hello &
此時默認地程序運行的輸出信息放到當前文件夾的 nohup.out 文件中去,加不加 & 並不會影響這個命令。只是讓程序前台或者后台運行而已
然后另外一個 ssh 中, 我們用
pidof hello
來查看進程的 pid 信息, 顯示出進程的 pid 為 29738接着我們關掉那個啟動了
hello
的ssh
, 重新用pidof hello
再次查看進程信息, 發現進程仍然存在NOHUP 命令 說明 用途 掛斷地運行命令 語法 nohup Command [Arg …] [ & ] 描述 nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 & ( 表示 “and” 的符號)到命令的尾部 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 文件中。如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。如果沒有文件能創建或打開以用於追加,那么 Command 參數指定的命令不可調用。如果標准錯誤是一個終端,那么把指定的命令寫給標准錯誤的所有輸出作為標准輸出重定向到相同的文件描述符.
退出狀態, 該命令返回下列出口值
退出值 描述 126 可以查找但不能調用 Command 參數指定的命令 127 nohup 命令發生錯誤或不能查找由 Command 參數指定的命令, 否則,nohup 命令的退出狀態是 Command 參數指定命令的退出狀態 3.2 screen 命令
如果想在關閉 ssh 連接后剛才啟動的程序繼續運行怎么辦, 可以使用 nohup.
但是如果要求第二天來的時候. 一開 ssh, 還能查看到昨天運行的程序的狀態,
然后繼續工作,這時 nohup 是不行了, 需要使用 screen 來達到這個目的.
雖然 nohup 很容易使用,但還是比較 “簡陋” 的,對於簡單的命令能夠應付過來,對於復雜的需要人機交互的任務就麻煩了
其實我們可以使用一個更為強大的實用程序 screen。流行的 Linux 發行版通常會自帶 screen 實用程序,如果沒有的話,可以從 GNU screen 的官方網站下載
執行 screen , 按任意鍵進入子界面;
我用./hello 命令開始執行, 如果下班了,但是想關閉 ssh 以后./hello 繼續運行,那么按 ctrl+a 再按 d
這樣暫停了子界面,會顯示 [detached] 的字樣,這時候 我回到了父界面;
用 screen –ls 查看目前子界面的狀態 screen -ls
There is a screen on: 10869.pts-14.kylin (Detached) 1 Socket in /var/run/screens/S-gatieme.
如果回到子界面 用 screen –r 10869.pts-14.kylin,一下子彈到了./hello 的子界面;
打開新的會話窗口:screen
結束當前會話:exit
在新會話中執行程序(程序關閉時會話自動結束):screen vi test.c
打開新會話並起個名字:screen -S myname
暫時離開會話(經常用):Ctrl+a 然后 d
查看會話列表: screen -ls
恢復之前離開的會話:screen -r 會話名或進程號
清除dead狀態的會話:screen -wipe
啟動一個開始就是Detached狀態的會話:screen -dmS 名字 命令這里使用nohup限制還是比較多,所以我推薦還是使用screen命令
另外,我們可以使用iftop命令來查看網絡流量和連接
這里我還要對那個shell命令說一下:
# !/bin/bash alias sendAWS='scp -i <pem> -rC <fromDir>@<ip>:<toDir>'`date +%m%d%l%M`'-transfer'
我們將這個命令寫入~/.bashrc,並取別名sendAWS,就可以直接調用了。
-C表示打包傳輸,到目的位置再解壓
注意shell中的字符串拼接不需要任何運算符,兩個字符串放到一起就可以了
`date +%m%d%l%M`
是使用date命令返回日期相關的內容,這樣我們就可以在每次傳輸時在目標服務器創建一個帶有當前時間的文件夾放傳輸的內容
shell date命令看這里:https://blog.csdn.net/runming918/article/details/7223520
-
第二個辦法是下載后將文件拷貝到QQ郵箱的文件中轉站,這種方式除了總容量只有3G之外沒什么問題,就是怕如果流量特別大的話可能會出問題。
Ok了,大致的方法就是這樣了,我給使用的時候排個序:手機下載>服務器下載+QQ郵箱文件中轉站>虛擬機下載。鑒於AWS流量寶貴,還是不要用AWS了