CosmosVFSを使ってFreeBSDからGoogleDriveをマウントした
CosmosVFSは筆者が開発しているオンラインストレージサービスの抽象化レイヤである。
CosmosVFSを用いることでGoogleDriveやOneDriveといったオンラインストレージサービスをFTPや9P2000で操作することが出来る。
本稿では、FreeBSDからCosmosVFSのFTPエンドポイントを経由して、GoogleDriveをマウントした結果について解説する。
本稿が想定するFreeBSDのバージョンは12.0である。
CosmosVFSの設定
CosmosVFSのサイトやマニュアルを参考にGoogleDriveのマウントとFTPエンドポイントの作成を行う。
なお、今回は/mnt/google-driveにGoogleDriveをマウントした前提で解説を進める。
curlftpfs(fusefs-curlftpfs)のインストール
# pkg install fusefs-curlftpfs
fuseの有効化
/etc/rc.confを編集して以下の行を追加する。
fusefs_enable="YES"
/boot/loader.confを編集して以下の行を追加する。
fuse_load="YES"
CosmosVFSのFTPエンドポイントをマウント
# mkdir /mnt/ftp # curlftpfs www.cosmos-vfs.com:10021 /mnt/ftp -o user=USERNAME:PASSWORD,custom_list="LIST"
※ custom_list=”LIST”オプションは、curlftpfsがデフォルトではFTP標準ではない”LIST -a”コマンドを送出するため、-aを抑制するために指定する。
[疎通確認]
google-driveディレクトリが表示されている。
# ls /mnt/ftp/mnt 9p2000 asteroid google-drive amazon-s3 ftp one-drive
GoogleDriveを操作する
FTP経由でFreeBSDのファイルシステムとしてGoogleDriveをマウントできているため、以下のような操作が可能である。
[ファイル一覧の取得]
GoogleDriveのディレクトリに移動して、lsコマンドを実行する。
# cd /mnt/ftp/mnt/google-drive # ls hoge.txt share test-dir workspace www
[ファイルの作成]
※2020/05/04現在失敗する。FTPのCREATEコマンドをCosmos側が未実装のため。
# touch hoge2.txt touch: hoge2.txt: Operation not supported
curlftpfsのログ
LOOKUP /mnt/google-drive/hoge2.txt getattr /mnt/google-drive/hoge2.txt ftpfs: operation ftpfs_getattr failed because No such file or directory unique: 87, error: -2 (No such file or directory), outsize: 16 unique: 88, opcode: LOOKUP (1), nodeid: 3, insize: 50, pid: 2070 LOOKUP /mnt/google-drive/hoge2.txt getattr /mnt/google-drive/hoge2.txt unique: 88, error: -2 (No such file or directory), outsize: 16 unique: 89, opcode: CREATE (35), nodeid: 3, insize: 66, pid: 2070 create flags: 0x202 /mnt/google-drive/hoge2.txt 0100644 umask=0022 ftpfs: operation ftpfs_open failed because Operation not supported unique: 89, error: -45 (Operation not supported), outsize: 16
[ファイルの読み書き]
既にGoogleDrive上に存在するファイルに対しては書き込みと読み込みが出来る。
# echo "hello world" > hoge.txt # cat hoge.txt hello world
[ファイルの削除]
ファイルの削除は問題なく動作する
# rm hoge.txt
ディレクトリの削除も問題なく動作する
# ls -la (省略) drwxrwxr-x 1 root wheel 0 May 4 00:00 hoge # rm -fr hoge
まとめ
CosmosVFSとcurlftpfsを組み合わせることで、新規ファイルの作成に難があるもののFreeBSDからGoogleDriveを操作できることを確認した。
Linuxではgoogle-drive-ocamlfuseを用いることで同様の操作ができるが、FreeBSDではそのようなアプリケーションが存在しないため、CosmosVFSを経由してGoogleDriveを操作することには有用性があるだろう。
また、動作確認はしていないが、CosmosVFSはOneDriveやAmazonS3といったストレージにも対応しているため、これらのオンラインストレージをFreeBSDにマウントして操作できると思われる。
今後の展開として、CosmosVFSにFTPのCREATEコマンドを実装することで、ファイルの新規作成に対応することを検討している。
その他
※作業中に以下のエラーが出たらpkg-confをインストールする
checking for GLIB... configure: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config.
[pkg-configのインストール方法]
# pkg install pkgconf