「更新日時」タイムスタンプが壊れていた場合はコピーは正しくできますか?

2,264 views
Skip to first unread message

asccssac...@gmail.com

unread,
Nov 1, 2016, 7:18:31 AM11/1/16
to FastCopy掲示板
いつも重宝しております
有難うございます

「環境」
Windows 10 Anniversary Pro 64bit
FastCopy325_x64.zip ←FastCopy.exe


「更新日時」タイムスタンプが壊れていた場合はコピーは正しくできますか?

「症状」
どうも1つのファイル(a.jpeg)のタイムスタンプが壊れていると
思われます ←あるソフトで異様な動きあり▼

FastCopy でも特にコピーエラーはでませんが、、


FastCopyでは「タイムスタンプが壊れ」判定はあるのでしょうか?

仮にタイムスタンプが壊れていても。そのままコピーですか?
「YES」 壊れたままそっくりコピー ですか?

「YES」で、なんの問題もないでしょうが、、


質問です

Q)「タイムスタンプが壊れ」判定はできるのでしょうか?
「NO」×
終わりです

「YES」〇
では修復は可能ですか?
「YES」なら助かります。。。

お待ちしています


Hiroaki SHIROUZU

unread,
Nov 2, 2016, 12:20:02 AM11/2/16
to FastCopy掲示板
NTFSのタイムスタンプは単なる64bitカウンタ数値で、OSから見た場合に「壊れた」という状態は普通ありませんので、そのままコピーされます。

asccssac...@gmail.com

unread,
Nov 2, 2016, 12:31:13 AM11/2/16
to FastCopy掲示板
わかりました

普通は壊れないのでしょうが、、
壊れた場合はお手上げですね。。

o o

unread,
Nov 2, 2016, 6:24:19 AM11/2/16
to FastCopy掲示板
横から失礼します。

 タイムスタンプ(日時)は「壊れている」と判断できる情報はありません。

 ファイルシステムが、YYYY年MM月DD日 HH時MM分SS秒/の各年月日時分秒毎の情報で持っていれば破損チェックが出来るのでしょうが、基準日からの経過秒数(コンマ以下)で持っていますので、単純にあるファイルのタイムスタンプだけを見て正常/異常の判断はできません。

 該当ファイルを扱っている人であれば、「このPC内のExcelファイルは、PCを買ってから作成したので、購入した2016年5月以前のタイムスタンプはおかしい」という判断はできるかもしれませんが、汎用ツール(FastCopy)で、あるファイルのタイムスタンプが、1980年11月22日・・・のタイムスタンプが異常か?正常化?という判断は、困難と思います。

 また、「指定年月日以前のタイムスタンプは無効」という判断を行う場合でも、修復というのは出来ず、日以前のタイムスタンプは無効と判断し、△年△月△日に置き換える」という考え方しかできないと思います。

asccssac...@gmail.com

unread,
Nov 2, 2016, 7:37:18 AM11/2/16
to FastCopy掲示板
ご丁寧に有難うございます
勉強になります

100%タイムスタンプは知りませんが、、
2つあるかもしれません



----------------------------
1)整合性

基本この通りだと思います。。
整合性は誰にも判断できません

「免許証」←拾った
写真が合っている(整合性)かはわかりません


2)データ欠損
本来あるべきところのデータがない

「免許証」←拾った
写真がない(欠損)ことはわかります

----------------------------

つまり
「免許証」は用をなしているが、←免許証自体はちゃんと存在するので
写真がないので、変な見方をされる ←不信?
このような中途半端な壊れもあるかもしれませんが、、
いかがでしょうか?

「考察」
「基準日からの経過秒数」 以外のデータが壊れているのでは
ないでしょうか? 
100%タイムスタンプは知りませんが、、、

「基準日からの経過秒数」 以外にはどのよーなデータが
入っているのでしょうか??




o o

unread,
Nov 2, 2016, 8:02:30 AM11/2/16
to FastCopy掲示板
タイムスタンプについてのみ説明・補足いたします。
(他の項目については質問の内容が理解できませんでした)

 NTFSのタイムスタンプというのは、1601年からの経過100ナノ秒 の単なる一つの数値情報だけしかありません。
 それを、Windows(アプリケーション) が表示時にわかりやすい形式の年月日時分秒の文字列で表現しているだけです。

 作者の方が言っておられる「NTFSのタイムスタンプは単なる64bitカウンタ数値で・・・・」というのはそういう意味です。

 正常/異常の判断はできないというのは、単なる一つの数値情報の為、ある一つの数値だけでは、正常/異常の判断基準がないので判断できないというとになります。

 もっとも、人から見た場合、高画質のJPEGファイルのタイムスタンプが、が1970年1月1日・・・であればおかしいと思いますが、汎用ツールにはそのような判断は困難と思いますし、「修復」となるとそれは、「勝手な改ざん」となるため、リスクを伴い、そのままコピーを望む人には、好ましくない勝手な挙動となります。

asccssac...@gmail.com

unread,
Nov 2, 2016, 7:36:31 PM11/2/16
to FastCopy掲示板

ご丁寧に有難うございます


「結論」タイムスタンプは直せません
    タイムスタンプの整合性は誰にも分りませんから

勉強になりました。。。





↓ 以下余談で、話が全く変わってしまいます

100%タイムスタンプは知りませんが、、



ファイルの「System.DateTime」(LastWriteTime)を無理やり手で
壊そうと頑張ってみましたが、、

▼タイムスタンプの壊れたファイルを作成するのは
かなり難しそうですね。。
他では諦めた人もいました。。

どなたか「壊し方」を知っていたら教えてください
「OSが握っているので、壊せないです」というのは簡単ですが、、

●●これを知っている人がいたら、驚きです。。。。。
あくまで余談です



------------------単なる参考用
■ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定する

'作成日時の取得(DateTime値を返す)

'C:\test.txt が存在しないときは、UTCの 1601/01/01 9:00:00 を返す

Console.WriteLine(System.IO.File.GetCreationTime("C:\test.txt"))


'更新日時の取得
Console.WriteLine(System.IO.File.GetLastWriteTime("C:\test.txt"))


'アクセス日時の取得
Console.WriteLine(System.IO.File.GetLastAccessTime("C:\test.txt"))



'作成日時の設定(今の時間にする)
System.IO.File.SetCreationTime("C:\test.txt", DateTime.Now)


'更新日時の設定
System.IO.File.SetLastWriteTime("C:\test.txt", DateTime.Now)

o o

unread,
Nov 2, 2016, 8:48:28 PM11/2/16
to FastCopy掲示板
ファイルの「System.DateTime」(LastWriteTime)を無理やり手で壊そうと頑張ってみましたが、

 ‘タイムスタンプを壊す’ とは具体的に、どのような事象・値を言っておられるのでしょうか?

 ファイルシステムにより、タイムスタンプの持ち方は変わりますので、情報の少ない FATへコピーすれば、FATの中で表現可能な日時の範囲・単位に丸められますので、タイムスタンプの一部の情報は失われます。
 この場合でも一般に‘壊れる’という表現は使いませんので、‘壊れる’という事象が具体的に何を表現されたいのか理解出来ておりません。


◆ JPEGファイルのEXIFデータ
 JPEGファイルは、OSのファイルタイムスタンプとは無関係に、JPEGファイルフォーマット仕様で、ファイル内に画像データとは別にEXIFデータを持って、撮影データなどの付加情報として、撮影日時なども持つ場合があります。
 NTFSファイルタイムスタンプと異なり、必ず持っているとは限りません、EXIF情報の有無・内容はアプリケーション(カメラなど)に依存します。
 
 もし、この JPEGファイルのEXIF情報内の撮影日時などの情報をさしておられるのであれば、タイムスタンプと表現されるのは適切ではありません。
 適切な表現が見つからないのであれば、変な脚色せず 「JPEGファイルの撮影日時」 の様な表現が何を指しているのかわかりやすいと思います。

 一般にファイルタイムスタンプと言えば、NTFS , FAT でのファイルタイムスタンプを指します。

 もし、 JPEGファイルのEXIF情報内の撮影日時などの情報としても、‘壊す’というのが何を言っておられるのか理解出来ません。
(撮影情報を削除する・・・・EXIF情報を削除・・・・・であれば簡単ですし)

asccssac...@gmail.com

unread,
Nov 2, 2016, 9:25:13 PM11/2/16
to FastCopy掲示板
ご丁寧に有難うございます

詳しいですね。。


話を難しくしてはいけないので簡単にします

「環境」
Windows 10 Anniversary Pro 64bit NTFS

test.txt 作成
test.txt
ファイルの「System.DateTime」(LastWriteTime)を無理やり手で壊そうと頑張ってみましたが、
100%タイムスタンプは知りませんが、、


test.txt をWindows Explorer プロパティでみて
「更新日時」←例えば「エラー」「*******」と表示される???
       こういう表示はないのでしょうが、、、


あ、タイムスタンプ が壊れている!
という驚きを味わってみたかった

ということでした。。。



▼FATのことや
▼JPEGファイル の仕様など、難しいことは忘れてください。。

「余談」
多分、タイムスタンプ が壊れていたら、、、プロパティも
表示しない(ファイルが異常です!)のでは、、、?






o o

unread,
Nov 2, 2016, 10:29:07 PM11/2/16
to FastCopy掲示板
 FAT/NTFSのファイルシステムのタイムスタンプ領域は、先述のとおり、1601年からの10MHzのクロック数(100ナノ秒毎)の連続した数値データですので、
タイムスタンプ領域だけで見た場合、何らかの数値があるだけですので、エラーという値(表現)がありません。

 Oracleなどのデータベースでは数値フィールドでもNULL(値なし)という概念がありますが、タイムスタンプでは数値だけですので、何らかの数値となります。
 アプリケーションレベルでは、タイムスタンプの数値から「1601年1月1日0時0分0秒は無効な値・情報なしと判断し空白で表示」のようは挙動は可能と思います。
 また、ファイルシステムレベルでは、ファイルシステムとして破損しているという概念はありますが、タイムスタンプ個々の領域毎のチェックではありません。

※ ここでのファイルシステムは、NTFSを基準に述べておりますが、NTFSも幾つかの種類があり、また、NTFS以外のファイルシステムでは、内部でのタイムスタンプの持ち方は異なります(と言っても、多くのファイルシステムでは似たり寄ったりの扱いですが)
 どうしても「ファイルのタイムスタンプの破損・エラーを見たい」と言うことであれば、Windows , UNIX/Linux/BSD系 など以外の色々なOSで模索される方がいいかもしれません。

asccssac...@gmail.com

unread,
Nov 3, 2016, 12:12:22 AM11/3/16
to FastCopy掲示板
確かに
Windows上では、壊せないでしょうね。。
test.txtファイルの「System.DateTime」ゼロクリア やってみたら
OSがしっかり握っていて、はじかれたので


あ、タイムスタンプ が壊れている!
という驚きは、、かなわぬ夢ですね。。。


最後に
PC初心者に戻って


a.jpegファイル プロパティ表示で

-----------------------------------------
「作成日時  」2016年10月2日、 9:46:23
「更新日時  」2014年12月2日、10:33:26
「アクセス日時」2016年10月2日、 9:46:23
-----------------------------------------

と表示されている「a.jpegファイル」の
タイムスタンプ データは壊れていませんか?

YES 立派に正常です

●この表示でタイムスタンプ データが壊れているわけはありません
「結論」
タイムスタンプ データが壊れている
と思ったのは、単なる思い違いです。。。

で終わりですね。
PC初心者の疑問は。。。

もやもや続きますが、

Reply all
Reply to author
Forward
0 new messages