テキストベースのコマンドで、バッチ処理による自動化も可能
主要なクラウド・ストレージといえばGoogle DriveやOneDrive、iCoud Drive、Dropboxなど、良く知られたサービスがいくつもあります。
今やスマートフォンなどでは特に意識することも無く、外部ストレージやバックアップ・デバイスとして使われいるのではないでしょうか?
一方LinuxではブラウザやGUIアプリの利用環境を持たない、ターミナルからテキストベースのインターフェースのみで運用しているケースがかなり多いはずです。
その場合クラウドストレージのセットアップとその活用方法に関しては情報も少なく、またひと手間かかることから面倒に感じて、積極的に活用されていないこともあると思います。
しかしテキストベースの強みとして、シェルスクリプトで実行することにより、一連のバッチ処理に組み込むことによる省力化も期待できます。
そこで今回はLinuxターミナルでのクラウドストレージの活用を提案するべく、無料で20GBまで利用できるサービスであるMEGAを実例として、実際にセットアップを行ってみたいと思います。
Linux対応パッケージの入手
公式の配布ページにアクセスするとテキストベースのコマンドMEGA CMDの各ディストリビューションに対応したパッケージが多数用意されています。
ここからダウンロードして、ご自身の利用しているディストリビューションで用意されているパッケージマネージャでインストールすれば話は早いと思います。
ここからは誰でも気軽に試せるように、Googleの無料サービスGoogle Cloud Shellをターゲットにしてセットアップを実演したいと思います。
なおMEGAとGoogleアカウントのサインアップは済んでいるものとさせていただきます。
Cloud ShellではDebian用のパッケージが利用可能です。
ターミナル画面でセットアップを完結
Cloud Shellはコンテナ型仮想環境のため、パッケージマネージャでインストールすると永続化出来ないため、ユーザーのホームディレクトリ配下にインストールします。
MEGA CMDの依存関係を解決するために、いくつか必要なパッケージが有りますが、ほとんどはすでにシステムにインストールされています。
apt list | grep -E '^(libc6|libgcc-s1|libpcrecpp0v5|libssl1.1|libstdc++6|zlib1g|apt-transport-https|gpg|libc-ares2)/'
実際に追加インストールしなければならないパッケージは、この中ではlibc-ares2
のみです。
まず準備としてダウンロード用のディレクトリをホームディレクトリ直下にpkgs
という名前で作成して、カレントディレクトリとします。
mkdir -v ~/pkgs; cd ~/pkgs
次にlibc-ares2
とMEGA CMDのパッケージをそれぞれapt-get
とwget
コマンドでダウンロードします。
パッケージのバージョンは2022年4月時点のものです。
apt download libc-ares2
wget https://mega.nz/linux/repo/Debian_11/amd64/megacmd_1.5.0-10.1_amd64.deb
準備が出来たところで、dpkg
コマンドでインストールを実行します。
アンインストールの際にはディレクトリ一括削除で出来るように、今回はホームディレクトリ直下に専用のディレクトリをmega
という名前で作成してインストールします。
dpkg --install --force-all --root=${HOME}/mega --recursive ${HOME}/pkgs
dpkg
はパッケージの依存関係を総合的に解析してチェックすることが出来ないため、依存関係に関するエラーが出力されますが、前述した通り実際には必要なパッケージはすでに揃っているので問題はありません。
エラーを抑制できれば良いのですが、方法は分かりませんでした。
また下記のコマンドで必要なパッケージがインストールされていることを確認できます。
dpkg --list --no-pager --root=${HOME}/mega
後は環境変数を設定すれば、プレフィックスのmega-
から始まる様々なコマンドが利用できるようになります。
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HOME}/mega/usr/lib/x86_64-linux-gnu:${HOME}/mega/opt/megacmd/lib
PATH=${PATH}:${HOME}/mega/usr/bin
よく使用するのであれば、.bash_login
などで自動実行するとよいでしょう。
基本的な使用方法の抜粋
主なコマンドを抜粋して下記に表示します。
コマンド名 | 機能 |
---|---|
mega-login | MEGAのクラウドストレージにログイン |
mega-ls | クラウドのファイル・ディレクトリの一覧表示 |
mega-get | クラウドからローカルへのダウンロード |
mega-put | ローカルからクラウドへのアップロード |
mega-cp | クラウド内でのファイル・ディレクトリのコピー |
mega-mv | クラウド内でのファイル・ディレクトリの移動・名前変更 |
mega-rm | クラウド内でのファイル・ディレクトリの削除 |
mega-mkdir | クラウド内でのディレクトリの作成 |
mega-cmd | 対話モードへの移行 |
下記のコマンドを実行しておけば、Bashにて上記のコマンドを入力する際にオプションやクラウドのファイル・ディレクトリの補完機能が働くようになります。
source ~/mega/etc/bash_completion.d/megacmd_completion.sh
余談ですがワンライナーだとログインする際パスワードが表示され、入力履歴にも残りますので、セキュリティ上少々懸念が有ります。
対話モードではmega-
プレフィックス無しでコマンドを実行できます。
対話モードではlogin
の際には対話的にパスワードを入力できるのでセキュリティ上は安心だと思います。
ただし、対話モードではリダイレクトやパイプを使って、標準出力を再利用することは出来ないようです。また終了すると入力履歴はクリアされ、永続化されません。
まとめ
この機会にターミナル環境でも、クラウドを活用してデータのバックアップや共有、ローカルのストレージの容量の確保のために活用されてはいかがでしょう。