ヤバイ!!
サーバー(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 コピー元 コピー先」です。
とりあえず、今回の対応でなんとか窮地を脱することができました。
本来は、普段からバックアップをしておくことが理想ですね。