実際、どちらfsdb
もdebugfs
ZFS での使用に適していない可能性があります。crtime
代わりに、おそらくファイルサーバー上のファイルに既に設定されている保存フィールドになるアーカイブ形式を見つける必要があるかもしれません。のバージョンpax
またはシステム用の別のアーカイブ ツールがある場合、これを実行できる可能性があります ( cf.現在のバージョンで表示される「すべて-pe
を保存する」フラグは、「すべてを保存しない」-つまり、保存しません/出生時間)。「pax
crtime
crtime
基本的なツールである可能性が高いものを使用して、ZFS ベースの FreeBSD システムをハッキングして作成時間を設定しようとするよりも、
IllumosやSmartOSなどのOpenSolarisベースのシステムでは、より高度なツールを見つけることができる場合があります(例: )。これらのプラットフォームのいずれかでデータを ZFS データセットに転送し、それらのツールを組み合わせて、たとえばフィールドを書き換えることができるかどうかは、より理論的な問題です。それが機能する場合は、プールとそのデータセットを FreeBSD にエクスポートできます。プールをエクスポートすると、タイムスタンプが保持されるようです。ext4 ファイルシステムを同じホスト上のZFSonLinuxデータセットにダンプする際に保存できる場合( nb mdb
dtrace
crtime
crtime
crtime
zfs send
: これはテストしていません)ファイルシステム全体を NAS に転送するために使用できます。
このコア utils バグ レポートは、Linux のユーザーおよびオペレーティング システム レベルのツールの状態を明らかにする可能性があります。おそらく、crtime
inode のファイルシステム レベル フィールドは変更が難しいはずです。FreeBSD 上のZFSは「サポート」しcrtime
ていますが、FreeBSD 上の低レベルのファイルシステム デバッグ ツールの状態は、以前のリリースでは追いついていない可能性があります (マニュアルページzdb
を参照)。i ノードの作成時間を「設定」(またはリセット) しますか? それとも、すでにサポートされているシステムに設定した後、それらを保持しますか?
FreeBSD システムでは、ファイルが ZFS データセットに保存されている場合、ファイルのフィールドがフィールドと同じ時刻に設定されているstat
ことに気付くことがよくあります。これは、ファイルを書き込んだアプリケーションが、ファイルが「生成」され、その i ノード エントリが作成された時点で設定が必要なライブラリおよびカーネル関数にアクセスできなかったためと考えられます。(参照: )などのアプリケーション レベルで保持しようとするアプリケーション/ライブラリの例があり、フィールドをサポートしないファイルシステムでアーカイブが復元された場合に inode の作成を適切に処理します。しかし、それはあなたの場合には関係ないかもしれません。 crtime
ctime
crtime
crtime
libarchive(3)
archive_entry_atime(3)
crtime
ご想像のとおり、ファイルシステムにファイルを書き込むアプリケーションはたくさんあります...特に「すべてがファイル」である Unix/POSIX システムでは。これらのフィールドをサポートするために古いアプリケーションを変更または再コンパイルする必要があるかどうか、またはホスト システムの C ライブラリから透過的に取得するかどうかはわかりません。たとえば、古い FreeBSD リリースまたは ext4 を使用しない Linux システムで使用されているアプリケーションは、最新の OS で互換モードで実行することができますが、時間フィールドを適切に処理できるかどうかは問題です。
私にとって、この小さなスクリプトを実行sh birthtime_test
して、FreeBSD システムでファイル作成時間が「オン」になっていることを確認します (これらはすべて ZFS ポスト、v28
つまり機能フラグを使用します)。
#!/bin/sh
#birthtime_test
uname -r
if [ -f new_born ] ; then rm -f new_born ; fi
touch new_born
sleep 3
touch -a new_born
sleep 3
echo "Hello from new_born at:" >> new_born
echo `date` >> new_born
sleep 3
chmod o+w new_born
stat -f "Name:%t%N
Born:%t%SB
Access:%t%Sa
Modify:%t%Sm
Change:%t%Sc" new_born
cat new_born
出力:
9.2-RELEASE-p10
Name: new_born
Born: May 7 12:38:35 2015
Access: May 7 12:38:38 2015
Modify: May 7 12:38:41 2015
Change: May 7 12:38:44 2015
Hello from new_born at:
Thu May 7 12:38:41 EDT 2015
(注: このchmod
操作はファイルの内容を「変更」しますが、「変更」しません。これは、echo
コマンドがファイルに内容を追加することによって行われることです。および フラグtouch
の説明については、マニュアル ページを参照してください)。-m
-a
これは、私が現在アクセスできる最も古い FreeBSD リリースです。FreeBSD が (ZFS または UFS2 ファイルシステムで) これを処理できるのはリリースサイクルのどれくらい前か知りたいです。これはかなり長い間機能していると確信しています。この機能に関して知っておくと役立つ ZFS の OSX および Linux バージョンもあります。
あともう一つだけ ...
これは、単純な「フォレンジック」にとって特に優れた機能です。new_born
時間が始まったとき、決して起こらなかった閏秒、そして時を超越した時間の瞬間に Unix が生まれたときまでファイルを送り返したいとします... :-) 1 . を使用して日付を変更するだけtouch -d
で、誰もnew_born
が古くて賢明だと思いますよね?
いいえ:
~/ % touch -d "1970-01-01T00:00:01" new_born
~/ % stat -f "Name:%t%N
Born:%t%SB
Access:%t%Sa
Modify:%t%Sm
Change:%t%Sc" new_born
Name: new_born
Born: May 7 12:38:35 2015
Access: Jan 1 00:00:01 1970
Modify: Jan 1 00:00:01 1970
Change: May 7 13:29:37 2015
実際に見た目と同じくらい若い方が常に正直です:-)
時間と Unix - 実用的かつ詩的な主題: 結局のところ、「変化」とは何か。何かを「変更する」または「作成する」とはどういう意味ですか? Silvio さん、すばらしい投稿をありがとうございました。
ファイルのタイムスタンプ フィールドの保存、設定、アーカイブの要件についてより具体的に説明できれば、質問を改善して一般化できます。誤解しないでほしいのですが、これは非常に良い質問であり、今後も長い間投票が続くでしょう。
Dylan Leigh のプレゼンテーションForensic Timestamp Analysis of ZFSを参照するか、Dylan に連絡して情報にアクセスする方法の手がかりを得ることができcrftime
ます。
date -u -j -f "%Y-%m-%d:%T" "1970-01-01:00:00:01" "+%s"
[1] 最初に主張された伝説がありました。長い (SSL) 前からの秒数は、うるう秒のせいで決して少なくはありません...