2014年11月12日水曜日

PC Robocopy でタイムスタンプを保持する 続編(注意点と応用)

先の投稿 PC Robocopy でタイムスタンプを保持する で、robocopy コマンドの便利さをご紹介しました。
ついでに、先の投稿で触れなかった、注意点 と 応用 について、書き記しておきます。
さらっと、流して簡単に書きますので、
こんな事もある レベルで ご覧下さい。


robocopy コマンドは、ふたつの Folder にあるファイルを対象に、
同期を取ったり(複製を維持する)、管理情報を書き換えたりします。
この時の、基本は ファイル名 です。
また、Server 運用を意識して 設計されている為、 制限要素が少なくなっています。

具体的に書きましょう。



1. パスの制限

通常の Client 環境では、Path (ドライブやフォルダ名の位置情報) と ファイル名を含めた長さに制限があります。
所謂、255 文字以下にしないと、OS がちゃんと処理出来ない という点ですね。
    厳密には、OS や FS (File System) ではなく、OS に付随するツール群が ですけれど。  また、255 にも諸説あり。
robocopy では、この制限を 越えて行けて しまいます。
ですから、あまり、深い階層に Folder を作らない様に して下さい。
他の作業時に、 ファイルへのアクセスが制限される事になります。


2. 名前で管理・実行している点

robocopy の実行の基本は、 ファイル名 です。
例えば、ふたつのメディア(SD カード等)に 、内容の違う、しかし、同一名のファイルが収納されているとしましょう。
言い換えれば、カメラの設定で、メディアを入れ替える毎に、同一フォルダに 0001 からファイルが作られる設定の場合ですね。
    Nkon で言えば、Compact は連番持越しが基本、一眼では上記の設定が標準。
この状況下で、同じ 複製先 Folder を指定して、robocopy を動かすと、
一枚目のメディアの情報が、二枚目の情報に、置き換わってしまいます。
同じ名前のファイルが既にあるので、実行時に、タイムスタンプを比較して、新しければ、更新してしまう訳です。
  
  保存のお勧めは、 メディア毎に Folder を作って収める事でしょうか。
  但し、転送先では、 メディア内の Root (最上位) にある DCIM の 親 Folder は不要です。
  とは言え、大抵の方は、既に、独自の命名規則で データ蓄積されているでしょうから、途中からの変更は難しい
  写真の Folder 構成は色々とあって、なかなか、難しいですね。
  唯、 言えるのは、 無闇に複製を作らない と オリジナルを大切に だと思っています。  編集加工目的では別ですよ。
  閲覧目的の複製の場合の、キーワードは 用途別にするなら 複製ではなく シンボリックリンク です。 (同一 PC 内)
  本題とは、掛け離れますので、この位で。
  本投稿の趣旨の robocopy での複製同期と 矛盾していると お思いかも知れませんが。  分る方は分る?
  以上、脱線。


3. メディアへの追加ファイルを更新

先の 複製先 Folder の問題に留意すれば、
メディアへのファイル追加は、全く同一の Command を実行すれば、追加更新が可能です。


4. 既に転送済みの Folder の管理情報の書き換え

robocopy には /timfix というオプションがあります。  /DCOPY:T /TIMFIX の双方を指定がお勧め。
これは、双方のファイルやフォルダで、時間(時刻)がらみの情報を複製する機能です。
オリジナルに手を加えていない状況下で、転送ソフトで 名前を変更せずに 転送した場合に生じる、
フォルダの作成日付のズレを訂正出来ます。
但し、元のメディアにデータが残っている場合ですが。
   (ファイル名を変えて転送していれば、これは、直せませんね。  また、更に、元の名で追加されちゃいます。  ご注意を。)


5. ファイル属性の変更。


robocopy には /A+: /A-: というオプションがあります。
: の後に、R とかの属性を指定すれば、 属性の値を変更出来ます。
   /A+:R ならば、ReadOnly 読み込み専用 ですね。
   /A-:R ならば、ReadOnly 読み込み専用 の解除 (読み書き 可能) ですね。


6. その他

対話式に コマンドプロンプト(cmd.exe) から、実行する場合には、あまり、関係ないと思いますが、
プログラムの中から robocopy のプロセスを呼び出したり、バッチジョブ で運用する場合、
ログファイルを残す事も出来ます。

また、定例の作業として、ジョブ として、登録する事も可能です。

高度な使い方として、シンボリックリンクを貼った場合の扱い方を指定出来たりもします。

この辺りになると、かなり、専門的でしょうから、 別途、お調べ下さい。



大体、以上が、robocopy を使う時の留意点です。
何分、大事なオリジナルファイルを操作する事になる訳ですから、
いきなり、 ほんちゃん運用 ではなく、
テスト用のフォルダなり、 ファイルなりで、 試されてからにして下さいね。
あ~、なくなっちゃたぁ~、 では、取り返しが付かない場合もあるでしょうから。

   本文中で、Folder と フォルダ がぐちゃぐちゃに出て来ていますね。 すみません。
                                              別に、意図はありません。 直せばいいのにね。
   どうも、Folder という言葉はしっくり来なくて。  昔ながらの Directory の方がしっくり来る ShiroYuki_Mot です。.



[2014/11/13] 前投稿の タイトル名 を リンク に変更

2 件のコメント:

  1. hoto_imuです。
    詳しい説明、ありがとうございます。help( /?)だけではなかなか理解できないものですから。
    私も、オリジナルは大切にしたいと思っています。
    話は少しそれますが、大切なdataを失わないように、HDDを複数台用意して、1台を閲覧と編集用、もう1台をオリジナルの保存用にして両方にcopy。保存用は、普段使わないようにするのがよいかと思っています。

    返信削除
    返信
    1. hoto_imu さま コメントありがとうございます。

      robocopy は、元々、server 運用 用の Utility ですから、分かり辛く奥が深いです。
      でも、便利なので、重宝しています。

      さて、運用に関しては、同感です。
      基本方針として、もう少し詳しく書けば、
      Original(Media)+Master(ReadOnly)+MasterMirror(ReadOnly)+OS_Mirror(VHD/ShadowCopy)+Opt.Media+ForWork(R&W) 。
      この様に、幾重にも、バックアップ体制をひいています。
      写真 Data は Users Folder には直置きしませんが、アクセス出来る様に工夫しています。
      理由は、 Users Folder は OS 不調時に、破壊の可能性がある為です。
      閲覧と編集は完全分離ですし、各 PC には、Master ひとつです。

       (この Blog にWHSのラベルがあるのも、写真の保存を考えて、ファイルサーバーとして運用したかったからです。)

      削除