スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windowsでシンボリックリンク(ln -s),fuser

Cドライブの空き容量が残り少ないとき、どうすればいいか?

一つの解決策として、アプリケーションのフォルダを、別のドライブに移動させるという手があります。

ただ、データを置く場所が決まっている事があります(iTunesとかそうですね)。

こんなときに役立つのが、シンボリックリンク。

Vistaから使えるようになったのですが、見かけ上は、Cドライブにフォルダがあるように見せかけて
実態は別のドライブに置く事ができます。

これをやると、Cドライブなどの空き容量も比較的簡単に復活させることができます。たぶん。

例えば、iTunesのバックアップファイルが、かなりの容量に膨らんでいてC:ドライブを圧迫している場合。

ハードディスクを買ってきてN:ドライブ(Newドライブ)として接続しました。

iTunesは、C:配下のフォルダを固定的に使っていて簡単に移動できない状態です。

ではどうするか・・・

  1. Hsnetwork製のDriveAnalyzer等のソフトを用いて、たくさん容量を食っているフォルダを調べます。
    今回は、
    "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync\Backup"
    というフォルダがターゲットです。
  2. 移動先を決めます。N:ドライブとします。
  3. 移動先のフォルダを作成します。
    コマンドプロンプトを管理者権限で実行します(メニューのコマンドプロンプト上で右クリックして『管理者として実行...』を選択)。
    mkdir n:\apple
  4. 次に移動するフォルダを、N:ドライブにコピーします。
    robocopy "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync" n:\apple /E /DCOPY:T /COPY:DAT /R:1 /W:1

    robocopy(ロボコピー)とは、たくましいコピーという意味で、オプションを付けることで多彩なコピーをしてくれます。今回は、配下のフォルダを深い階層まで辿って全部コピーさせます。
  5. コピーが完全に出来たかどうかを確認します。

    dir "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync\Backup" /s /a-d
    dir "N:\Apple\Backup" /s /a-d

    上記2つの行を実行したあと、ファイル数とバイト数が一番最下行に表示されるので比較します。同じならOKです。
  6. リンクを作ります。
    リンクを作る場所に行きます。

    cd /d "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync"

    次に、今のフォルダ名を変更してしまいます。

    ren Backup Backup.bak

    こうすることで一時的に "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync\Backup" というフォルダが無い状態になります。
    そこでリンクを作ります。

    mklink /D Backup N:\Apple\Backup

    これでリンクが作成できました。
    "C:\Users\who\AppData\Roaming\Apple Computer\MobileSync\Backup" というフルパスのフォルダも存在しています。

    これで、一度、iTunesを起動してちゃんと動く事を確認しましょう。

    問題が無ければ、リネーム(ren)したフォルダを消します。

    rm -r Backup.bak

    これでC:ドライブの空き容量もがっつり稼げます。




フォルダ名を変更しようとしたときに、
怒られる事があります。

理由はたいていは次のどれかです。

  1. コマンドプロンプトの現在のフォルダが、そのフォルダ自身である
     ⇒自分が存在している場所のフォルダ名を変更することは出来ません。
  2. エクスプローラーで開いているフォルダである
     ⇒コンピュータの中のプログラムが開いているフォルダ名を変更することは出来ません。
  3. IE等のダウンロード先に指定したフォルダである
     ⇒IE等のブラウザが、フォルダをロックしてしまうことがあります。


このような時は、開いているウィンドウを見て、余計なものを閉じていけばいいのですが、
まれに「全部閉じて、コマンドプロンプトの現在のフォルダも C:¥ とかにしているのにエラーが消えない」
ということがあります。

このとき、隠れたプログラムがそのフォルダを掴んでいる事があります。

Windows等のコンピュータでは、人知れず、見えないところでこっそりと働いているプログラム達が居ます。これらは、「サービス」等と呼ばれます(Unixではもう少しかっこよく「デーモン」と言われます)。
この「サービス」ですが、人間からは見えない、つまりウィンドウを持っていません。なので閉じて止めるということができません。
また、種類が沢山あって(買ったばっかりのWindowsパソコンでも10種類以上のサービスが動いています)、どれを止めたら良いのか判りません(止めてはいけないもの、止められないものもあるのです)。

というわけで、こっそり動いているサービスが、フォルダを掴んでいる事をどうやって調べるか?

これが、冒頭に書いた fuser (エフユーザ-)という解決方法です。

Unixでは、ファイルやフォルダを誰(プログラム)が掴んでいるかを調べるコマンドがありました。それが
fuser
です。
これを実行すると、プログラムが持っている番号(PID)を表示してくれます。PIDを使えば、どのデーモン(サービス)かが判るのです。

ではWindowsではどうでしょうか?
Windowsでは、fuserがありません。

では、どうするか?

Handle(sysinternalsへのリンク)という便利なプログラムがあります。

使い方は簡単。ダウンロードして解凍したら、handle.exeというのが出来るのでそれをコマンドプロンプトから呼び出すだけです。

実行すると


AppleMobileDeviceHelper.exe pid: 7248 minna-dietlinde\who
8: File (RW-) C:\Windows\System32
10: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
4C: File (RW-) C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18305_none_5cb72f2a088b0ed3
60: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
64: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
68: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
6C: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
70: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
74: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
78: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
7C: File (RW-) C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
90: File (RW-) C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18305_none_5cb72f2a088b0ed3


といった感じで表示します(administrator権限が必要です)。
プロセス(最初の AppleMobile・・・がそれ)が掴んでいるフォルダ名やファイル名を表示してくれます。

大量に表示されるので、

handle.exe > C:\WORK\HOGE.TxT
notepad C:\WORK\HOGE.TxT

等としてメモ帳(notepad.exe)で見て、プロセスを探します。
どんなプロセスか、にもよりますが、閉じたり、止めたりするサービス名を検討する材料にはなると思います。
スポンサーサイト

この記事のトラックバックURL

http://alphaiota.blog105.fc2.com/tb.php/500-895df4c4

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。