スナップショット大容量変更ファイル

スナップショット大容量変更ファイル

自宅には次のバックアップスキームがあります。すべてのコンピュータは、毎日サーバーの$ FULL_COPYディレクトリにrsyncされます。サーバーはディレクトリの毎日(または毎週/毎月)スナップショットを撮り、最大X個のスナップショットを保持します。また、rsyncを使用して:

rsync -ar --link-dest=$LATEST_SNAPSHOT $FULL_COPY $NEW_SNAPSHOT

これは素晴らしい作品です。最後のスナップショット以降に変更されなかったファイルはハードリンクされています。問題は大容量ファイル(正確にはThunderbirdの受信トレイ)にあり、小さな変更だけでファイルの完全なコピーを意味します。私のスナップショットは簡単に数GBですが、変更された部分はほんの数MBです。

これを行うより賢い方法はありますか? (私の$ FULL_COPYもリモートシステムにコピーされるため、これらの冗長性は必要ありません。)私の唯一のアイデアは、スナップショットをサポートするCoWファイルシステムです。しかし、それは私の体に大きな手術を意味することでした、私はそれが好きではありませんでした。

ベストアンサー1

ここに長い文章を書いたのは本当に簡単です。パッチを使用してください。

$FULL_COPYを通常どおり実行しますが、$NEW_SNAPSHOTの場合非常に大きなファイルを除外

これがファイルで、ファイルパスが/home/myuser/.mail/INBOXであると仮定すると、次のようになります。

rsync -ar --link-dest=$LATEST_SNAPSHOT $FULL_COPY $NEW_SNAPSHOT --exclude=/home/myuser/.mail/INBOX

これにより、スナップショットを撮るのにかかる時間が大幅に短縮されます。

次に、より明確に説明するためにパスを埋めましょう。 $FULL_COPYの「root」ディレクトリが/mnt/fullの下にあるので、ユーザーのメールディレクトリの完全バックアップが/mnt/full/home/myuser/.mail/INBOXにあるとします。同様に、スナップショットも/mnt/snap-mm-dd-yyの下にあります。

次に、受信トレイのデルタのみをインポートし、意味のある場所の正しい日付スナップショットに入れるには、次の手順を実行します。

diff -u /mnt/full/home/myuser/.mail/INBOX /home/myuser/.mail/INBOX > /mnt/snap-mm-dd-yy/home/myuser/.mail/INBOX.delta

ここで実行する操作は、diffを使用してフルバックアップメールファイルの今日のメールボックスファイルのパッチファイルを作成し(diffの-uオプションがこれを行う)、パッチファイルを予測可能な場所(たとえば、ユーザーの.mailディレクトリ)に送信することです。

最後に、元のメールボックスが失われたためにスナップショット当日の状態でメールボックスを復元する必要がある場合は、まず$ FULL_COPYと$ SNAP_SHOTを使用してすべてを元のパスに復元してください。その後、パッチを実行してINBOXデルタを復元します。

patch < /mnt/snap-mm-dd-yy/home/myuser/.mail/INBOX.delta

それはすべてです。

メモ:

1) INBOX.delta を見ると、最初の 2 行は既存のファイルと新しいファイルのパスなので、パッチの際に元のパスを使いたくない場合は編集できます。

2)デルタは毎日少しずつ大きくなっていますが、全体に比べてまだはるかに小さいです。次のフルタイムまで増分を増やすことは、複数のパッチを作成するよりもリソースをより効率的に使用する方法になります。

おすすめ記事