前書き
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は両方のドロップレットで同じである必要があります。 -
region
:region
は、ドロップレットが配置されているリージョンの名前です。 -
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-repository
on 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-01とserver-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 - X
、Y
、ENTER
の順に入力してファイルを保存して閉じ、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間の比較を参照してください。