変更されたファイルと最後のアクセスタイムスタンプを更新するWindows Powershellで実行されるスクリプトがあります。 Windows 7ノートブックでスクリプトを実行していますが、ext4でフォーマットされたネットワーク接続USBドライブにあるext4ファイルシステムのファイルタイムスタンプが更新されます。
ここにスクリプトがあります...
$filePath = "D:\Computing\Powershell\datetest\1TB_1.csv"
$csv = Import-Csv -Path $filePath #-Delimiter "`t"
foreach($row in $csv)
{
"Path = $($row.FullName) and Create_TS = $($row.CreatedDateUtc) and Modified_TS = $($row.ModifiedDateUtc) and Accessed_TS = $($row.AccessedDateUtc)"
$item = Get-Item $($row.FullName)
$item.CreationTimeUtc = $(Get-Date $($row.CreatedDateUtc))
$item.LastWriteTimeUtc = $(Get-Date $($row.ModifiedDateUtc))
$item.LastAccessTimeUtc = $(Get-Date $($row.AccessedDateUtc))
}
.csvには4つの列が含まれています。File path; Creation timestamp; LastAccessed_timestamp上記のスクリプトを実行すると、そのタイムスタンプセル行のタイムスタンプを使用して、指定されたファイルパス内のファイルのタイムスタンプが更新されます。
テストの結果はうまくいきますが、これらのファイルのCreate_timestampを更新しようとすると、.csvファイルからCreate_timestamp値を取得せずに、代わりに.csvファイルで変更されアクセスされたタイムスタンプの前の値になることに気づきました。
ext4ファイルシステムのファイルでこれが起こりますか?または、生成タイムスタンプを更新する方法はありますか?
ベストアンサー1
Linuxでファイルのcrtime(生成時間)を設定することは、ファイルシステムのデバッグが必要な非常に重要な作業です。
以前はソリューションを作成しました。ext4fs ファイルシステムからファイル/ディレクトリのcrtimeをコピーまたは復元する
Windowsでどのように読み取り/書き込みext4fsパーティションをマウントしたのかわかりません。 ext2fsdを使ってマウントしたとしましょう。この場合、残念ながら、そのdebugfs
アプリケーションはLinuxでのみ動作するため、幸運ではありません。たとえば、mingwを使用してWindows用にコンパイルしたい場合がありますが、Windowsにはブロックデバイスに直接アクセスできる他のAPIがあるため、これは簡単な作業ではありません。
編集する:
ext4でフォーマットされたネットワーク接続USBドライブ。
申し訳ありません。この場合、ファイルにcrtimeを設定することはできません。