複製を使用してクラウドへのバックアップを管理する方法

前書き

Duplicacyは、増分バックアップ、同時バックアップ、クライアント側の暗号化など、データをクラウドにバックアップするプロセスを合理化することを目的とした多くの機能を提供するクロスプラットフォームのバックアップツールです。 CLI(コマンドラインインターフェイス)Linuxバージョンは個人使用は無料ですが、商用ユーザーには有料ライセンスが必要です。 さらに、グラフィカルインターフェイスを備えたMacOSおよびWindowsでDuplicacyを使用できます。このバージョンでは、個人ユーザーと商用ユーザーの両方にライセンス料を支払う必要があります。

Duplicacyは、lock-free deduplicationのアイデアに基づいて構築されており、さまざまなクラウドストレージサービスへのバックアップを安全に管理するように設計されています。 複製クライアントが新しいチャンクを作成して保存すると、同じストレージバケットを使用している他のクライアントは、そのチャンクがすでに存在することを確認できるため、再度アップロードすることはできません。 これにより、個別のクライアントがバックアップを追跡するための追加の作業を必要とせずに同一のデータを共有およびバックアップできます。

このチュートリアルでは、DuplicacyのCLIバージョンをインストールし、それを使用してDigitalOcean Spaceで一般的なデータバックアッププロセスを管理する方法の概要を説明します。 また、複数のドロップレットから同じスペースに共有リポジトリをバックアップする方法、およびデータセキュリティを強化するためにスナップショットを複数のスペースにバックアップする方法も示します。

前提条件

このチュートリアルを進めるには、次のものが必要です。

  • initial server setup guideを使用して構成されたTwo Ubuntu 16.04 Droplets。 サーバーには任意の名前を付けることができますが、わかりやすくするために、このチュートリアルではサーバーをserver-01およびserver-02と呼びます。

  • Two DigitalOcean Spaces。 これらを起動して実行する方法については、Introduction to DigitalOcean Spacesを参照してください。

  • An Access key and a Secret key for your Spaces.これらを生成するには、DigitalOceanコントロールパネルのAPI pageにアクセスします。

これらの前提条件が整ったら、Dupplicacyをインストールする準備ができました。

複製のインストール

最新のDuplicacyCLIバージョンは、wgetを使用してDuplicacy GitHub repositoryからダウンロードできます(個人ユーザーにはライセンスは必要ありません)。

both server-01 and server-02で次のコマンドを実行して、それぞれに重複をダウンロードします(最新リリースのダウンロードリンクをダウンロードリンクに置き換えます)。

sudo wget -O /opt/duplicacy https://github.com/gilbertchen/duplicacy/releases/download/v2.0.10/duplicacy_linux_x64_2.0.10

次に、ダウンロード場所と/usr/local/bin内の新しいディレクトリの間にシンボリックリンクを作成します。

sudo ln -s /opt/duplicacy /usr/local/bin/duplicacy

最後に、duplicacyを実行可能にします。

sudo chmod 0755 /opt/duplicacy

これで、各Dropletに複製がインストールされ、Spaceを使用するように構成する準備ができました。

リポジトリの初期化と複製の構成

複製はディレクトリレベルからデータをバックアップするため、スペースへのファイルのアップロードを開始する前に、両方のドロップレットの特定のディレクトリまたはリポジトリに関連付ける必要があります。 これを行うには、プロジェクトリポジトリを作成し、Duplicacyのinitコマンドを使用して初期化する必要があります。

initコマンドは、次の構文を受け入れます。

duplicacy init repository_id s3://region@endpoint/space_name
  • repository_id:これは、異なるリポジトリーを区別するためにDuplicacyによって使用されるラベルです。 このチュートリアルの次のステップで説明するように、複数のソースから同じリポジトリをバックアップする予定の場合、リポジトリIDは両方のドロップレットで同じである必要があります。

  • regionregionは、ドロップレットが配置されているリージョンの名前です。

  • endpoint:エンドポイントは、特定のリソースが見つかる場所を指定するためにサーバー側のWebAPIによって使用される静的な場所です。 DigitalOcean Spacesの場合、エンドポイントは、nyc3.digitaloceanspaces.comのように、領域の後に.digitaloceanspaces.comが続きます。 Spaceのエンドポイント名は、[設定]タブのSpacesコントロールパネルから直接コピーすることもできます。

  • space_name:これは、作成時に指定されたスペースの名前です。 これはスペースのURLではないことに注意してください。 スペースのURLがhttps://example_space.nyc3.digitaloceanspaces.comの場合、その名前はexample_spaceになります。

バックアップをスペース内の特定のフォルダーに移動する場合は、initコマンドを実行するときに、スペースの名前の後にフォルダーの名前を追加します。 その際、フォルダー名の後にスラッシュを忘れないでください:

duplicacy init repository_id s3://region@endpoint/space_name/folder_name/

これらの詳細を入手したら、mkdirコマンドを使用してリポジトリディレクトリon each of your Dropletsを作成する準備が整います。 その後、cdを使用して新しいリポジトリに移動します。

mkdir project-repository
cd project-repository/

project-repository/を作業ディレクトリとして、server-01で次のinitコマンドを実行します。 強調表示された値は、必ず独自の詳細に置き換えてください。

duplicacy init project_01 s3://[email protected]/example_space

次のように、initコマンドで-eオプションを使用して、重複による暗号化を有効にすることを選択できることに注意してください。

duplicacy init -e project_01 s3://[email protected]/example_space

暗号化が有効になっている場合、Duplicacyは、暗号化パスワードを使用してSpaceとやり取りするたびに、暗号化パスワードの入力を求めます。

initコマンドが実行されると、Duplicacyは、コントロールパネルのAPI pageからコピーできるアクセスキーとシークレットキーの入力を求めます。

OutputEnter S3 Access Key ID:ExampleAccessKeyGBBI
Enter S3 Secret Access Key:ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

そして、以下を出力します:

Output/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

initコマンドを実行すると、リポジトリ内に.duplicacy/という名前のディレクトリが作成され、preferencesという名前のファイルが保持されます。 このファイルには、スペースに関する情報と、指定した暗号化または保存オプションが含まれています。 後で重複構成を変更することにした場合は、preferencesファイルを直接編集するか、削除することができます。 そのリポジトリで次にinitコマンドを実行すると、ファイルが再作成されます。

ここで、initコマンドon your second Dropletを繰り返します。

duplicacy init project_01 s3://[email protected]/example_space

アクセスキーを再度追加すると、最初のドロップレットとは少し異なる出力が表示されます。

OutputThe storage 's3://[email protected]/example_space' has already been initialized
Compression level: 100
Average chunk size: 4194304
Maximum chunk size: 16777216
Minimum chunk size: 1048576
Chunk seed: 6475706c6963616379
/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

サーバーの両方のリポジトリが初期化されましたが、Dupplicacyを設定するためにもう1つのステップが必要になる場合があります。 現状では、Dupplicacyはデータをバックアップするたびにアクセスキーとシークレットキーの入力を求めますが、これはかなり面倒です。 これを回避するには、Duplicacyのsetコマンドを使用して、Spaceの資格情報をDuplicacyのpreferencesファイルに書き込むことができます。 次のコマンドon each of your serversを実行して、Duplicacyにアクセスキーとシークレットキーをそれぞれ保存させます。

duplicacy set -key s3_id -value ExampleAccessKeyGBBI
duplicacy set -key s3_secret -value ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

これで、Duplicacyを使用して、各DropletのリポジトリをいずれかのSpacesにバックアップする準備が整いました!

複数のソースからの1つのリポジトリのバックアップ

分散したチームは、ファイルの競合やデータの損失を防ぐ控えめなクラウドバックアップソリューションを活用できます。 リポジトリ全体のスナップショットを取得し、単一のコマンドでスペースにアップロードすることにより、Dupplicacyはバックアップを合理化すると同時に、複数のマシン間でのファイルの競合を回避します。

Duplicacyのバックアップ機能をテストするには、touchを使用して、project-repositoryon each of your Dropletsにいくつかのダミーファイルを入力します。

touch /project-repository/file-1.txt
touch /project-repository/file-2.txt

次に、server-01で、Duplicacyのbackupコマンドを使用して、リポジトリのスナップショットを作成し、それをSpaceにアップロードします。 1つの保存場所のみでリポジトリを開始したため、ファイルをバックアップするために他のオプションを指定する必要はありません。

duplicacy backup

結果の出力は次のようになります。

OutputNo previous backup found
Indexing /home/mark/project-repository
Listing all chunks
Packed file-1.txt (0)
Packed file-2.txt (0)
Backup for /home/sammy/project-repository at revision 1 completed

次に、server-02からリポジトリをバックアップしてみます。

duplicacy backup
OutputLast backup at revision 1 found
Indexing /home/sammy/project-repository
Backup for /home/sammy/project-repository at revision 2 completed

server-01server-02のリポジトリが同一であるため、最初のドロップレットでbackupコマンドを実行したときのように、Duplicacyはファイルをパックしませんでした。 わずかに異なるスナップショットをバックアップするとどうなるかを確認するには、server-02のダミーファイルの1つを開き、それにテキストを追加します。

nano file-1.txt

project-repository/file-1.txt

The quick brown fox jumped over the lazy dogs.

CTRL - XYENTERの順に入力してファイルを保存して閉じ、backupコマンドをもう一度実行します。

duplicacy backup
OutputStorage set to s3://[email protected]/example_space
Last backup at revision 2 found
Indexing /home/sammy/project-repository
Packed file-1.txt (45)
Backup for /home/sammy/project-repository at revision 3 completed

リポジトリ内のファイルの1つに新しい変更があったため、Duplicacyはそのファイルをパックし、リビジョン3の一部としてアップロードしました。

-rオプションを使用し、リビジョン番号を指定することにより、restoreコマンドを使用してリポジトリを以前のリビジョンに戻すことができます。 次のように、-overwriteオプションが指定されていない限り、既存のファイルは上書きされないことに注意してください。

duplicacy restore -overwrite -r 2

restoreコマンドを実行した後、内容が含まれているかどうかを確認することで、Duplicacyが実際にfile-1.txtを書き換えたことを確認できます。

cat file-1.txt

このコマンドで出力が生成されない場合、file-1.txtは空のファイルに戻り、リポジトリを以前のリビジョンに正常にロールバックしています。

複数の保管場所へのバックアップ

複数のオフサイトの場所にバックアップを保存するのはa common data security practice for many yearsです。 ただし、ファイルを複数の宛先にバックアップするプロセスは退屈で、生産性が低下する可能性があります。 ただし、クラウド内の複数の場所にデータをバックアップするための迅速なソリューションを提供できるサードパーティ製のバックアップツールがいくつかあります。

重複でこの機能を示すには、2番目のスペースをserver-01のリポジトリに追加します。 そのリポジトリはすでに重複によって開始されており、最初のスペースに関連付けられているため、initコマンドを再度実行してこれを行うことはできません。 これらのシナリオでは、すでに初期化されているリポジトリを別のストレージバケットに接続するaddコマンドを使用する必要があります。

Duplicacyのaddコマンドは、次の構文を使用します。

duplicacy add storage_id repository_id s3://region@endpoint/example_space_02

これは、前に使用したinitコマンドとほぼ同じように見えますが、主な違いは、新しい保存場所のIDを指定する必要があることです。 上記のinitコマンドを実行すると、Duplicacyはdefault IDを最初のストレージバケットに割り当てました。これは、バックアップを送信するデフォルトの場所であるためです。 2番目のスペースに指定するストレージ名は好きな名前にできますが、わかりやすいものにしておくと役立つ場合があります。

その情報を念頭に置いて、2番目のスペースをリポジトリに追加します。

duplicacy add space_02 project_01 s3://[email protected]/example_space_02

これで、リポジトリを2番目のスペースにバックアップする準備が整いました。 これを行うには、最初にリポジトリをデフォルトの保存場所にバックアップしてから、Duplicacyのcopyコマンドを使用して同じバックアップを2番目の保存場所にコピーすることをお勧めします。

duplicacy backup
duplicacy copy -from default -to space_02

これにより、各チャンクとスナップショットが最初のスペースから2番目のスペースにコピーされます。 copyコマンドは非破壊的であり、既存のファイルを上書きしないことに注意することが重要です。

結論

DuplicateacyをDigitalOcean Spacesと組み合わせると、ユーザーはクラウドバックアップを柔軟に管理できます。 複数のコンピューターから同じリポジトリをバックアップする必要がある場合、または1つのリポジトリをクラウド内の複数の場所にバックアップする必要がある場合、Dupplicacyはバックアップソリューションの不可欠な部分になる可能性があります。

重複の使用方法について詳しく知りたい場合は、project wiki on GitHubを確認してください。 または、一般的なバックアップ戦略について詳しく知りたい場合は、How To Choose an Effective Backup Strategy for your VPSに関するガイドまたはObject Storage vs. Block Storage Services間の比較を参照してください。

Related