Home > Latest topics

Latest topics > robocopyがシンボリックリンクに捕まってしまってうまく動いてくれない→/XJDオプションでうまくいった

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

robocopyがシンボリックリンクに捕まってしまってうまく動いてくれない→/XJDオプションでうまくいった - Mar 09, 2009

robocopyでいけるかも、と書いたけど、全然駄目だった。ある程度まではうまくいくんだけど、途中からログに新しいディレクトリ 190 c:\Documents and Settings\ユーザ名\AppData\Local\Application Data\Application Data\Application Data\Application Data\Temp\Temp6_python24.zip\みたいに出て、再帰っていうか無限ループに陥ってしまう。

ていうかエクスプローラでCのルートとか見てもこんな名前のフォルダは存在しないのに!と思ったけど、「もしや」と思ってフォルダオプションで「保護されたオペレーティングシステムファイルを表示しない」のチェックを外してみたら、出現した。C:\Documents and Settings は C:\Users へのシンボリックリンクで、C:\Users\ユーザ名\AppData\Local\Application Data は C:\Users\ユーザ名\AppData\Local へのシンボリックリンク(Windows Vistaでは過去のアプリケーションとの互換性のためにシンボリックリンクを用意している、という話をそういえば過去に聞いたことがあった。隠しファイルになってるとは思ってもみなかった。)……ということで延々同じ所をスキャンしてたようだ。

検索してみたら似たようなトラブルが起こってるらしい人がいたけど、ちょっと現象が違うみたいで、あまり参考にならなかった……

なんとか回避できないものだろうかと思ってrobocopy /?でオプション一覧を眺めてたら、こんなオプションがあることに気付いた。

/XJD :: ディレクトリの接合ポイントを除外します。
/XJF :: ファイルの接合ポイントを除外します。

そういえばNTFSのシンボリックリンクは本当は「ジャンクション」って名前だってどっかで聞いたなあ、ということはXJDはExclude Junction Directoryの略だろうか? つまりシンボリックリンクを無視するオプションだったりするんだろうか?と思ったので、とりあえずこの2つを引数に加えてもう一度試してみてる。うまくいったらまたここに書くつもり。

……どうやらうまくいったみたいだ。さっきまで詰まってた所を通過して、これまでコピーされてなかったファイルのコピーが始まった。

ちなみに、使ったのはこんな感じの指定です。

robocopy /E /ZB /R:0 /LOG:z:\log.txt /XJD /XJF "c:\" "z:\c\"

あとは世代別バックアップの方法を考えないと。

追記。無事終わったぽ。現段階で170GB弱。4世代くらい取れるか?

バックアップA→バックアップB→バックアップC→バックアップAを差分更新(ミラーリング)→バックアップBを差分更新(ミラーリング) という感じで回していけば、全部丸ごとバックアップよりも負荷が少なく済みそうだけど……こういうのってどうやればいいんだろ。とりあえず現状既にCygwinのbash用シェルスクリプトにしてはいるので、ボチボチ考えよう。

追記。とりあえず形になったようだ。

分類:システム再構築, , 時刻:21:56 | Comments/Trackbacks (1) | Edit

Comments/Trackbacks

ちょっと違う

>そういえばNTFSのシンボリックリンクは本当は「ジャンクション」

正確には違う。振る舞いは同じになることがある。ジャンクションは主にボリュームに対する物。シンボリックリンクは主にフォルダーに対して。

UNIX系でのマウントとは、Windowsではジャンクション。UNIX,LINUX系では、mountコマンドが存在するが、Windowsでは無い(いや、あるが通常使われていない)。

http://answers.microsoft.com/ja-jp/windows/forum/windows_7-security/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE/7a4e3ddd-7892-4b46-88f3-c5ab6db1c932

この辺に簡単に説明がある。今は mklink で同じように扱っている。で、違いがよくわからない人が多い。わからなくて、いいのかもしれない。そうエンドユーザーは、シンボリックリンクとショートカットだけ使えばいいので。

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=Windows+%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%83%A0%E3%82%92%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89

この辺ならよくわかると思う

Commented by むらさめ at 2011/12/20 (Tue) 15:41:01

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-03-09_robocopy.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード