cyber205の日記: 「重複削除+ファイル共有」な管理ツールないかな 7
なんだか重複ファイルの問題がかなりキてる今日このごろです。
これまでUndupとかの「重複ファイルを検索、削除するツール」を使っていたのだけど、
フリーで使える古いバージョンのUndupはVistaとかWin7にもってくると微妙に
ハングアップしてしまったり、いちいち消すファイルを指定するのが面倒だったりで
あんまり使い勝手が良くないのが悩みどころ。
フォルダごとコピーしたものは、フォルダごと消えてくれればいいのに。
いちいち、チマチマと中身のファイルを挙げてリストにしてくれて、
自分は消すファイルをいちいちクリックするという、これがなかなか苦痛です。
聞いた話によれば、将来はファイルシステムそのものに
重複ファイル検索と容量節減のためオリジナルのリンクへ
代替する機能が付くそうですが、現状ではそうなってないわけでして。
自分のように、再インストールなしにシステムディスクを幾つも
コピーしつつ乗り継いでみたり、再インストールでも完全に元の環境を
再現しないで、古いHDDから必要に応じて取ってくるようなズボラ運用を
していると、いつのまにかマシン内部はカオスなことになってしまうわけです。
さらに、管理するマシンが半ダースもあってそれぞれにパンパンにデータが
詰まってて重複もいっぱいある…みたいな環境だと、頭痛いですね。
実はpythonを使ってUNIX環境で重複ファイルを消し去る簡単なスクリプトは
既に公開されていて blog.fukutommy.comにアップロードされています。
重複ファイルを消すPythonスクリプト
しかし、これもUndupとかと比べるとかなり低機能です。
勝手にファイル移動しちゃうし、細かい指定ができなくて、あんまり使い勝手が良くない。
(多分使い捨てのスクリプトとして組んだのだろうしね)
追記するログとかから重複を除くデータ管理には使えるんでしょうが、
ファイルがあっちこっちに移動したり、時にはサーバ間で入れ替わったりする
実際のファイルサーバでは使いにくいわけで。
わがまま言っていいなら、
重複ファイルを削除するだけでなく、登録したサーバ間でファイルの転送が行えて、
欲しいファイルが検索からクリック一発でドン!とHDDに揃うようなのがいいですよね。
で、自分のマシンにデータが増えすぎてHDDがヤバくなったら、勝手に分散して保持してくれるとなお嬉しい。
使い勝手は、P2Pファイル共有システムをローカルに行うような感じで。
各サーバが自分のHDD内に何があるかSQLか何かのDBを構築していて、
リクエストがあるとファイル転送を行ってクライアントにもっていくわけです。
で、転送が成功したら自分のインデックスから消してしまう。
いや、消したフリをして実は「隠れバックアップ」にするほうがより有用かな。
そんなのが欲しいのだけど…誰も作ってないだろうなぁ。
これがあれば、無理にRAID組まなくても
簡単にLAN上にファイルサーバを追加登録するだけで記憶容量を拡張できそうなんですがね。
hardlink (スコア:1)
(ご存じかもしれませんが) UNIX/Linuxですと、hardlink コマンドで、重複ファイルをハードリンクにして容量を節約できますよ。
Re:hardlink (スコア:1)
cygwin を入れて ln コマンドを使うと、NTFSでもハードリンクが張れたかと思います。
重複を調べるには、まず全部のファイルのハッシュ値を取って(md5sum あたりでいいんでね?)、同じ値のファイルをまとめてそれらの間でファイルが同じイメージかどうかを cmp で調べて、同じだったら片方消してハードリンク張りなおすだけですので…
本気を出すと awk スクリプトで書けますね。普通は perl で書くでしょうが。
fjの教祖様
Re: (スコア:0)
Windows も7では、もしかしたら Vista から、標準コマンドでハードリンクが作れるようになってます。
#ああ、コマンド名を忘れてしまったわ
Re:hardlink (スコア:1)
fsutil hardlink create ?
http://www.atmarkit.co.jp/fwin2k/win2ktips/982hardlink/hardlink.html [atmarkit.co.jp]
fjの教祖様
Re:hardlink (スコア:1)
まさに、それをやってくれるのが、hardlink というコマンドです。
cygwin にもあるかもしれません。
Re:hardlink (スコア:2)
残念ながら、ハードリンクなんてできないような、独立したサーバ間にまたがって
多量のファイルが存在する状態で、それぞれGigabitのEthrnetでつながってるんです。
それに、リンクすら残さず削除していいんです。もう使わないようなディレクトリにある
重複したファイルは。ただ整理整頓して集め直してほしいんですね。
欲しいファイルをいちいち掘りに行くのが面倒なんで、きちんと名寄せというか、
まとめて保持してほしいわけです。そして、できれば、容量オーバーしそうな時は
最近使ってないファイルをまとめて、圧縮するなりDVDに焼くなり提案してほしい。
もちろん、圧縮したり焼いたりしてもハッシュはDBに残してあって、
ひょっこりHDDがみつかって接続した時に既に焼いてあるファイルが見つかったら
削除対象にできるといいですね、さらに便利だ。
こうすればなんでもファイルを放り込んでおけるし、サーバを追加すればスケーラブルに
増強できて、ズボラな人間にもそれなりに管理できるファイルシステムができそうな気がします。
あのフェンリルとかWinFSなんかの使い勝手を考えていて、
自分ならどんなのが欲しいかなと考えていて思いついたんですけどね。
自分の環境なら、Undup+Gnutellaみたいなファイル管理システムがあったら便利だろうなと。
もちろん、外部と接続できるようになっていると大変なことになるのでLAN上だけで使うわけですが。
Re:hardlink (スコア:1)
重複ファイルを消してよくて、なおかつ整理整頓のルールが明確なら、
「同じファイルはどれとどれ?」
と言う問題を解けばいいだけ。
というわけで「すべてのファイルについて md5sum を取り…(以下略)」で重複ファイルを見つけたら、「1つを残して」整理整頓すればよい。「整理整頓」のルール自体は自分で書けるでしょう??
ファイルの一覧? find コマンドじゃ駄目? (あ、Windows の find じゃなく、cygwin/unix 版の find の方ね)
fjの教祖様