1. 程式人生 > >用樹莓派搭建家庭NAS下載機

用樹莓派搭建家庭NAS下載機

開始

去年雙十一的時候入了樹莓派,抱著試一試的心情,我買了一堆配件準備玩,結果買回來玩了兩天就扔在那裡沒動了。

逼乎上有長者曾經說過:“先想好想要做什麼,再去買東西做。買完東西,問做什麼好的,通常都是[嗶——]。”我認為,這是墜好的。

正好前兩天逛鹹魚,發現了一個同城的二手SATA 160G硬碟,成色還不錯,猶豫再三,剁了手,又去淘寶買了一個硬碟盒

掛載磁碟

經過了艱苦的等待,硬碟盒終於到了,連線電腦測試,速度飛起,100M/s的寫入速度讓我終於感覺到USB3.0的效能,淚流滿面,這大概是我用過最快的USB裝置了。

但是看看樹莓派的USB2.0口和百兆的網口,似乎有點浪費了,不過為了世界和平,就這樣吧……

關於磁碟的掛載,是Linux的基本功。一頓猛查資料後,先找到硬碟在/dev/中的地址,我的sata硬碟是/dev/sda1/,在mnt目錄下新建一個目錄當作掛載點,安卓爪機裡常見的那啥sdcard1之類的目錄就是掛載點了,其實放啥地方起啥名都行,只要能找得到的話……

#新建一個目錄

sudo mkdir /mnt/usbdisk

硬碟是NTFS格式的,其實本來想格式化成linux用的ext4,但是尋思尋思,玩意我哪天閒的沒事需要高速儲存資料又把硬碟拔下來插電腦呢?於是就需要ntfs-3g這個軟體來讓樹莓派可以讀取NTFS格式。

#安裝所需軟體包

sudo apt-get install fuse-utils ntfs-3g

#載入核心模組

modprobe fuse

#編輯fstab讓行動硬碟開機自動掛載

sudo nano /etc/fstab

#在最後一行新增如下內容

/dev/sda1 /mnt/usbdisk ntfs-3g defaults,noexec,umask=0000 0 0

#儲存重啟,即可生效

於是現在就可以通過/mnt/usbdisk訪問硬碟了,高中時候買的那兩本厚厚的(盜版)鳥哥linux私房菜沒白買啊,花了幾周自習看完了,雖然記不住具體是啥,但是還記得系統都能幹啥,還是挺有意義的。

samba

接下來要讓區域網內可以訪問,鳥哥的linux私房菜中重點介紹的samba讓我記得挺清楚,這玩意弄吼了,網內裝置都可以訪問,Exited!

#搞一個桑巴出來

sudo apt-get install samba samba-common-bin

#複製一下配置檔案留個備份

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

#編輯配置檔案

sudo nano /etc/samba/smb.conf

編輯配置檔案的時候,先在上面去掉security = user前面的註釋,來使用使用者進行驗證,禁止匿名登入,雖然是內網但是肯定是要使用者驗證的嘛。

在檔案的最後按照上面的格式寫下自己的配置,配置項都很簡單易懂,不知道比那些一堆一堆英文的文件高到哪裡去了!(大拇指

[name]

comment = Test share

Path = /mnt/usbdisk

valid users = @nekotora

force group = users

create mask = 0660

directory mask = 0771

read only = no

配置好以後重啟一下samba服務

service samba restart   or    sudo service smbd restart

然後新增一下上面配置的使用者

useradd nekotora -m -G users

給新使用者設定密碼

passwd nekotora

讓samba認識一下這個使用者,並且配置他的samba訪問使用者名稱密碼

smbpasswd -a nekotora

完成!

在windows或者安卓裝置上就能找到樹莓派了,贊贊贊。

實測內網速度還是很令人滿意的,讀取速度能跑滿辣雞樹莓派和他連著交換機的百兆頻寬。總感覺用樹莓派有點浪費了速度OAQ

Aria2

不能下載東西的硬碟和鹹魚有什麼區別!

Aria2是一個命令列下載工具,其他平臺能下啥他都能下,甚至有一些小工具還能讓他支援百度網盤和迅雷離線。

安裝aria2

sudo apt-get install aria2  

aria2執行的時候需要兩個檔案,並且需要我們手動配置,一個是配置檔案aria2.conf,儲存配置,另一個是aria2.session,要不每次aria2關閉的時候,之前下載的進度都沒了。為了顯得我的目錄很整齊,我把他放到/home/pi/aria2/目錄下面

cd /home/pi

mkdir aria2

cd aria2 

#摸一個空白的aria2s session檔案出來  

touch aria2.session  

#編輯一下配置檔案

nano aria2.conf  

內容如下

#檔案儲存目錄 

dir=/mnt/usbdisk/download

#因為垃圾運營商還沒有ipv6,獲取了也沒有,關掉

disable-ipv6=true  

#開啟rpc給等會的web管理介面用

enable-rpc=true  

rpc-allow-origin-all=true  

rpc-listen-all=true  

#rpc-listen-port=6800  

#允許斷點續傳

continue=true  

#進度儲存檔案

input-file=/home/pi/aria2/aria2.session  

save-session=/home/pi/aria2/aria2.session  

#最大同時下載任務數

max-concurrent-downloads=3  

儲存退出

用配置檔案啟動一下測試

sudo aria2c --conf-path=/etc/aria2/aria2.conf  

服務很愉快的跑起來了沒有報錯,用Ctrl+C停下來,繼續配置

順便給aria2c做成服務吧,用起來會方便的多

新建一個aria2c的服務

sudo nano /etc/init.d/aria2c

存入一下內容

(反正也看不懂,大概就是系統服務的一種配置格式嗯……)

記得把使用者名稱和位置改成自己的

#!/bin/sh

### BEGIN INIT INFO

# Provides:          aria2

# Required-Start:    $remote_fs $network

# Required-Stop:     $remote_fs $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Aria2 Downloader

### END INIT INFO

case "$1" in

start)

echo -n "Starting aria2c"

sudo -u pi aria2c --conf-path=/home/pi/.aria2/aria2.conf -D

#把上面的兩個pi換成你的使用者名稱

;;

stop)

echo -n "Shutting down aria2c "

killall aria2c

;;

restart)

killall aria2c

sudo -u pi aria2c --conf-path=/home/pi/.aria2/aria2.conf -D

#把上面的兩個pi換成你的使用者名稱

;;

esac

exit

儲存退出,再給個許可權

sudo chmod 755 /etc/init.d/aria2c

來測試一下Are you ok?

sudo service aria2c start

顯示Starting aria2c,ok,ok

讓他開機自己啟動

sudo update-rc.d aria2c defaults

aria2c還沒有管理頁面,我們可以找個好看的web頁面進行管理

Github上有不少這樣的介面,我用的是webui-aria2,看起來比較高檔

想要能訪問web介面的話還需要安個Apache,這個就輕車熟路多了。

sudo apt-get apache2

裝好之後設定好apache2的許可權:

sudo visudo

底部新增這行

www-data ALL=(ALL) NOPASSWD: ALL

Ctrl + O儲存,Ctrl + X退出

然後從git下載web介面

cd /var/www

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

現在,開啟樹莓派的地址就能訪問到,點選設定,伺服器設定,填上地址和埠號,提示Successfully就成功了!

新增任務就能開始下載了。

迅雷

然後我就開始下東西,老司機開的車就很好嘛。9FE23BE78F054024F05B59522B75AA6423720E5A

結果發現根本沒速度啊臥槽,於是等了一個下午,才下了幾Kb,我當時就不樂意了。這什麼辣雞!

我用迅雷試著下了一下,這車沒問題啊。

於是求助,老司機凌妹看了看說:“傳統bt不行的”……

哦,原來如此,(英文怎麼說來著),so_da_na!

不行,還是搞套迅雷離線下載吧。

先去迅雷那裡下下來編譯好的迅雷下載程式。

因為不是開源的,迅雷對各種平臺都提供了編譯好的版本,樹莓派用到的是armel_v5te_glibc。

參考迅雷官方的配置說明

下載好之後通過sftp把檔案推倒樹莓派上,為了檔案的整齊,我放倒了/home/pi/xunlei下面。

啟動一下試試看?

/home/pi/xunlei/portal

但是這樣管理不方便,而且想讓他開機啟動,還要把他做成一個服務,加到啟動項裡。

建立服務

sudo nano /etc/init.d/xunlei

和剛才的aria一樣配置一個服務

#!/bin/sh

#

# Xunlei initscript

#

### BEGIN INIT INFO

# Provides:          xunlei

# Required-Start:    $network $local_fs $remote_fs

# Required-Stop::    $network $local_fs $remote_fs

# Should-Start:      $all

# Should-Stop:       $all

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start xunlei at boot time

# Description:       A downloader

### END INIT INFO

do_start()

{

        ./home/pi/xunlei/portal

}

do_stop()

{

        ./home/pi/xunlei/portal -s

}

case "$1" in

  start)

    do_start

    ;;

  stop)

    do_stop

    ;;

esac

最後設定一下開機啟動

sudo update-rc.d xunlei defaults

完成,現在可以再迅雷裡面看到樹莓派並且方便的下載了。在外網也可以控制。

hdparm

最後,還有一個問題沒解決。

那塊硬碟,有沒有事幹的時候都在不停的工作。因為是舊硬碟,在磁碟引數裡已經看到兩個報警了,連續工作時間也達到了500days+

這麼高壽的硬碟24小時工作總感覺有點對不起它。

這就需要一個硬碟自動休眠的東西。

安裝haparm

sudo apt-get hdparm

設定硬碟自動休眠

#立刻讓硬碟休眠,先試試看好不好用

sudo hdparm -Y /dev/sda1

#設定硬碟自動休眠,數值/12 = 分鐘,設定為120就是無操作10分鐘後休眠

sudo hdparm -S 120 /dev/sda1

這樣硬碟沒事的時候就能睡覺了。

當然,還要加到啟動項裡好讓硬碟自動休眠

編輯rc.local

sudo nano /etc/rc.local

在exit 0之前插入休眠硬碟的命令就ok

總結

於是,這樣就折騰好了,在路由器設定中讓樹莓派暴露給外網,在其他地方也能控制他下載東西了。

因為樹莓派和交換機都是百兆網口,能滿速已經不錯了,還是浪費了好多效能,還不如買個小米路由器還送個1t硬碟,但是過程還是挺有趣的,特別是看到桌子上的一堆裝置開始閃著led執行的時候簡直炒雞帥(๑•ั็ω•็ั๑)

最近一直在填坑,偷偷摸魚玩了這些不知道會不會被打。

說起來咱幹活真是不專注,本來想著寫完趕緊繼續填坑,結果想引用幾句位元客棧一篇文章的話,就跑去那裡一邊翻一邊讀以前的文章,結果一看就是兩個小時,最後還是沒找到……又浪費了一個下午OAQ

還有多少時間可以發呆呢?