スナップショットを作成しようとすると:
[root@localhost ~]# btrfs subvolume snapshot /home/admin2/ /.snapshots/s2
ERROR: Not a Btrfs subvolume: Invalid argument
ディレクトリのBTRFSスナップショットを作成するには?
答え1
私は簡単な方法がわからない。いいえと言いたいです。それは直接起こることはできません。
admin2/
サブボリュームの場合は問題ありません。しかし、ディレクトリをすぐにサブボリュームに透過的に変換することはできないようです。
回避策があります。
含まれているサブボリューム全体のスナップショットを作成します
admin2/
。admin2/
スナップショットから*を除くすべての項目を削除します。スナップショットのデータを並べ替えます。
- *の内容を
admin2/
スナップショットの最上位ディレクトリに移動します。 admin2/
スナップショットから残りのコンテンツを削除します(例:*ディレクトリ、現在空です)。
- *の内容を
元のディレクトリに基づいてスナップショットの最上位ディレクトリの所有権とモードを変更します
admin2/
。
このようにして、必要なサブボリューム、つまりディレクトリのスナップショットを手動で作成できます。
後でこのプロセスを繰り返す場合は、元のディレクトリをサブボリュームに置き換えることを検討してください。ディレクトリを別の場所に移動し(名前の変更または削除)、サブボリュームをその場所に移動します。サブボリュームが作成されると、/home/admin2/
別のスナップショットを作成する可能性が高くなります。ただし、スナップショットを作成するのは簡単で、試したコマンドは今機能します。
admin2/
*スナップショットを元のディレクトリと混同しないでください。私がadmin2/
アスタリスクでマークした場所がスナップショットadmin2/
にあります。
メタノート:正直に繰り返すことができました。この他の答え。問題はディレクトリをサブボリュームに変換することです。これらの違いのため、私は単に他の答えを提示するだけではありません。ご質問に応じて手順を説明することにしました。しかし、違いは主に質問にあります。プロセスの唯一の違いは、いくつかの名前を変更するかどうかです。私の回答が役に立つと思われる場合は、リンクされた回答に賛成投票してください。
答え2
スナップショットはサブボリュームに対してのみ作成できます。ディレクトリをサブボリュームに変換する直接的な方法はありません。
ただし、同じデータを含むディスクのディレクトリコピーを共有したい場合は、次のことができます。ウィキペディアそして使用cp --reflink
:
cp -ax --reflink=always src/. dest
これにより、ディレクトリの通常のコピーが作成されますが、すべてのファイルデータをコピーするのではなく、元のディレクトリと共有(=再リンク)されます。デフォルトでは、これはスナップショットと同じです。コピーを別のサブボリュームに入れるには、空のサブボリュームを作成し、ディレクトリをここにコピーします。
データによっては、この方法がより良い場合があります。@camilesの答え他のすべてのファイルを削除すると、大量のファイルを削除するのに時間がかかる可能性があるためです。