ディスク容量不足のトラブルをGoogle Driveで解決する方法【Rclone】

ディスク容量不足のトラブルをGoogle Driveで解決する方法【Rclone】 サーバー

ヤバイ!!
サーバー(Linux)がぶっ壊れた!!
でも、サーバー上にはほとんどディスク容量がない!!

こんな状況において、皆さんならどうしますか?
デーバー上のデータは、それなりに重要です。

でも、開発環境であるため、すべてバックアップしているわけではありません。
何より、空きのディスク容量がないので圧縮できません。
また、他のサーバーもディスクの空き容量に余裕はありません。

さて、どうしましょう・・・

「そうだ!!Google Driveだ!!」
ということで、この切羽詰った状況をGoogle Driveを利用して打開します。

  • Google Driveを使った打開策
  • rcloneのインストール
  • rcloneの設定
  • サーバーとGoogle Driveの接続確認
  • 大量データの移行(サーバーからGoogle Driveへ)

上記に沿って、説明を行っていきます。

Google Driveを使った打開策

Google Driveは、無料で15GBまで利用できます。
容量を増やしたければ、課金ということになります。

私は、100GBまで利用できるように課金しています。
月250円を払うことにより、100GBまで自由に使うことができます。

そして、このGoogle DriveではAPIが公開されています。
APIがあるということは、プログラム・システムとの連携が可能ということです。

よって、以前よりrcloneというソフトウェアを利用してGoogle Driveを利用していました。
rcloneを用いてGoogle Driveを安全なバックアップ先として利用していたということです。
そのための手順を次の記事で解説しています。

バックアップ先として使えるなら、データの一時的な保存先としても使えるはずです。
今回は、Google Driveを一時的なデータの保存先(避難先)として利用します。

そうすれば、今回の切羽詰まった状況を打開できます。
では、まずは上記の参考記事に沿ってrcloneのインストールからです。
(開発サーバーでは未設定だった)

rcloneのインストール

インストール

次のコマンドでインストールします。

# apt-get  install rclone
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  rclone
0 upgraded, 1 newly installed, 0 to remove and 79 not upgraded.
Need to get 2,743 kB of archives.
After this operation, 10.9 MB of additional disk space will be used.
Get:1 http://ftp.jp.debian.org/debian stretch/main amd64 rclone amd64 1.35-1+b3 [2,743 kB]
Fetched 2,743 kB in 0s (3,470 kB/s)
Selecting previously unselected package rclone.
(Reading database ... 76077 files and directories currently installed.)
Preparing to unpack .../rclone_1.35-1+b3_amd64.deb ...
Unpacking rclone (1.35-1+b3) ...
Setting up rclone (1.35-1+b3) ...
Processing triggers for man-db (2.7.6.1-2) ...

aptitudeではなく、apt-getでインストール。
なぜかaptitudeが利用できなくなってしまいました。

おそらく、サーバーが壊れたことの影響だと思います。
もう捨て去るサーバーなので、原因は追究しません。
その価値もないでしょう。

インストールの確認

# rclone version
2020/10/09 12:01:48 Config file "/root/.rclone.conf" not found - using defaults
rclone v1.35-DEV

無事にインストールできています。

rcloneの設定

ここで行う設定の目的を説明します。
サーバーとGoogle Driveを接続することが目的です。

接続ができれば、サーバーとGoogle Driveとの間で直接ファイルのやり取りが可能となります。
そのためには、双方を連携させるための認証作業が必要となります。

作業的には、大きく以下の3つに分けることができます。

  • サーバー上での設定(Google Driveへ接続するためのURL作成)
  • ブラウザでのGoogle Driveへの接続
  • サーバー上での設定(Google Driveが発行した認証コードの受け入れ)

それぞれの作業を説明していきます。

サーバーでの設定(Google Driveへ接続するためのURL作成)

# rclone config
2020/10/09 12:09:51 Config file "/root/.rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

新しくリモート設定を登録するため、「n」を選択します。
「n」を入力して、Enter。

name> google-moving

引越し作業のため、「google-moving」という名称でリモート設定を登録。
「google-moving」と入力して、Enter。

Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
   \ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
3 / Backblaze B2
   \ "b2"
4 / Dropbox
   \ "dropbox"
5 / Encrypt/Decrypt a remote
   \ "crypt"
6 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
7 / Google Drive
   \ "drive"
8 / Hubic
   \ "hubic"
9 / Local Disk
   \ "local"
10 / Microsoft OneDrive
   \ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
12 / Yandex Disk
   \ "yandex"

ストレージのタイプの選択を行います。
Google Driveを利用するため、「7」を入力してEnter。

Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>

入力は不要です。
Enterを2回押します。

Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n

今回、サーバー上で作業をしています。
リモート「remote」ということになります。

もっと正確には、ターミナルソフト(Poderosa)により作業をしています。
そのため、「n」を入力してEnter。
「y」の場合なら、そのままブラウザが自動的に立ち上がるようです。

If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?client_id=aaaaaaaaaaaaaa.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=aaaaaaaaaaaaaa
Log in and authorize rclone for access

上記のようなURL(aaaaaaaaaaaaaaはランダムな文字列です)が表示されます。
このURLをコピーして、ローカルPCのブラウザでアクセスします。

ブラウザでのGoogle Driveへの接続

ここは、参考記事をご覧ください。
特に補足することもありません。

「認証コード」が表示されたら、コピーしてください。
また、サーバーでの作業に戻ります。

サーバー上での設定(Google Driveが発行した認証コードの受け入れ)

「認証コード」は、以下の「ランダムな文字列」のことです。

Enter verification code> ランダムな文字列

認証コードを入力して、Enter。

--------------------
[google-moving]
client_id =
client_secret =
token = {"access_token":"●●●","token_type":"Bearer","refresh_token":"●●●","expiry":"2020-10-09T13:38:38.597970662+09:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d>

設定の最終確認です。
そのままでOKです。
「y」を入力してEnter。

Current remotes:

Name                 Type
====                 ====
google-moving        drive

e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q

登録したリモート設定「google-moving」を確認できますね。
では、もうrcloneを終了させましょう。
「q」を入力して、Enter。

サーバーとGoogle Driveの接続確認

次のコマンドにより、Google Driveへの接続を確認できます。

rclone lsd リモート設定の名称:/

接続ができていれば、マイドライブ以下のフォルダ一覧が表示されます。
「google-moving」でリモート設定を登録しています。
よって、次のコマンドとなります。

# rclone lsd google-moving:/
          -1 2020-10-09 02:55:27        -1 moving

事前にGoogle Drive上で引越し用のフォルダ「moving」を作成済みです。
そのフォルダが表示されています。

このことにより、Google Driveへの接続が成功していると言えます。

大量データの移行(サーバーからGoogle Driveへ)

通常なら、以下のように圧縮ファイルを指定してコピーします。

# rclone copy /tmp/test.tar.gz google-moving:/moving/

しかし、今回はそれができません。
サーバー自体のディスクに余裕がありません。

そのため、圧縮ファイル自体の作成ができないのです。
よって、今回は圧縮せずにそのままGoogle Driveへコピーします。

フォルダ以下すべてをコピーする場合は、以下のコマンドとなります。

# rclone copy /usr/local/htdocs google-moving:/moving/

この場合であれば、/usr/local/htdocs以下のファイルすべてとなります。
コマンドの意味は、「copy コピー元 コピー先」です。

とりあえず、今回の対応でなんとか窮地を脱することができました。
本来は、普段からバックアップをしておくことが理想ですね。

タイトルとURLをコピーしました