[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:10040] [Summary] How do we identify two directory-trees...
せっかくだから、これ、ちょっとまとめておきますね。
質問:
Directory treeを大規模にMigrate するときなど、2つのディレ
クトリについて再帰的に「同一であることの確認」を行ないたい
ことがある。どのような方法があるか。
解答:
1. ``tar -d''を利用して比較する。
mode, owner, filetypeなどの差異も検出できる。
(cd dir1 && tar -cf - .) | (cd dir2 && tar -df -)
tar -c -f - -C dir1 . | tar -d -f - -C dir2
-- 松本さん <shom@xxxxxxxxxxxxxxxxx> [debian-users:10005]
-- 菅谷さん <sugaya@xxxxxxxxxxxxxxxxxxxxx> [debian-users:10004]
2. diffによる比較。再帰比較オプションを指定する。
実用性十分。
diff -aNqr dir1 dir2
-- 中野さん <nakano@xxxxxxxxxxxxxxxx> [debian-users:10001]
3. tar にアーカイブを作らせてdiffで比較する。
USTAR フォーマットの仕様によっては検証できない情報がの
こるかな?
bashのProcess Substitutionを使っているところもTips.
diff <(cd dir1; tar -cf - .) <(cd dir2; tar -cf - .)
-- うえやまさん <rui@xxxxxxxxxxxxxxxx> [debian-users:10002]
4. tar にアーカイブを作らせてmd5sumを比較する。原理的には
3.と等価。
(cd dir1; tar -cf - . | md5sum; cd dir2; tar -cf - . | md5sum)
-- 岡さん <95i44@xxxxxxxxxxxxxxxx> [debian-users:10000 他多数 ;-)]
5. ファイル内容の同一性について厳密に比較する。
検証できる情報は制限されるが、md5sumさえあればプラット
フォームを選ばない。(下の例ではbashのProcess Substitution
を使ってますけど、中間ファイルを作れば問題無し)
diff \
<(cd dir1; find . -type f -exec md5sum {} \; | sort +1) \
<(cd dir2; find . -type f -exec md5sum {} \; | sort +1)
-- 石川さん <ishikawa@xxxxxxxxx> [debian-users:09999]
6. ディレクトリ構造の検証のみでかまわなければ、tbtreeが使
える。(Debianなら``tree''パッケージ)
-- 亀井さん <kamei@xxxxxxxxx>
[debian-users:09993], [debian-users:09997]
まだまだあるでしょうが、とりあえずのまとめでした。
#そういえば、``ls -alR'' な解答がなかったですね。
-.- . -. -.
Ken Nakagaki <kenn@xxxxxxxxxxxxxxxxx>, <Nakagaki@xxxxxxxxx>
「人は船ではない。人は会社ではない」-- Gerry Spence