ファイルシステム、アーカイブビット

ファイルシステム、アーカイブビット

Linuxファイルシステムでファイル固有のアーカイブビットがサポートされているかどうかを知りたいです。

https://en.m.wikipedia.org/wiki/Archive_bit

ntfsではなく、fatではなくext3のような基本的なfsで同じロジックを持つ必要があります。

答え1

LinuxにはDOS / Windowsアーカイブビットと同じ機能はありませんが、同様のものを作成できます。最新のLinuxシステムのサポートカスタムファイル属性、少なくともext4とbtrfsでは。あなたはそれを使用することができますgetfattrそれらをリストし、setfattr設定してください。カスタム属性は拡張属性つまり、ユーザーの名前空間では、名前は5文字で始まりますuser.

$ touch foo
$ getfattr foo
$ setfattr -n user.archive -v "$(date +%s -r foo)" foo
$ getfattr -d foo
# file: foo
user.archive="1471478895"

必要に応じてカスタム属性を使用できます。値は短い文字列にすることができます。使用可能な記憶容量は、ファイルシステムとカーネルのバージョンによって異なり、数百バイト程度が適しています。ここではファイルのタイムスタンプを使用しています。変更すると実際のタイムスタンプが更新されますが、カスタム属性のコピーは更新されません。

既存のファイルを上書きするのではなく、ファイルを削除して新しいバージョンに置き換えてファイルを変更すると、カスタムプロパティは消えます。これは目的に適しているはずです。属性が存在しない場合は、ファイルをバックアップする必要があります。

Unix 世界の増分バックアッププログラムはカスタム属性を使用しません。彼らがすることは、ファイルのタイムスタンプをバックアップのタイムスタンプと比較し、ファイルが変更された場合にファイルをバックアップすることです。これはバックアップの実際の状態を考慮するので、より安定しています。システム状態のみに基づくバックアップは、バックアップが消えたり、プロパティの維持中に発生したエラーによってファイルが失われる可能性が高くなります。

答え2

いいえ、(直接的に)いいえ。

Linux / Unixネイティブファイルシステムは、各ファイルに対して複数のタイムスタンプ(少なくとも最後の変更時間mtime、inode変更時間、および最後のctimeアクセス(または読み取り)時間)を保持しますatime。標準バックアップユーティリティは主にタイムスタンプをチェックして、ファイルが最後に変更された時期を確認して、特定のファイルを増分バックアップに含めるかどうかを決定します。これは、バックアップシステムが単に各ファイルのタイムスタンプを完全増分バックアップとmtime比較するため、アーカイブビットよりも柔軟です。mtimeタイムスタンプを比較して、すべてのフルバックアップでバックアップを実行できます。

増分バックアップ・ファイル・セットの計算以外の目的で使用するためにアーカイブ・ビットの動作を具体的に探している場合は、実行したい操作に関する詳細情報を提供する必要があります。

つまり、あなたはできますシミュレーションコマンドラインまたは独自のプログラムでタイムスタンプを設定mtimeできるため、アーカイブビットの動作はタイムスタンプを使用します。mtimeたとえば、(UNIX "epoch")目的のmtimeアーカイブ0ビットをクリアするのと同じ意味を定義するとします。その後、ファイルが変更されると、OSはそれをmtime最後に変更されたタイムスタンプに設定します(したがってこれ以上ではmtimeなく、0アーカイブビットが設定されているかのように解釈できます)。

シェルスクリプト(参考資料を参照)とさまざまなシェルツール(検索のサポートなど)をmtime使用して設定できます。独自の C または他の言語プログラムで stat(2) および utimes(2) のマニュアルページから始めます。touchman touchfindmtime

答え3

Linuxファイルシステムにはこれらの属性はありません。 XFSはカスタム属性をサポートしますが、これはバックアップに使用するのに非常に非効率的です。

一般的な解決策は、ファイル変更時間(mtime)に依存することです。増分バックアップを実行すると、mtime最後のバックアップより古いファイルのみがアーカイブされます。

関連情報