私は、毎時、毎日、毎週、毎月のバックアップで洗練されたバックアップスキームを設定しました。これは、(btrfs cow-filesystemの栄光のおかげで)デバイス上の余分なスペースをほとんど占有しません。
しかし、残念ながら、私は昔ながらの方法でスペースを使い果たしました(多くのものにコピーすることによって)。
すべてのスナップショットに保持されるため、何かを削除しても意味がありません。ディスク領域を解放するには、ファイルが最初にデバイスにコピーされてから、すべてのスナップショットを削除する必要があります。私はそれをしたくないので
rm -f
を実行するよりも少し複雑です。では、すべてのスナップショットで1つのファイルを削除するようにbtrfsに指示するにはどうすればよいですか?事実上、これは、スペースを解放できるように、内部参照カウンターをゼロに設定することを意味します。
これがbtrfsツール自体では不可能な場合(少し近視眼的です)、すべてのスナップショットでファイルの検索、マウント、削除のタスクを簡単にすることができるサードパーティのツールにも満足しています。
回避策の1つは、スナップショットを一時的に書き込み可能に設定し、スナップショットが表示されるすべてのスナップショットのファイルを削除することです。
スナップショットを書き込み可能に設定するには( btrfsスナップショットを書き込み可能にする方法 ):
btrfs property set -ts <snapshot> ro false
ファイルを削除して空き容量を増やしてから、で読み取り専用に戻します。
btrfs property set -ts <snapshot> ro true
ファイルへのすべての参照がなくなるとすぐに、btrfsはより多くの空き領域があることを検出します。
残念ながら、この方法は、以前のファイルの名前がわからなくなった場合にはあまり役に立ちません。ただし、 Baobab または K4DirStat またはdu -h | sort -h
を使用して、スナップショット内の大きなファイルの場所を見つけることができます。
また、スナップショットを含むディレクトリをマウントするだけであれば、すべてのスナップショットを個別にマウントする必要はありません。