1. 程式人生 > >使用Raspberry Pi搭建迅雷離線下載機

使用Raspberry Pi搭建迅雷離線下載機

come from:http://www.linuxwang.com/html/1470.html

淘寶買的WD 2TB紅盤以及Orico硬碟座到了,立馬搞起作為NAS的第一步:迅雷離線下載機。使用的主要硬體當然是我那落灰已久的Raspberry Pi啦!紅盤和RPi的耗電量都非常小,即使7×24小時不停下載,也不會心疼電費。請叫我下載強迫症患者……

從頭說起,先把硬碟插到硬碟座上,然後usb連上RPi……dmsg裡顯示有mass storage device連上了。ls一下/dev,確認出現了sda。接下來就要給硬碟分割槽:

fdisk /dev/sda

fdisk裡輸入n新建分割槽,然後直接把所有空間作為一個primary分割槽,按w搞定!

接著就是格式化了:

mkfs.ext4 -m 1 /dev/sda1

沒錯,就是要格式化成ext4格式,因為RPi的CPU效能畢竟有限,如果使用ntfs-3g來讀寫NTFS分割槽的話,勢必會帶來很高的CPU佔用率,同時對讀取及寫入速度也有影響。RPi官方論壇裡也有帖子討論這個問題,大家一致認為格式化成ext格式分割槽有助於提高I/O。相信玩RPi的大家對Linux已經很熟悉了,也不會抱著NTFS格式不放吧。格式化成ext4的另外一個好處,是配合aria2裡的一項設定,可以更快地生成預分配檔案。
至於-m引數,是將檔案系統預設的5%的保留空間降到1%。5%這個預設值太古老了,不適應時代發展,2TB的5%都要將近100G了……
如果你格式化的時候忘了加-m引數,也沒問題。隨時可以用下面的命令修改保留空間百分比:

tune2fs -m 1 /dev/sda1

好了,硬碟格式化完成後就要考慮自動掛載了。雖然作為NAS的RPi不會經常重啟,不過還是要把自動掛載功能加上的。
首先新建一個資料夾作為掛載點,本文使用”/home/pi/HDD”。然後修改/etc/fstab:

[email protected] ~ $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1       /home/pi/HDD    ext4    defaults,noatime,nofail 0       0

最下面那行就是新加的。那3個掛載引數就不一一解釋了,自己去Google吧。如果你用的是Archlinux,也許會寫成下面這種形式:

UUID="d54342e7-98da-4992-b322-da7ba7d79866" /home/pi/HDD    ext4    defaults,noatime,nofail 0       0

其中UUID的值是通過blkid這個命令得到的你的外接硬碟的UUID。
編輯好fstab,就可以用root許可權執行mount -a試試看能否正常掛載啦!

一切正常的話,就可以在掛載目錄裡看到ext4分割槽自帶的lost+found目錄了。接下來還有非常重要的一步——設定許可權。此時只有root使用者有掛載硬碟的讀寫許可權,我們需要讓普通使用者也能讀寫硬碟,否則太不方便了。這裡使用了一種簡單粗暴的方法:

chmod 777 /home/pi/HDD

具體路徑根據你的需要修改。記住一定要在成功掛載硬碟後執行一次上述命令

到此,硬碟部分就折騰得差不多了,下面開始軟體部分。這裡使用的系統為Raspbian,Debian的分支。Archlinux下也大同小異。
首先需要在RPi下部署LAMP或者LNMP。如果比較懶,也可以只裝nginx或者apache。(此處省略500字,具體安裝步驟自己Google去吧)
確認nginx/apache正常工作後,安裝這次的主角軟體——aria2。aria2在Linux下有多著名就不多說了,反正一般國內使用者只用迅雷……順便也把git裝上,等會有用:

sudo apt-get install aria2 git

接著新建~/.aria2/aria2.conf檔案(即準備用哪個使用者執行aria2就建在那個使用者的家目錄裡),並且寫入下面引數:

continue=true
daemon=true
dir=/home/pi/HDD/Downloads/
enable-rpc=true
file-allocation=falloc
force-sequential=true
input-file=/home/pi/HDD/aria2/aria2.session
log=/home/pi/HDD/aria2/aria2.log
log-level=notice
max-concurrent-downloads=3
max-connection-per-server=5
parameterized-uri=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-save-upload-metadata=false
save-session=/home/pi/HDD/aria2/aria2.session
save-session-interval=60
split=5

具體含義不一一講解了,可以參考aria2官方文件,說得都很詳細。aria2的選項相當多,這裡只是根據需要修改了其中很小一部分。需要注意的是,上面選項裡的目錄及檔案都必須實際存在,沒有的話就mkdir/touch一下,否則aria2可能會無法啟動。
配置檔案搞定後,可以直接執行/usr/bin/aria2c,aria2會以守護程序模式進入後臺執行。你也可以寫個指令碼,讓aria2開機自動執行。
緊接著就要搞個GUI介面了,cd到nginx或apache的www目錄裡(本人配置的是LAMP,所以是/var/www),執行下面命令:

git clone https://github.com/ziahamza/webui-aria2.git .

這樣就把一個webui-aria2下載到了本地,現在可以在電腦上用瀏覽器訪問http://RPi的IP/webui-aria2/來控制aria2了。
一開始可能會提示無法連線aria2,需要通過介面裡的Settings->Connection Settings來設好RPi的IP地址。埠號保持預設的6800就可以了。另外Settings->Global Settings裡面有很多選項,其實就是和~/.aria2/aria2.conf裡一一對應的,有需要改動的話可以參考畫面上的說明進行修改。
至此,一個下載機就完成了,可以通過網頁上的Add按鈕新增下載連結進行下載。不過對我來說還沒結束,因為我要的是能夠從迅雷離線那裡下東西!

接著就是配置迅雷離線了。首先,你得有個Firefox或者Chrome瀏覽器,並且安裝了Greasemonkey或者Tampermonkey外掛。這裡用chrome+Tampermonkey演示。
ThunderLixianExporter這個網站,點選上面的”ThunderLixianExporter.user.js”連結,或者直接點選這裡,安裝迅雷離線地址解析指令碼。

接著,用chrome登陸你的迅雷離線下載網頁版(什麼?你沒有迅雷VIP會員賬號?那後面就不用看了-_-),點選右上角的小齒輪,在Aria2 JSON-RPC Path部分輸入如下地址:

http://192.168.1.100:6800/jsonrpc

其中192.168.1.100是你的RPi的IP,按需要修改;6800是預設埠號。
試著建立幾個離線任務,待伺服器端下載完成後,勾上那些檔案,然後點選指令欄裡的”批量匯出”按鈕,選擇”YAAW”。

畫面上方會提示你已經向aria2發出了下載指示,可以去之前配置好的webui介面裡確認了。
截一張正在下載中的狀態圖(點選看大圖),各種資料顯示得很直觀:

附帶一個數據:我這裡20M寬頻,RPi未超頻,全速下載(~2.3MB/s)時aria2大概佔用30%-35%的CPU。

教程至此結束,如有疑問,歡迎留言探討!