rcloneを使用してAmazon S3からDigitalOcean Spacesに移行する方法

前書き

DigitalOcean Spacesは、大量のデータの保存と提供を簡単かつ費用対効果の高いものにするために設計されたオブジェクトストレージサービスです。 以前に他のオブジェクトストレージサービスに依存していた場合、データをSpacesに移行することは最初のタスクの1つかもしれません。

このガイドでは、https://rclone.org/ [+ rclone +]ユーティリティを使用して、AmazonのS3ブロックストレージサービスからDigitalOcean Spacesにデータを移行する方法について説明します。 `+ rclone +`のインストール方法、両方のストレージサービスにアクセスするために使用する構成設定、およびファイルを同期してSpaces内での整合性を確認するために使用できるコマンドを示します。

APIキーの作成とバケットプロパティの検索

オブジェクトをSpacesにコピーするために `+ rclone +`のインストールと設定を開始する前に、Amazon S3およびDigitalOcean Spacesアカウントに関する情報が必要になります。 ツールが使用できる両方のサービスのAPIキーのセットが必要であり、バケットの地域と場所の制約値を知る必要があります。

DigitalOcean Spaces APIキーの生成とAPIエンドポイントの検索

DigitalOcean Spaces APIキーを作成するには、https://www.digitalocean.com/community/tutorials/how-to-create-a-digitalocean-space-and-api-keyの「アクセスキーの作成」セクションに従ってください。 #creating-an-access-key [DigitalOceanスペースとAPIキーを作成する方法]チュートリアル。

アカウントにアクセスするために `+ rclone +`を設定できるように、アクセスキーIDとシークレットキーを保存します。

次に、適切なAPIエンドポイントを見つける必要があります。 オブジェクトを転送するDigitalOcean Spaceを既に作成している場合は、Spaceを選択し、* Settings *タブを表示して、DigitalOceanコントロールパネル内でSpaceのエンドポイントを表示できます。

image:https://assets.digitalocean.com/articles/s3_migration/do_spaces_endpoint.png [DigitalOcean Spacesエンドポイント]

まだスペースを作成していない場合、 `+ rclone `はコピープロセスの一部として選択したスペースを自動的に作成できます。 その場合のエンドポイントは、使用するSpacesリージョンの後に「 .digitaloceanspaces.com 」が続きます。 スペースの作成ページで選択オプションを表示すると、DigitalOceanコントロールパネルでスペースの利用可能な領域を見つけることができます。 この記事の執筆時点では、「nyc3」リージョンのみが利用可能です(エンドポイントは「 nyc3.digitaloceanspaces.com +」です)。

Amazon S3 APIキーの生成

S3アセットを管理する権限を持つAmazon APIキーがまだない場合は、今すぐ生成する必要があります。 AWSマネジメントコンソールで、アカウント名をクリックし、ドロップダウンメニューから[* My Security Credentials *]を選択します。

image:https://assets.digitalocean.com/articles/s3_migration/select_security_credentials.png [AWS select security credentials]

次に、左側のメニューで[ユーザー]を選択し、[ユーザーの追加]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/s3_migration/add_user_button.png [AWSユーザー追加ボタン]

*ユーザー名*を入力し、*アクセスタイプ*セクションで*プログラムによるアクセス*を選択します。 * Next:Permissions *ボタンをクリックして続行します。

image:https://assets.digitalocean.com/articles/s3_migration/user_details.png [AWSユーザーの詳細]

次のページで、上部の[既存のポリシーを直接添付する]オプションを選択し、[ポリシータイプ]フィルターに* s3read と入力します。 [ AmazonS3ReadOnlyAccess ]ポリシーボックスをオンにし、[次へ:レビュー]ボタンをクリックして続行します。

image:https://assets.digitalocean.com/articles/s3_migration/s3_read_access.png [AWS S3読み取りアクセス]

次のページでユーザーの詳細を確認し、準備ができたら[*ユーザーの作成]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/s3_migration/create_user_button.png [AWS create user]

最後のページに、新しいユーザーの資格情報が表示されます。 [秘密アクセスキー]列の下にある[表示]リンクをクリックして、認証情報を表示します。

image:https://assets.digitalocean.com/articles/s3_migration/aws_secret_keys.png [AWSシークレットキー]

これらの資格情報を使用するように「+ rclone +」を設定できるように、* Access key ID Secret access key *を安全な場所にコピーします。 * Download .csv *ボタンをクリックして、コンピューターに資格情報を保存することもできます。

Amazon S3バケットの地域と場所の制約を見つける

次に、S3バケットの地域と場所の制約値を見つける必要があります。

トップメニューの[サービス]をクリックし、表示される検索バーに* S3 *と入力します。 * S3 *サービスを選択して、S3管理コンソールに移動します。

転送するバケットのリージョン名を探す必要があります。 バケット名の横にリージョンが表示されます:

image:https://assets.digitalocean.com/articles/s3_migration/aws_region.png [AWS S3バケットリージョン]

バケットのリージョンに関連付けられたリージョン文字列と一致するロケーション制限を見つける必要があります。 AmazonのこのS3地域チャートでバケットの地域名を探し、適切な地域と場所の制約文字列を見つけます。 この例では、地域名は「US East(N. バージニア州)」のように、地域の文字列として「+ us-east-1 +」を使用し、場所の制約は空白になります。

Amazonアカウントから適切な情報を取得したので、この情報を使用して `+ rclone +`をインストールおよび構成できます。

ローカルコンピューターにrcloneをインストールする

これで、ローカルコンピューターにhttps://rclone.org/ [+ rclone +]をインストールする準備が整いました。

プロジェクトのウェブサイトのhttps://rclone.org/downloads/ [ダウンロード]セクションにアクセスして、さまざまなプラットフォーム用にコンパイルされたユーティリティのバイナリを見つけます。 お使いのコンピューターのオペレーティングシステムに一致するzip形式のバイナリを* Downloads *ディレクトリにダウンロードして開始します。

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

Linux

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

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

sudo apt-get update
sudo apt-get install unzip
  • CentOS または Fedora *を実行している場合、次のように入力して `+ unzip +`をインストールできます。

sudo yum install unzip

+ unzip +`をインストールした状態で、 `+ rclone + zipファイルをダウンロードしたディレクトリに移動します。

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

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

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

これにより、新しい空のファイルでテキストエディターが開きます。 リンクのセクション:[オブジェクトストレージアカウントの定義]に進んで続行します。

マック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

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

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

これにより、新しい空のファイルでテキストエディターが開きます。 リンクのセクション:[オブジェクトストレージアカウントの定義]に進んで続行します。

Windows

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

image:https://assets.digitalocean.com/articles/s3_migration/extract_archive.png [Windows抽出rclone zipファイル]

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

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

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

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

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

dir
Output10/23/2017  01:02 PM    <DIR>          .
10/23/2017  01:02 PM    <DIR>          ..
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 +`コマンドを使用したいときはいつでもこのディレクトリにいる必要があります。

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

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

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

S3およびSpacesアカウントを構成する

「+ rclone +」が2つのアカウント間のコンテンツを管理できるように、Amazon S3とDigitalOcean Spacesの構成を新しいファイルで定義できます。

S3アカウントを定義することから始めましょう。 構成ファイルに次のセクションを貼り付けます。

〜/ .config / rclone / rclone.conf

[s3]
type = s3
env_auth = false
access_key_id =
secret_access_key =
region =
location_constraint =
acl = private

ここでは、「+ s3 」と呼ばれる新しい「 rclone 」「リモート」を定義します。 ` rclone `がリモートストレージリソースと対話して管理する適切な方法を知るように、 ` type `を ` s3 `に設定します。 設定ファイル自体でS3クレデンシャルを定義するため、 ` env_auth `を ` false +`に設定します。

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

Amazon地域チャートで見つけたS3バケットのプロパティに従って、地域と場所の制約を設定します。 最後に、アクセス制御ポリシーを「プライベート」に設定して、デフォルトでアセットが公開されないようにします。

これで、DigitalOcean Spaces構成に同様のセクションを定義できます。 構成ファイルに次のセクションを貼り付けます。

〜/ .config / rclone / rclone.conf

. . .

[spaces]
type = s3
env_auth = false
access_key_id =
secret_access_key =
endpoint =
acl = private

このセクションでは、「スペース」と呼ばれる新しいリモートを定義しています。 繰り返しますが、SpacesはS3互換のAPIを提供するため、 `+ type `を ` s3 `に設定しています。 設定ファイル内でSpacesクレデンシャルを定義できるように、 ` env_auth +`をオフにします。

次に、 `+ access_key_id `と ` secret_access_key `変数をDigitalOceanアカウント用に生成された値に設定します。 先ほど決定した適切なSpacesエンドポイントに「 endpoint 」を設定します。 最後に、 ` acl `を ` private +`に再度設定して、共有するまで資産を保護します。

完了したら、ファイルを保存して閉じます。

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

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

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

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

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

`+ rclone +`が設定されたリモートをチェックすることから始めます:

rclone listremotes
Outputs3:
spaces:

定義した両方のセクションが表示されます。

利用可能なS3バケットを表示するには、 `+ rclone `に ` s3 +`リモートに関連付けられた「ディレクトリ」を一覧表示するよう依頼します(リモート名の最後にコロンを追加してください)。

rclone lsd s3:
Output          -1 2017-10-20 15:32:28        -1 source-of-files

上記の出力は、S3アカウントで「+ source-of-files +」と呼ばれる1つのバケットが見つかったことを示しています。

DigitalOceanスペースを既に作成している場合は、手順を繰り返してスペースを表示できます。

rclone lsd spaces:
Output          -1 2017-10-25 19:00:35        -1 existing-space

S3バケットまたはDigitalOcean Spaceのコンテンツを表示するには、 `+ tree +`コマンドを使用できます。 リモート名を渡し、その後にコロンとリストする「ディレクトリ」の名前(バケットまたはスペース名)を続けます。

rclone tree s3:
Output/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
   ├── Social Rebrand Presentation 032815.ppt
   ├── TechnicLauncher.jar
   ├── nda_template.docx
   ├── textfile.txt
   └── the_mother_of_all_demos.mp4

2 directories, 8 files

準備ができたら、次のように入力して、S3バケットからDigitalOcean Spaceにファイルをコピーできます。

rclone sync s3: spaces:

以前に選択したスペースを作成していない場合、 `+ rclone +`は指定された名前でスペースを作成しようとします。 指定された名前が別のアカウントで既に使用されている場合、または名前がDigitalOcean Spacesの命名要件(小文字、数字、ダッシュのみ)を満たしていない場合、これは失敗します。

すべてがうまくいったと仮定すると、 `+ rclone +`はS3からSpacesへのオブジェクトのコピーを開始します。

転送が完了したら、 `+ tree +`サブコマンドでオブジェクトを表示することにより、オブジェクトが転送されたことを視覚的に確認できます。

rclone tree spaces:
Output/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
   ├── Social Rebrand Presentation 032815.ppt
   ├── TechnicLauncher.jar
   ├── nda_template.docx
   ├── textfile.txt
   └── the_mother_of_all_demos.mp4

2 directories, 8 files

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

rclone check s3: spaces:
Output2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 0 differences found
2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 2 hashes could not be checked

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

結論

このガイドでは、Amazon S3からDigitalOcean Spacesにオブジェクトを転送する方法について説明しました。 両方のサービスのAPIクレデンシャルを作成し、ローカルコンピューターに `+ rclone +`ユーティリティをインストールして設定し、S3バケットからDigitalOcean Spaceにすべてのオブジェクトをコピーしました。

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

Related