web-dev-qa-db-ja.com

Btrfsはrsyncでスナップショットをコピーします

だから私はこれを上下に探していましたが、根本的に間違ったことをしているに違いありません。私がしたいこと:

ホームフォルダのスナップショットを作成するようにNASを構成しました。ファイルシステムはbtrfsです。これは正常に機能し、ハードリンクを利用しています。

Rsync -aHを使用してハードリンクを保持し、スナップショットディレクトリ全体をext4usbディスクにバックアップするためにコピーしたいと思います。しかし、ハードリンクはrsyncの完了後に保持されません-私はbtrfsボリューム上の2つの異なるスナップショット(同一のiノードを持っていることが確認されました)のファイルを別のディレクトリにrsyncする最小の例にいます-これも2つの異なるファイルを作成します。これを機能させるためのrsyncオプションがここにありませんか?それとも、rsyncは単にこれを行うことができないのですか?仕事のための間違ったツール?

2
quaylar

rsyncはよくわかりませんが、「スナップショット」とはBtrfsスナップショットを意味します(btrfs subvolume snapshot …)2つのスナップショット内の同一のファイルはハードリンクされません。

Btrfsのコピーオンライト動作のため、(物理)デバイス上のスペースを共有している可能性があります。それらのiノード番号は同じですが、論理的には異なるデバイスに存在します。このコンテキストでは、各Btrfsサブボリュームを個別のファイルシステムとして扱う必要があります。

可能であれば、statを使用して異なるスナップショットに属するファイルを確認してください。異なるデバイス識別子が報告されていることがわかります。異なるデバイス上の同じiノード番号は何の意味もありません。

このため、rsyncには、ファイルをハードリンクする必要があるという簡単な手がかりがありません。そもそも「スナップショットディレクトリ全体」にハードリンクされていますnot

私は信じている btrfs sendおよびbtrfs receiveは、別のコンピューター(Btrfsファイルシステムを使用)にスナップショット階層を複製するためのツールです。使ったことがないのでご案内できません。調査 man btrfs-sendおよびman btrfs-receive

3