robocopy

windows用のrobocoyっていうsyncできるコマンドを使ってデータを移し変えてみたいんですが、
ファイルのアクセス権限等も含めた全データをコピーする “/COPYALL”というオプションをつけても
アクセス権だけがコピーできない状態になりました。

http://support.microsoft.com/kb/973776/ja
このへんを見たりもしてたんですが、今回はadministrator権限でやっているので、
権限が足りないってことはない。全権限があるので、”/B”オプションは使わないので関係なし。

“robocopy アクセス権限 継承” とかでググッて、でてきたのは、これら。

http://upsilon.blog.shinobi.jp/Entry/202/
こちらは直接解決に結びつくことは書いてなかったけど、robocopyをやる際の
イメージがつかみやすく、今回検索で見つけた中で、一番いいサイトでした。

http://ja.w3support.net/index.php?db=sf&id=60908
こちらが問題解決の糸口になったサイト。
英語を翻訳ソフトで翻訳したような変な日本語なんですが、役にたったのはこの一文。
”その先のルートディレクトリには新しいファイルに、そのアクセス許可を継承するように設定していないことを確認します”

アクセス許可を継承するっていう設定があるってことがここでわかりました。
ということは、コピーした際に、アクセス許可を継承して、以前のアクセス許可が上書きされているのかなと思ったのです。

解決策としては、コピーするフォルダのプロパティのセキュリティタブを開いて、
下の方にある”詳細設定”をクリックし、開いた画面の”編集”をクリックします。
ここで出てきた画面の下に、”このオブジェクトの親からの継承可能なアクセス許可を含める”っていうチェックを外します。
これで、親フォルダの権限を引き継ぐことがなくなったはず!!

ってことで、再度robocopy実行します。オプションは以下。
実行したのは、administrator権限です。
administrator権限がないと、/COPYALL とかできなかったので。

>robocopy “移行元フォルダ” “移行先フォルダ” /E /COPYALL /DCOPY:T /SECFIX /TIMFIX /PURGE /R:0