Rcloneを使用してリージョン間でDigitalOceanスペースを転送する方法

前書き

DigitalOcean Spacesは、大量のデータを簡単かつ費用効果の高い方法で保存および提供できるように設計されたオブジェクトストレージサービスです。

このガイドでは、Rcloneを使用して2つのスペース間でデータを転送することにより、スペース領域間でデータを移行する方法について説明します。 Rcloneのインストール方法、複数のリージョンにアクセスするために必要な構成設定、およびリージョン間でファイルを同期し、整合性を検証するために使用できるコマンドを示します。

APIキーの作成とスペースエンドポイント情報の検索

スペース間でオブジェクトをコピーするためにRcloneのインストールと構成を開始する前に、DigitalOcean Spacesアカウントに関する情報が必要になります。 Spaces APIキーが必要になります。また、ソーススペースと宛先スペースのリージョンと名前を知る必要があります。

DigitalOcean Spaces APIキーの生成

DigitalOcean Spaces APIキーを作成するには、How To Create a DigitalOcean Space API Keyドキュメントの「アクセスキーの作成」セクションに従ってください。

アクセスキーIDとシークレットキーを保存します。 後でそれらを使用して、Rcloneがアカウントにアクセスするように設定します。

Spaces S3互換エンドポイントの検索

次に、各スペースのエンドポイントを見つける必要があります。 スペースを選択し、Settingsタブを表示すると、DigitalOceanコントロールパネル内でスペースのエンドポイントを表示できます。

DigitalOcean Spaces endpoint

エンドポイントは常に、スペースを作成した領域であり、その後に.digitaloceanspaces.comが続きます。 両方のスペースのエンドポイントをメモします。 rclone構成を作成するときに、この情報を使用しますか。

Rcloneのインストール

これで、Rcloneをインストールする準備ができました。 ローカルマシンでこれを行うことができます。または、帯域幅が制限されている場合は、ソースまたは宛先のスペースリージョンにあるドロップレットにRcloneをインストールすることもできます。

プロジェクトのWebサイトのDownloadsセクションにアクセスして、さまざまなプラットフォーム用にコンパイルされたユーティリティのバイナリを見つけます。 お使いのコンピューターのオペレーティングシステムに一致する圧縮バイナリをダウンロードして開始します。

Rclone zipファイルをコンピューターにダウンロードしたら、プラットフォームに合った以下のセクションに従ってください。

Linux

アーカイブを抽出する前に、unzipユーティリティが使用可能であることを確認する必要があります。

UbuntuまたはDebianを実行している場合は、次のように入力して、ローカルパッケージインデックスを更新し、unzipをインストールできます。

sudo apt update
sudo apt install unzip

CentOSまたはFedoraを実行している場合は、次のように入力してunzipをインストールできます。

sudo yum install unzip

unzipがインストールされている状態で、rclonezipファイルをダウンロードしたディレクトリに移動します。

cd ~/Downloads

次に、アーカイブを解凍し、新しく作成されたディレクトリに移動します。

unzip rclone*
cd rclone-v*

ここから、バイナリを/usr/local/binディレクトリにコピーして、システム全体で使用できるようにします。

sudo cp rclone /usr/local/bin

次に、システムにマニュアルページを追加して、コマンド構文と使用可能なオプションに関するヘルプを簡単に取得できるようにします。 ローカルの手動ディレクトリが使用可能であることを確認してから、rclone.1ファイルをコピーします。

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1

次に、manデータベースを更新して、新しいマニュアルページをシステムに追加します。

sudo mandb

最後に、Rclone構成ディレクトリを作成し、構成ファイルを開くことができます。

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

これにより、新しい空のファイルでテキストエディターが開きます。 続行するには、Configuring Rcloneのセクションに進んでください。

マックOS

macOSを実行している場合は、ターミナルでrclone zipファイルをダウンロードしたディレクトリに移動することから始めます。

cd ~/Downloads

次に、ファイルを解凍し、新しく作成したディレクトリに移動します。

unzip -a rclone*
cd rclone-v*

次に、/usr/local/binディレクトリが使用可能であることを確認してから、rcloneバイナリをそのディレクトリにコピーします。

sudo mkdir -p /usr/local/bin
sudo cp rclone /usr/local/bin

最後に、構成ディレクトリを作成し、構成ファイルを開くことができます。

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

これにより、新しい空のファイルでテキストエディターが開きます。 続行するには、Configuring Rcloneのセクションに進んでください。

Windows

Windowsを実行している場合は、Windowsファイルエクスプローラーのダウンロードディレクトリに移動することから始めます。 rclonezipファイルを選択して右クリックします。 表示されるコンテキストメニューで、Extract All…をクリックします。

Windows extract rclone zip file

プロンプトに従って、zipアーカイブからファイルを抽出します。

rclone.exeユーティリティはコマンドラインから実行する必要があります。 左下隅にあるWindowsボタンをクリックし、cmdと入力して、Command Promptを選択することにより、新しいCommand Promptcmd.exeプログラム)ウィンドウを開きます。

内部で、次のように入力して抽出したrcloneパスに移動します。

cd "%HOMEPATH%\Downloads\rclone*\rclone*"

ディレクトリの内容を一覧表示して、正しい場所にいることを確認します。

dir
Output10/23/2017  01:02 PM              .
10/23/2017  01:02 PM              ..
10/23/2017  01:02 PM                17 git-log.txt
10/23/2017  01:02 PM           296,086 rclone.1
10/23/2017  01:02 PM        16,840,192 rclone.exe
10/23/2017  01:02 PM           315,539 README.html
10/23/2017  01:02 PM           261,497 README.txt
               5 File(s)     17,713,331 bytes
               2 Dir(s)  183,296,266,240 bytes free

rclone.exeコマンドを使用する場合は、常にこのディレクトリにいる必要があります。

[.note]#Note: macOSおよびLinuxでは、rcloneと入力してツールを実行しますが、Windowsでは、コマンドはrclone.exeと呼ばれます。 このガイドの残りの部分では、コマンドをrcloneとして提供するため、Windowsで実行する場合は毎回rclone.exeに置き換えてください。

次に、構成ディレクトリを作成し、構成ファイルを開いてS3およびSpacesの資格情報を定義できます。

mkdir "%HOMEPATH%\.config\rclone"
notepad "%HOMEPATH%\.config\rclone\rclone.conf"

これにより、新しい空のファイルでテキストエディターが開きます。 構成ファイルでSpacesリージョンを定義する方法については、先に進んでください。

Rcloneの構成

Rclone構成ファイルで、2つのDigitalOcean SpacesリージョンをRcloneの「リモート」として構成します。 構成ファイルに次のセクションを貼り付けて、最初の領域を定義します。

~/.config/rclone/rclone.conf

[spaces-sfo2]
type = s3
env_auth = false
access_key_id = your_spaces_access_key
secret_access_key = your_spaces_secret_key
endpoint = sfo2.digitaloceanspaces.com
acl = private

ここでは、spaces-sfo2という名前の新しいrclone「リモート」を定義します。 構成するSpacesリージョンに一致するようにリージョン名を変更します。

types3に設定して、rcloneがリモートストレージリソースと対話して管理する適切な方法を認識できるようにします。 この構成ファイルでスペースアクセス資格情報を定義するので、env_authfalseに設定できます。

次に、access_key_id変数とsecret_access_key変数をそれぞれSpacesアクセスキーと秘密キーに設定します。 アカウントに関連付けられている資格情報の値を必ず変更してください。

endpointを、前に検索したSpacesエンドポイントに設定しました。

最後に、aclprivateに設定して、資産を共有するまで資産を保護します。

次に、作成した構成ブロックの複製を作成し、2番目のリージョンを反映するように名前とエンドポイントリージョンを更新します。

~/.config/rclone/rclone.conf

. . .

[spaces-nyc3]
type = s3
env_auth = false
access_key_id = your_spaces_access_key
secret_access_key = your_spaces_secret_key
endpoint = nyc3.digitaloceanspaces.com
acl = private

構成の残りの部分は、最初の領域と同じままにする必要があります。 完了したら、ファイルを保存して閉じます。

macOSおよびLinuxでは、資格情報が内部にあるため、構成ファイルのアクセス許可を必ずロックダウンしてください。

chmod 600 ~/.config/rclone/rclone.conf

Windowsでは、明示的に許可されない限り、管理者以外のユーザーに対するアクセス許可は拒否されるため、アクセスを手動で調整する必要はありません。

次に、rcloneを使用してスペースを探索し、スペース間でデータを同期します。

S3からスペースへのオブジェクトのコピー

設定が完了したので、ファイルを転送する準備ができました。

rcloneで構成されたリモートを確認することから始めます。

rclone listremotes
Outputspaces-nyc3:
spaces-sfo2:

定義した両方の領域が表示されます。

rcloneにリモートに関連付けられた「ディレクトリ」を一覧表示するように要求することで、使用可能なスペースを表示できます(リモート名の末尾にコロンを追加してください)。

rclone lsd spaces-sfo2:
Output          -1 2019-09-23 13:07:54        -1 source-space

上記の出力は、source-spaceと呼ばれる1つのスペースがsfo2領域で見つかったことを示しています。

手順を繰り返して、他の地域を表示できます。

rclone lsd spaces-nyc3:
Output          -1 2019-09-23 13:08:28        -1 destination-space

スペースの内容を表示するには、treeコマンドを使用できます。 リモート名を渡し、その後にコロンとリストする「ディレクトリ」の名前(スペース名)を続けます。

rclone tree spaces-sfo2:source-space
Output/
├── Photos
│   ├── 2019.01.24-23.10.27.png
│   ├── 2019.01.24-23.11.39.png
│   ├── 2019.01.24-23.18.00.png
│   ├── 2019.01.24-23.18.18.png
│   ├── 2019.01.24-23.18.30.png
│   ├── 2019.01.24-23.19.32.png
│   ├── 2019.01.24-23.23.06.png
│   ├── 2019.01.24-23.23.53.png
│   ├── 2019.01.24-23.25.14.png
│   ├── 2019.01.24-23.26.22.png
│   ├── 2019.01.25-12.43.35.png
│   ├── 2019.03.13-14.35.34.png
│   └── 2019.03.13-14.40.52.png
└── Photos.zip

1 directories, 14 files

準備ができたら、次のように入力してスペース間でファイルをコピーできます。

rclone sync spaces-sfo2:source-space spaces-nyc3:destination-space

すべてがうまくいったと仮定すると、rcloneは2つのスペース間でオブジェクトのコピーを開始します。

[.note]#Note:指定した領域に宛先スペースを以前に作成していない場合、rcloneは指定された名前で宛先スペースを作成しようとします。 指定された名前がすでに別のアカウントで使用されている場合、または名前がDigitalOcean Spacesの命名要件(小文字、数字、ダッシュのみ)を満たしていない場合、これは失敗します。

転送が完了したら、treeサブコマンドでオブジェクトを表示して、オブジェクトが転送されたことを確認できます。

rclone tree spaces-nyc3:destination-space
Output/
├── Photos
│   ├── 2019.01.24-23.10.27.png
│   ├── 2019.01.24-23.11.39.png
│   ├── 2019.01.24-23.18.00.png
│   ├── 2019.01.24-23.18.18.png
│   ├── 2019.01.24-23.18.30.png
│   ├── 2019.01.24-23.19.32.png
│   ├── 2019.01.24-23.23.06.png
│   ├── 2019.01.24-23.23.53.png
│   ├── 2019.01.24-23.25.14.png
│   ├── 2019.01.24-23.26.22.png
│   ├── 2019.01.25-12.43.35.png
│   ├── 2019.03.13-14.35.34.png
│   └── 2019.03.13-14.40.52.png
└── Photos.zip

1 directories, 14 files

より堅牢な検証を行うには、checkサブコマンドを使用して、両方の領域のオブジェクトを比較します。

rclone check spaces-sfo2:source-space spaces-nyc3:destination-space
Output2019/09/23 14:29:11 NOTICE: S3 bucket destination-space: 0 differences found
2019/09/23 14:29:11 NOTICE: S3 bucket destination-space: 14 matching files

これにより、両方のリモートの各オブジェクトのハッシュ値が比較されます。 一部のハッシュを比較できなかったことを示すメッセージが表示される場合があります。 その場合、--size-onlyフラグ(ファイルサイズに基づいて比較する)または--downloadフラグ(両方のリモートから各オブジェクトをダウンロードしてローカルで比較する)を指定してコマンドを再実行し、転送を確認できます。整合性。

結論

このガイドでは、2つのDigitalOcean Spacesリージョン間でオブジェクトを転送する方法について説明しました。 SpacesサービスからAPI資格情報とエンドポイント情報を収集し、ローカルコンピューターにrcloneユーティリティをインストールして構成し、すべてのオブジェクトをソースSpaceから宛先Spaceにコピーしました。

rcloneクライアントは、ファイルのアップロードまたはダウンロード、ローカルファイルシステムへのスペースのマウント、追加のスペースの作成または削除など、他の多くのオブジェクトストレージ管理タスクに使用できます。 ツールが提供する機能の詳細については、manページを確認してください。

Related