ディレクトリをマージする dirmerge コマンド 作成 小金丸信幸 E-Mail: kogane@koganemaru.co.jp 作成日 平成15年(2003年)07月13日 (日) 1. はじめに 2つのディレクトリをマージするコマンドはいろいろ存在します。例えば、 fj.sources に投稿された、"syncdir 1.8 - Synchronize two directorys' hierarchies"、 syncdir.perl(参照 http://namazu.org/~tsuchiya/perl/syncdir.perl)、 syncdir(参照 http://oikaze.com/~tamada/Products/syncdir/) などです。し かし、時間の新しいものだけを残したり、存在しないファイルのみマージする などです。 時間の新しいもののみ残してマージすると、いずれか一方でのみ存在していた、 時間は古いが重要な変更が失われる可能性があります。 新しいく作成した、ここで説明する dirmerge コマンドは途中の版のファイル も残してディレクトリをマージします。時間順にマージされたファイルは .01, .02 または .v01, .v02 というサフィックスを付けてマージされます。 従って、時間順で途中のファイルなどが失われることがありません。 2. 説明 2つのディレクトリをマージします。ファイル名の版数は .01, .02, .03 や V01, V02, V03 や v01, v02, v03 等のサフィックスが付いているものとしま す。-o オプションを指定すれば .Orig, .orig, .org, .old というサフック スのあるファイルもマージ対象となります。 マージ後のファイルはオプションに従って .01, .02 または .V01, .V02 また は .v01, .v02 というサフィックスを付けられます。 2つのディレクトリ下にサブディレクトリがあれば、それらもマージの対象と なります。 内容が同じファイルで、ファイル作成時間が異なる場合は古い時間に合わせま す。 3. 使用法 使用法: dirmerge [-abcv] [-o] dir1 dir2 [dir3] -a .01, .02, .03 形式のサフィックスに振り直します。 -b .V01, .V02, .V03 形式のサフィックスに振り直します。 -c .v01, .v02, .v03 形式のサフィックスに振り直します。 -v 処理しているファイル名を表示します。 -o .Orig, .orig, .org, .old もマージの対象にします。 dir3 の指定があれば、dir1 と dir2 をマージして dir3 に出力します。 dir1、dir2 のみなら、dir1 と dir2 をそれぞれ同じになるようにマージ します。 3. 制限事項 シンボリックリンクファイルやデバイスファイルなどレギュラーファイル以外 はマージの対象になりません。 シンボリックリンクファイルやデバイスファイルなど、マージ対象となる名前 に含まれるファイルが存在する場合はマージが誤動作する可能性があります。 本コマンドを使って重要なファイルが失われるなど、障害が生じても作者は責 任を負いません。心配な場合は必ずバックアップを取ってから実行してくださ い。 4. その他 本コマンドは最初 C 言語で作成し始めましたが、途中で挫折しました。その 後 perl を学習し、perl で作成しました。perl は学習したばかりなので、も っとこうしたほうがよいなどありましたら、作者まで御連絡ください。 5. 改版履歴 01 版 作成日 平成15年(2003年)07月13日 (日) 以上. -- Copyright (C) 2003 (有)小金丸コンピュータエンジニアリングサービス Copyright (C) 2003, N. Koganemaru