📤

RcloneでUbuntuのマイクラデータをGoogleDriveに自動バックアップ

2 min read

前提として、GCPでプロジェクトを用意する必要があります。

GCP ConsoleでAPIキー取得

https://console.cloud.google.com/marketplace/product/google/drive.googleapis.com

こちらのURLから、Google Drive APIを有効化できます。

「OAuth 2.0 クライアント ID」を作成します。アプリの種類は「デスクトップ」を選んでください。

rcloneのインストール

curl https://rclone.org/install.sh | sudo bash

GoogleDriveのセットアップ

$ rclone config

2021/07/28 15:10:03 NOTICE: Config file "/home/minecraft/.config/rclone/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を入力して新しい同期先を作成します。

name> mydrive

mydriveという名前にしました。

14 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
15 / Google Drive
   \ "drive"
16 / Google Photos
   \ "google photos"

Storage> drive

driveと入力します。

client_id> (クライアントID)
client_secret> (クライアントシークレット)

上記はGCPの画面からコピーしてください。

scope> drive

これはアプリの権限です。driveスコープが最も強いです。くれぐれもAPIキーは慎重に管理しましょう。

root_folder_id> 
service_account_file> 

ここはどちらも空欄にしていいです。

Edit advanced config?
y) Yes
n) No (default)
y/n> n
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> n

Use auto config?nを答えましょう。するとGoogleでログインするURLが表示されます。

(GCPで設定したドメインがコールバック先になっていて、途中でSSLエラーが出るかもしれません。)

ここで同期権限を与えます。

すると確認コードが出るので、config_verification_code>に入力します。

y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

これでドライブが追加されました。

バックアップと同期

Google Driveにubuntu/world_backupを作っておきます。

script/backup.sh
#!/bin/bash

WAIT=15
STARTSCRIPT=$HOME/script/start.sh
SCREEN_NAME='minecraft'

screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say バックアップの時間です。'${WAIT}'秒後にサーバーを再起動します\015"'
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say 1分ほど経てば再接続可能になるので、しばらくお待ち下さい\015"'

sleep $WAIT
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "stop\015"'

sleep 20

cd /home/minecraft/world_backup
DIR=`date '+%Y%m%d_%H%M'`
tar -zcvf $DIR.tar.gz -C $HOME/server world

# Sync with google drive
rclone sync /home/minecraft/world_backup mydrive:/ubuntu/world_backup

# Restart server
$STARTSCRIPT

無事、同期ができました。あとはcrontab -eで定期実行しましょう。

なお、サーバー上にないファイルはゴミ箱に送られ、空き容量を圧迫します。 すぐ重くなるのでチェックが必要かも。

参考

https://qiita.com/uuu_n/items/17bcb08cbdf2aa90dc11
GitHubで編集を提案

Discussion

ログインするとコメントできます