パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

HTL23 microSD 不調 その後(4)

microSDXC カードからのファイルの復活、新しい microSDXC カードの導入にえらく手間と時間を費やしている。現在残る問題は二つ。一つは、128GB の microSDXC カードなのに 64GB のパーティション一つしかなくて勿体ないこと。もう一つは、復活したファイルのタイムスタンプが、復活した(正確にはその後コピーした)日時になっていて悔しいこと。

ということで、今一度 microSDXC カードの中身を PC で HDD に吸い出して、パーティションを切り直して、書き戻すのと、タイムスタンプを修正する作業を行った。64GB パーティションになってしまったのは、Acronis TrueImage で、64GB の microSDXC カードのバックアップを取ってそのまま、128GB の方に書き戻したため。書き戻しの際にパーティションサイズをいじる選択肢も画面に出ていたような気がしなくもないが… 普通は、「ディスクの管理」や Aomei Partition Assistant とか使えば、パーティションサイズを大きくできるのだが、exFAT のせいか、メモリーカードなせいか、できず。一度外部にコピーするしか。まぁ、こちらは時間さえかければできる話。

問題は、ファイルスタンプの方。EaseUS DATA Recovery で復元したファイルやフォルダのタイムスタンプは、オリジナルのものが残っているので、それらのファイルをコピーすればいいのだが、すでに 128GB の microSDXC カードは、HTL23 で2~3日運用しており、なにかファイルが更新されていると、書き戻されても困し、ファイルのコピーは時間がかかる。ということで、タイムスタンプだけをコピーするツールを探したが、ドライブ全体を一気にやってくれるようなものは無さそう(1フォルダなら CopyTime というツールがある)。ということで、CygwinLinux なツールで対処した。

date -r でファイルのタイムスタンプを拾って、touch で対象のファイルのタイムスタンプを書き換える。find で、microSDXC の全ファイルに対して、復元したファイルからタイムスタンプを拾って、更新、という感じ。復元後、microSDXC カードに新たに作成されたファイルは、復元ファイル群には無いので、タイムスタンプはいじられず、逆に復元後削除したファイルも microSDXC カードに新たに作られてしまわないようにする。デバッグ等の都合上中間結果を一度ファイルに落としてみた。小生 awkシェルスクリプトを生成してそれを実行する、という余りスマートでない方法が結構好きで、今回もその流れ。
>||
find . -print| awk '{tt=$0;sub("^./","/cygdrive/h/",tt);print"date \"+%Y%m%d%H%M%S\" -r \047"tt"\047; echo \047"$0"\047"}' | sh -v 2>&1 > /cygdrive/c/Temp/datechangeLog.txt

awk '/^20|^19/{tmp=substr($1,1,12)"."substr($1,13,2);getline;tt=$0;sub("\ ./","/cygdrive/k/",tt);print"touch -t "tmp" \047"tt"\047 ; echo \047"$0"\047"};' /cygdrive/c/Temp/datechangeLog.txt 2>&1 | sh -v
||<
おおよそのファイルやフォルダのタイムスタンプを復活できたようだが、一部ファイル名の丸括弧が含まれているとうまく動かない感じ。仕方ないのかな。