Monday, May 15, 2017

利用google drive架設FTP Server

我想這年代應該也沒什麼人在玩FTP了吧。
但老實說FTP算是架構很完善的檔案上傳下載protocol。
而且FTP的Client功能也都很完整,resume, retry, queue等等功能都很好用。
FTP Server的部份,配合一些script,利用sfv, zip, unzip, rar, unrar,上傳檔案的功能,也可以有即時verify的機制。
早期在玩0day topsite時,配合irc channel,再寫一些script,就可以達成auto transfer。
一有新東西上傳到FTP Server,馬上就可以配合script,把你想要的東西下載回家,或是FXP到別人的FTP site。
這個年代web當道,想要分享檔案幾乎都是利用免空來分享。
0day topsite應該還是在用IRC+FTP。
但因為要加入0day group的標準太高,要經營一個0day group,更是相當艱辛。
而且一旦退出了0day group,想要再回鍋也幾乎不可能。
再加上台灣慢的要命的寬頻,架個FTP site,要一堆HDD,要開著一台Server。
電費不便宜,HDD也不便宜,而且24小時在操,又壞很快。
所以已經有超過十多年沒在用FTP了。

最近,發現了Google App for Education可以提供免費的無限空間可以使用。
於是就想說,是否可以把Google Drive當成FTP的HDD來使用。
只要能把Google Drive mount到Linux上的話,架個FTP site應該沒什麼問題。
Google了一下,還真的可以把Google Drive mount到Linux上。
馬上就開了一台Ubuntu的VM,把Google Drive mount上去。
步驟如下:

  1. Apply google OAuth
  2. Enable google drive API
  3. Install google-drive-ocamlfuse
  4. 修改/etc/fuse.conf
    1. user_allow_other #拿掉
  5. 執行
    1. >google-drive-ocamlfuse -headless -id OAuth_ID -secret OAuth_Secret
    2. >google-drive-ocamlfuse -o allow_other /mount_point
  6. 安裝與設定FTP Server (個人喜歡用glftpd來架site)

因為Google Drive是利用web API的方式來溝通,所以檔案在下載時,會透過API先下載到cache的目錄下,再傳回給FTP client。
如果單個檔案很大時,像是單檔10G的1080p mkv檔案,initial time會超級高,要等超級久,FTP client才會開始下載。
因為是先下載一份到cache,再傳回到FTP client。所以流量要算2倍。下載一個10G的MKV,要用掉20G的流量。

如果考慮到頻寬不足,FTP site不想放在家,想要省電費,可以利用VPS來架設FTP site。
現在大部份的VPS,包月的話,其實都有流量限制。
但是日本的VPS,幾乎都沒有流量限制。但會有高流量的懲罰機制,一段時間內用超過某流量,某段時間內頻寬會變很小等等。
日本網友們測試之後有一家的VPS,沒有這種機制。
http://vps.sakura.ad.jp/
不過這家的VPS,需要日本信用卡才能付款。(PS:台灣發行的JCB信用卡可以付款。)

所以只要申請個VPS,(最便宜有看過每個月540日幣的VPS)
然後把Google Drive mount上去,再架個FTP server。
一個無限容量的FTP site就完成了。