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