none
フォルダーの属性やACLなどのみを別のフォルダーやリパースポイントへコピーする方法を知りたい。 RRS feed

  • 質問

  • マイクロソフト コミュニティで質問したらこちらのほうが向いていると誘導されて来ました。

    あるフォルダーとまったく同じ属性(R、H、S、A)、タイムスタンプ、ACL、監査設定および所有者情報を持った空フォルダーや

    ジャンクションやシンボリックリンクを作りたいのですが、そのための方法がわかりません。

    RoboCopyを使ってフォルダーaの属性などのみをフォルダーbにコピーしようとして、

    >robocopy "a" "b" /COPY:ATSOU

    としても、フォルダーb自身の属性は全く変化無しでした。また、XCopyを使って、

    >xcopy "a" "b" /E /C /I /G /H /R /K /Y /O /X

    とした場合、bが空フォルダーである必要がある場合はbの中身を後で全て消去しなければなりませんし、bがジャンクションや

    シンボリックリンクである場合はb自身の属性などは変化せずにそのターゲットフォルダーの方の属性などが変化します。

    Explorerでフォルダーのプロパティを目視で確認しながら設定するのは大変面倒な上、設定ミスの原因にもなるため大変

    困っています。

    目的の操作を行うためのサードパーティのアプリを探してみましたが見つかりませんでした。出来ればコマンドラインで

    バッチファイルなどから使える方法を探しています。

    2018年5月25日 11:54

すべての返信

  • チャブーンです。

    この件ですが、既存のファイルやフォルダーにアクセス許可だけを設定するには、icaclsコマンドを使います。このケースでは、icacls /save および /restoreオプションを使うとよいのではないでしょうか?

    詳細は、したのページを参考にしてください。

    http://www.atmarkit.co.jp/ait/articles/1006/18/news099.html


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2018年5月26日 7:24
  • 確かに、「ACLだけ」ならICaclsの/saveと/restoreで出来ます。しかし、それ以外の属性、タイムスタンプ、

    所有者、監査設定はやはり他のアプリを使うかExplorerで目視で手動で設定しなければなりません。その中で

    特に厄介なのが「監査設定」です。ACLと同様、手動で設定するのは非常に面倒で設定ミスのリスクがあります。

    RoboCopyのヘルプを見て、これは使えるかもと期待だけさせといて、実際に使ってみると属性などのコピーに

    対応しているのはファイルだけでフォルダーには未対応だったということに大変がっかりさせられました。

    それから、ICaclsには致命的な欠点があって、フォルダーのACLの保存は

    >icacls <フォルダー> /save <ACLファイル>

    とするが、ACLの復元は

    >icacls <フォルダーの親フォルダー> /restore <ACLファイル>

    としなければならないため、あるフォルダーのACLをドライブのルートフォルダーへコピーすることが

    出来ません。

    2018年5月26日 16:34
  • チャブーンです。

    時間が空いてしまい、すみません。が、しばらく続くと思います...

    率直に申し上げてですが、おっしゃるご希望である「特定ファイル情報のファイルインフォメーションすべてを無関係の別ファイルに割り当てたい」というところで、違和感を持っています。

    アクセス許可や監査設定は理解できますが、タイムスタンプは該当ファイルが「それ自身である」を表す情報であり、同じファイルのそれを引き継ぐ(コピー)、以外の伝達方法は基本的にありません。

    普通に考えた場合、移行先を先に構成してアクセス許可云々を設定するより、移行先は構成せず、robocopyのミラーモードで構成し、設定情報のすべてをコピーする、方法が適切です。タイムスタンプ等一部どうしても引き継げないものもあるでしょうが、それは実際にそう(ファイルをコピーし、別個体化したのだから)なので、仕方がない部分があると思います。

    エクスプローラからの誤操作が怖い、ということなら、コマンドに関してはコマンドプロンプト(ネイティブコマンド)にこだわらず、PowerShellを使ったプログラミングを検討した方がいいでしょう。プログラミングなら自分の思ったとおりの動きのソフトウェアを構成できますが、PowerShellはこれをスクリプトで実現してくれます。

    Windowsのコマンド挙動は、過去の経緯や、MSが持っているデザインモデルで仕様が決められていますので、その仕様が希望に合わないからといって、嘆いても意味がありません。一義的には「自分の希望に合ったプログラムを自分でこしらえる」がMSの考え方です。もうひとつは、仕様の変更を「フィードバック」によってMSに直接要望する、のいずれかになるという理解です。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2018年6月2日 2:49
  • 確かに、タイムスタンプのコピーまではちょっと過剰だと思いますね。

    監査設定はPowerShellのGet-ACl、Set-Aclコマンドレットで移植できそうです。現在、コマンドプロンプトやネイティブ標準アプリに限らず、WSHやWMI、PowerShellも総動員させてファイル情報のみを簡単なコマンドのみで移植する環境を構築中です。

    2018年6月3日 1:56