搜尋此網誌

2025年10月7日 星期二

Ubuntu samba 分享 ramdisk

緣起:


    我的筆電間要傳輸資料時,很常把 Raspberry Pi 的 samba 當成中繼站,電腦 A 傳到 pi 的 samba,然後電腦 B 再從 pi samba 上抓下來。後來想了想,為了傳那些暫時性的資料而消耗 USB 硬碟的壽命,好像超不值的,不是有 ramdisk 那種把 Ram 當成硬碟使用的功能嗎?再搭配 samba 允許匿名的連線,就不用登入 (好像有點不安全就是了),直接用 ram 來高速傳輸檔案,感覺很不錯,所以就在 N100 上裝了 samba,也設置了 ramdisk,換把 N100 當中繼站用。


Samba:


    sudo apt install samba,然後編輯 /etc/samba/smb.conf,要允許匿名存取的話,記得檢查有沒有 usershare allow guests = yes 跟 map to guest = Bad User。然後加入下面的設定,儲存後用 sudo systemctl restart smbd 來重啟 samba

[Ramdisk]
   path=/mnt/Ramdisk
   writable = yes
   guest ok = yes
   read only = no
   browseable = yes
   create mask = 0777
   directory mask = 0777

    話說,我一開始在測試時,那路徑是在 /home/birdshiu/  下,用其它電腦的 files 工具試著連進去時,就看到鼠標瘋狂轉圈圈,一直無法連進去,後來去查,哦,好像是跟 Ubuntu 還 Samba 的資安有關,不開放分享存取 home 下的資料夾還什麼的,好吧,換個地方,就選 /mnt,新增個 Ramdisk 資料夾,然後權限直接給它 777,就 ok 了。


Ramdisk 開機自動掛載:


    在 Linux 下要掛載 ramdisk,像我想掛載 8G 的 Ramdisk 到  /mnt/Ramdisk,可以下指令

sudo mount -t tmpfs -o size=8G tmpfs /mnt/ramdisk

    然後用 df -h 查看

有了

    可以試著往 /mnt/Ramdisk 丢大型資料看看,它速度超快。這個掛載的設定重開機就沒了,所以要去修改 /etc/fstab,讓它開機時能自動掛載 Ramdisk。

mpfs   /mnt/Ramdisk    tmpfs   rw,nodev,nosuid,size=8g 0 0

    話說,每次改那個 fstab 都好怕,很常改好,儲存後重開機,結果多個空白讓格式不對,電腦就開不了機,我就要用 USB Ubuntu live 進去救。這次有學到,改好檔案,存檔後可以下 sudo mount -a,如果 fstab 格式不對的話它會報錯。


python uploadserver:


    在電腦上存取 samba 服務很方便,很多圖型化介面的檔案管理程式都有提供讓你在路徑列輸入 smb://{ip} 來存取 samba 的功能 (windows 是 \\{ip}),但在 android 手機上就很麻煩,至少我自己使用下來是如此,那些有 samba 功能的 app 都好難用,要填一堆有的沒的,重點是我填完後還連不上。

    所以我後來就想到能架個簡單的網頁介面檔案管理服務,只要能瀏覽、上傳、下載就行,發現有 python 的工具能使用,叫 uploadserver,可以直接 pip 安裝,它基於 http-server 去改的,多了上傳檔案的功能。

    我的 Ubuntu 預設沒 pip,所以要先安裝,然後再 pip 安裝 uploadserver 套件 (就不管那個 externally-managed-environment 的警告了,煩死)

sudo apt install python3-pip
python3 -m pip install --break-system-packages --user uploadserver

    要讓 server 跑起來,用指令

python3 -m uploadserver -d /mnt/Ramdisk

    用 -d 指定 server 的根目錄,然後再開瀏覽器輸入 127.0.0.1:8000 確認


    成功,現在可以在手機上透過瀏覧器來直接存取 /mnt/Ramdisk 了。


沒有留言:

張貼留言