RSSフィードNo.155 DiskMirroringTool タイムスタンプについて
   
日時:
2021/12/30 20:25
名前:
てぅ ID:dE8vep2A

ばぐ★NAGAさま

DiskMirroringTool Unicodeの作成ありがとうございます。
Unicodeに対応いただき重宝して使わせていただいております。

サポート掲示板はgoogleで見つけました。
(ホームからのリンクはかわかりませんでした。)

フォルダーやファイルのバックアップの際に、
タイムスタンプ(作成日時、更新日時、アクセス日時)を
マスター側に合致させるようにできないでしょうか。

動作設定でのタイムスタンプのオプションは、
・タイムスタンプの誤差対策を行う
・ファイルの作成日時もコピーする
・フォルダのタイムスタンプをコピーする
をチェックしています。


具体的な動作状況です。

(1) サブフォルダーありのフォルダーを空のフォルダにバック
アップした場合
 ファイルについては、サブフォルダー内のファイルも含めて
 タイムスタンプ(作成日時、更新日時、アクセス日時)
 が合致しますが、
 フォルダーはアクセス日時がバックアップ時になってしまう
ようです。
 アクセス日時もマスター側に合致するようにできないでしょ
 うか。

(2) 空ではなく、ファイルが存在するフォルダにバックアップ
 した場合
 ファイルサイズの違うものは更新されるのですが、この時、
 作成日時、更新日時はマスター側と合致しますが、アクセス
 日時がバックアップ時になってしまいます。
 また、サブフォルダーもアクセス日時がバックアップ時に
 なってしまいます。
 これらのアクセス日時もマスター側に合致するようにできない
 でしょうか。

(3) サブフォルダーの作成日時、更新日時、アクセス日時が
 マスター側と異なっていても検知してくれません。
 これらも検知してマスター側に合わせるようにできないで
 しょうか。

(4) ファイルのサイズが同じ場合、作成日時、アクセス日時が
 マスター側と異なっていも検知してくれません。
 これらも検知してマスター側に合わせるようにできないで
 しょうか。


 ご検討いただけたら幸いです。
 よろしくお願い致します。

メンテ
Page: 1 | 全部表示 スレッド一覧 新規スレッド作成
1 Re: DiskMirroringTool タイムスタンプについて
   
日時:
2022/01/03 19:23
名前:
ばぐ★NAGA ID:MH98yk9.

ご利用ありがとうございます。
ご要望いただきました件ですが、プログラムの動作を調べてみました。

動作設定の「ファイルの作成日時もコピーする」「フォルダのタイムスタンプをコピーする」を
ON にした場合、プログラム上は、「作成日時」「更新日時」「アクセス日時」のすべての項目に
オリジナルと同じ値を書き込んでいます。

ただ、ファイルやフォルダの「アクセス日時」は、Windows 自体がそのファイルやフォルダに
「アクセス」したときに更新しているようです。
予想にはなりますが、ご報告いただいた動作は、アプリ側でオリジナルと同じ日時で更新した後に、
Windows によって更新されてしまっているのかも知れません。

試しにエクスプローラで新規でフォルダを作成し、少し待ってからさらにサブフォルダを作成すると、
最初に作ったフォルダの「アクセス日時」も更新されてしまっていました。

Windows により更新されてしまうため、ご要望いただいた (1) (2) のアクセス日時のマスター側との合致に
ついては、難しいのではないかと思います。

以下の記事で「アクセス日時」の更新を無効にする設定ができるようなので、
もしかしたらこれを設定すれば合致するようになるかもしれません。
(すみませんが、私の方で試していないのでうまくいかなかったらすみません)

Windowsでファイルの最終アクセス日時の更新を無効にしてディスクへの書き込みを抑える
https://atmarkit.itmedia.co.jp/ait/articles/0908/07/news109.html

(3) (4) については、動作設定の「バックアップ」の中にある「同じ場合も上書き」を ON にすることで
すべてのファイルが更新されると思います。
ただし、更新されていないファイルも含めて更新されるので、バックアップに時間がかかります。

以上ですが、もし意図とちがう回答であればご指摘ください。

メンテ
2 Re: DiskMirroringTool タイムスタンプについて
   
日時:
2022/01/03 21:16
名前:
てぅ ID:ZuaaFruc

ばぐ★NAGAさま

コメントありがとうございます。
(3)(4)については、上書きで対応すればよいとのこと了解しました。


プログラム上は、「作成日時」「更新日時」「アクセス日時」のすべての項目に
オリジナルと同じ値を書き込んでいることをお教えいただきありがとうございます。

お教えいただきました、Windowsでファイルの最終アクセス日時の更新を無効にして
試してみました。


私の場合、
Windows10でのfsutil behavior query disablelastaccessの値は2 (システム管理、無効)
となっていましたが、これを3(システム管理、有効)(最終アクセス日時の更新をしない)
にして実施したところ、(1)(2)のタイムスタンプはずべて合致しました。

気づいていなかったのですが、(disablelastaccessの値が2の)元の状態では、
DMTUのテストを実行しただけで、マスター側のサブフォルダーのアクセス日時の
タイムスタンプが変更されることがわかりました。



DMTUが(テストや更新)動作を実行する前に、disablelastaccessを3に変更して、
終了したら元の値に戻すようすれば、(1)(2)の希望動作になるとわかりました。

disablelastaccess値の変更に管理者権限が必要なことから、DMTUに上述した機能を
追加することは難しいでしょうか?

メンテ
3 Re: DiskMirroringTool タイムスタンプについて
   
日時:
2022/01/03 23:09
名前:
ばぐ★NAGA ID:MH98yk9.

てぅさん

試していただいてありがとうございます。

disablelastaccess のコマンドを実行すれば希望の動作になるということですので、
そのコマンド用のバッチファイルを作成して、「フォルダ設定」の「コマンド」タブからバックアップ実行前と後に
そのバッチファイルを実行するように設定することで、希望の動作になるような気がします。
お手数ですが、試していただけますでしょうか。

管理者権限が必要なコマンドは、DMTU から実行する場合も DMTU 自体の起動時に管理者権限を与えて実行する必要がありますので、
DMTU の exe のショートカットを作成して、ショートカットのプロパティから「管理者として実行」のチェックを入れて実行することで、
上記のコマンド実行も管理者で実行することができると思います。

ご要望いただいた disablelastaccess の設定変更の機能追加ですが、OS 全体の動作の変更をアプリ側で行うこととなるため、
ファイルバックアップツールの機能領域をいささか超えてしまうと考えられます。
外部コマンドを呼び出すような形で実現可能と思われますので、上記方法で対応していただければと思います。

メンテ
4 Re: DiskMirroringTool タイムスタンプについて
   
日時:
2022/01/04 09:08
名前:
てぅ ID:WgKuCT9Y

ばぐ★NAGAさま


コメントありがとうございます。


下記バッチファイルを作成して、試してみました。
残念ながら、DMTUはバッチファイル実行前にアクセスしてしまうようで、
マスター側のサブフォルダーのアクセス日時が変更されてしまい、
その状態がバックアップ側にコピーされていました。
無効にするバッチファイルはDMTU起動前に実行しておく必要がありそうです。


最終アクセス日時更新無効.bat
----
@echo off

REM 管理者として実行されているかを判定
for /f "tokens=3 delims=\ " %%A in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%A
if not "%LEVEL%"=="High" (
REM Powershellを起動し、以降のコマンドを管理者権限で実行
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process \"%~f0\" -Verb runas"
exit
)

fsutil behavior set disableLastAccess 3
----

最終アクセス日時更新有効.bat
----
@echo off

REM 管理者として実行されているかを判定
for /f "tokens=3 delims=\ " %%A in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%A
if not "%LEVEL%"=="High" (
REM Powershellを起動し、以降のコマンドを管理者権限で実行
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process \"%~f0\" -Verb runas"
exit
)

fsutil behavior set disableLastAccess 2
----


いろいろ教えていただきありがとうございました。
対処の仕方がわかりましたので、いい方法を探してみます。

メンテ
Page: 1 | 全部表示 スレッド一覧 新規スレッド作成
題名 スレッドをトップへソート
名前
E-mail (非表示)
パスワード (記事メンテ時に使用)
投稿キー (投稿キーを入力してください)
コメント

   クッキー保存