序章

DigitalOcean Spacesは、大量のデータを簡単かつ費用効果の高い方法で保存および提供できるように設計されたオブジェクトストレージサービスです。 以前に他のオブジェクトストレージサービスに依存していた場合は、データをSpacesに移行することが最初のタスクの1つになる可能性があります。

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

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

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

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

DigitalOcean Spaces APIキーを作成するには、 DigitalOcean Spaces and APIKeyチュートリアルの「アクセスキーの作成」セクションに従ってください。

アカウントにアクセスするようにrcloneを構成できるように、アクセスキーIDと秘密キーを保存します。

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

DigitalOcean Spaces endpoint

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

AmazonS3APIキーの生成

S3アセットを管理する権限を持つAmazonAPIキーをまだ持っていない場合は、ここでそれらを生成する必要があります。 AWSマネジメントコンソールで、アカウント名をクリックし、ドロップダウンメニューから My SecurityCredentialsを選択します。

AWS select security credentials

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

AWS add user button

ユーザー名を入力し、アクセスタイプセクションでプログラムアクセスを選択します。 次へ:権限ボタンをクリックして続行します。

AWS user details

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

AWS S3 read access

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

AWS create user

最後のページに、新しいユーザーの資格情報が表示されます。 シークレットアクセスキー列の下にあるShowリンクをクリックして、資格情報を表示します。

AWS secret keys

アクセスキーIDシークレットアクセスキーを安全な場所にコピーして、これらの資格情報を使用するようにrcloneを構成できるようにします。 Download .csv ボタンをクリックして、資格情報をコンピューターに保存することもできます。

AmazonS3バケットのリージョンと場所の制約を見つける

次に、S3バケットのリージョンとロケーションの制約値を見つける必要があります。

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

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

AWS S3 bucket region

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

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

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

これで、ローカルコンピューターにrcloneをインストールする準備が整いました。

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

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

Linux

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

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

  1. sudo apt-get update
  2. sudo apt-get install unzip

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

  1. sudo yum install unzip

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

  1. cd ~/Downloads

次に、アーカイブを解凍して、新しいディレクトリに移動します。

  1. unzip rclone*
  2. cd rclone-v*

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

  1. sudo cp rclone /usr/local/bin

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

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

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

  1. sudo mandb

最後に、構成ディレクトリを作成し、構成ファイルを開いて、S3とSpacesのクレデンシャルを定義できます。

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

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

マックOS

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

  1. cd ~/Downloads

次に、ファイルを解凍して、新しいディレクトリレベルに移動します。

  1. unzip -a rclone*
  2. cd rclone-v*

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

  1. sudo mkdir -p /usr/local/bin
  2. sudo cp rclone /usr/local/bin

最後に、構成ディレクトリを作成し、構成ファイルを開いて、S3とSpacesのクレデンシャルを定義できます。

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

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

ウィンドウズ

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

Windows extract rclone zip file

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

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

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

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

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

  1. dir
Output
10/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コマンドを使用するときは、常にこのディレクトリにいる必要があります。

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

次に、構成ディレクトリを作成し、構成ファイルを開いて、S3とSpacesのクレデンシャルを定義できます。

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

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

S3アカウントとSpacesアカウントを構成する

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

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

〜/ .config / rclone / rclone.conf
[s3]
type = s3
env_auth = false
access_key_id = aws_access_key
secret_access_key = aws_secret_key
region = aws_region
location_constraint = aws_location_constraint
acl = private

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

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

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

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

〜/ .config / rclone / rclone.conf
. . .

[spaces]
type = s3
env_auth = false
access_key_id = spaces_access_key
secret_access_key = spaces_secret_key
endpoint = nyc3.digitaloceanspaces.com
acl = private

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

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

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

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

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

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

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

構成が完了したので、ファイルを転送する準備が整いました。

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

  1. rclone listremotes
Output
s3: spaces:

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

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

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

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

すでにDigitalOceanSpaceを作成している場合は、手順を繰り返してSpaceを表示できます。

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

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

  1. rclone tree s3:source-of-files
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バケットからDigitalOceanSpaceにファイルをコピーできます。

  1. rclone sync s3:source-of-files spaces:dest-of-files

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

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

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

  1. rclone tree spaces:dest-of-files
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サブコマンドを使用して、両方のリモートのオブジェクトを比較します。

  1. rclone check s3:source-of-files spaces:dest-of-files
Output
2017/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フラグ(両方のリモートから各オブジェクトをダウンロードしてローカルで比較する)を使用してコマンドを再実行し、確認することができます。転送の整合性。

結論

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

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