GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Ntfs論理ボリューム上のファイルの作成日を取得する方法は?

ファイルの作成日を保持したいので、Windowsファイルストレージ用にLinuxシステムでNTFS論理ボリュームを作成しました(ファイルをアーカイブに圧縮してから解凍しますが、それが機能するかどうかはわかりません)。 NTFS-3GはLinux上のファイルの作成日を保存しますか?もしそうなら、どうすればアクセスできますか?

このスレッドを読むと、OPは、作成日を見つけるためのシェルスクリプトを提供するNTFSのドキュメントにリンクしています。 16進値から秒を取得するために変更しましたが、何か間違ったことをしていると思います:

#!/bin/sh
CRTIME=`getfattr -h -e hex -n system.ntfs_times $1 | 
    grep '=' | sed -e 's/^.*=(0x................).*$/1/'`
SECONDS=$(($CRTIME / 10000000))
echo `date --date=$SECONDS`

承認された回答:

https://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/#filetimesから

NTFSファイルは、「1601年1月1日(UTC)以降の100ナノ秒間隔の数を表す」4つのタイムスタンプのセットで修飾されますが、地球の自転の変動が不明なため、UTCは1961年より前の数年間定義されていません。

そこには、次のようなさらに多くの情報があります。

新しいバージョンのntfs-3gは、ntfs.ntfs_crtimeを公開します およびntfs.ntfs_crtime_be 属性。

だから:

getfattr --only-values -n system.ntfs_crtime_be /some/file |
  perl -MPOSIX -0777 -ne '$t = unpack("Q>");
  print ctime $t/10000000-11644473600'
ntfsinfo -F /file/in/ntfs /dev/fs-device

古いntfs-3gでは、これは機能するはずです:

getfattr --only-values -n system.ntfs_times /some/file |
  perl -MPOSIX -0777 -ne 'print ctime unpack(Q)/10000000-11644473600'

またはGNUツールと1秒未満の精度:

date '+%F %T.%N' -d "@$({ echo 7k
  getfattr --only-values -n system.ntfs_times /some/file |
    od -A n -N 8 -vt u8; echo '10000000/ 11644473600-p'; } |dc)"

Linux
  1. Linuxパーティションまたは論理ボリュームにファイルシステムを作成する方法

  2. Linux –ファイルの作成日を見つける方法は?

  3. Linux:システムからすべてのログインログを取得する方法は?

  1. Linux –前日にSarを表示するにはどうすればよいですか?

  2. system() の出力をファイルにリダイレクトする方法は?

  3. Bash/Debianでファイル作成日時を取得するには?

  1. Linuxオペレーティングシステムのインストール日を確認するにはどうすればよいですか?

  2. Linux – LinuxでProcファイルシステムはどのくらいの頻度で更新されますか?

  3. CからLinuxで現在のファイル(pwd)へのパスを取得する方法は?