1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linuxターミナルから無料クラウド・ストレージを利用する

Last updated at Posted at 2022-04-22

テキストベースのコマンドで、バッチ処理による自動化も可能

主要なクラウド・ストレージといえばGoogle DriveOneDriveiCoud DriveDropboxなど、良く知られたサービスがいくつもあります。
今やスマートフォンなどでは特に意識することも無く、外部ストレージやバックアップ・デバイスとして使われいるのではないでしょうか?

一方LinuxではブラウザやGUIアプリの利用環境を持たない、ターミナルからテキストベースのインターフェースのみで運用しているケースがかなり多いはずです。
その場合クラウドストレージのセットアップとその活用方法に関しては情報も少なく、またひと手間かかることから面倒に感じて、積極的に活用されていないこともあると思います。

しかしテキストベースの強みとして、シェルスクリプトで実行することにより、一連のバッチ処理に組み込むことによる省力化も期待できます。
そこで今回はLinuxターミナルでのクラウドストレージの活用を提案するべく、無料で20GBまで利用できるサービスであるMEGAを実例として、実際にセットアップを行ってみたいと思います。

image.png

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)/'

image.png

実際に追加インストールしなければならないパッケージは、この中ではlibc-ares2のみです。
まず準備としてダウンロード用のディレクトリをホームディレクトリ直下にpkgsという名前で作成して、カレントディレクトリとします。

mkdir -v ~/pkgs; cd ~/pkgs

次にlibc-ares2MEGA CMDのパッケージをそれぞれapt-getwgetコマンドでダウンロードします。
パッケージのバージョンは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

image.png

dpkgはパッケージの依存関係を総合的に解析してチェックすることが出来ないため、依存関係に関するエラーが出力されますが、前述した通り実際には必要なパッケージはすでに揃っているので問題はありません。
エラーを抑制できれば良いのですが、方法は分かりませんでした。
また下記のコマンドで必要なパッケージがインストールされていることを確認できます。

dpkg --list --no-pager --root=${HOME}/mega

image.png

後は環境変数を設定すれば、プレフィックスの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

image.png
これもよく使う場合は自動実行に追加しておくとよいでしょう。

余談ですがワンライナーだとログインする際パスワードが表示され、入力履歴にも残りますので、セキュリティ上少々懸念が有ります。
image.png

対話モードではmega-プレフィックス無しでコマンドを実行できます。

image.png

対話モードではloginの際には対話的にパスワードを入力できるのでセキュリティ上は安心だと思います。

ただし、対話モードではリダイレクトやパイプを使って、標準出力を再利用することは出来ないようです。また終了すると入力履歴はクリアされ、永続化されません。

まとめ

この機会にターミナル環境でも、クラウドを活用してデータのバックアップや共有、ローカルのストレージの容量の確保のために活用されてはいかがでしょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?