Linux Tips

2つのディレクトリを同期させるには(CUI編)

北浦訓行
2006/3/16

 2つのディレクトリを同期させるには(GUI編)で紹介したUnison(http://www.cis.upenn.edu/~bcpierce/unison/)は、コマンドラインでの操作も可能だ。

 まず、2つのディレクトリを同期させるには(GUI編)に挙げた方法でUnisonをインストールし、動作確認のためテスト用のディレクトリとファイルを作成する。

 a.tmpとb.tmpを同期する場合は、Unisonを以下のように起動する。

$ unison a.tmp b.tmp
Contacting server...
Looking for changes
  b
Reconciling changes

a.tmp          b.tmp
deleted  <-?-> changed    c  []

 同期するディレクトリにに違いがあると、処理方法入力待ち状態になる。上記の例では、左側がa.tmpの状態を、右側がb.tmpの状態を示しており、その下の行がファイル「c」に対する処理方法の入力待ちだ。「c」が削除されているか(deleted)、変更されているか(changed)を示していて、中央の「?」は推奨の処理方法が存在しないことを表している。

 削除する(a.tmpの状態を採用する)なら、左側を選択するので「<」(「,」でも可)を入力する。変更する(b.tmpの状態を採用するなら、「>」(「.」でも可)を入力する。すると、次の入力待ちになる。

a.tmp          b.tmp
deleted  ====> changed    c  [] > ←「>」を入力
         <---- new file   a  [f]

 これは、b.tmpのファイル「a」が新規作成されたことを示している。b.tmp/aをa.tmpに同期させるなら「<」を、そのままにするなら「>」を入力する。

a.tmp          b.tmp
deleted  ====> changed    c  [] > ←「>」を入力
         <---- new file   a  [f] ←[Enter]キーを押す
changed  ---->            d/h  [f]

 3番目は、a.tmp/d/hとb.tmp/d/hの内容が異なることを示している。変更の矢印は「→」になっているため、推奨の訂正ではa.tmp/d/hの内容がb.tmp/d/hに上書きされる。ここは、[<]キーを押して推奨と逆の処理を行った。

a.tmp          b.tmp
deleted  ====> changed    c  [] > ←「>」を入力
         <---- new file   a  [f] ←[Enter]キーを押す
changed  ---->            d/h  [f] ←「<」を入力

 なお、処理方法の入力に際しては、以下のコマンドを使用できる。

コマンド
意味
f Unisonの推奨に従う
I 処理の指定を行わない
E この拡張子のファイルは、常に処理の指定を行わない
N この名前のファイルは、この処理の最後まで指定を行わない
m マージする
d 違いを表示する
x 詳細な情報を表示する
l 全処理の一覧を表示する
pまたはb 前の処理指定に戻る
g 推奨の指定に従ってすぐに処理を行う
q 処理を中断してUnisonを終了する
/ 処理をスキップする
>または. 右の処理を行う
<または, 左の処理を行う

 処理方法の指定がすべて終了すると、以下のように指定を実行するか否かの確認が行われる。

Proceed with propagating updates? [] ←「y」を入力

 ここで指定できるオプションは以下のとおりだ。

コマンド
意味
yまたはg 指定した処理を実行する
n 再度指定を行う
q 処理を中断してUnisonを終了する

 「y」を入力すると処理が実行され、その結果が表示される。

UNISON started propagating changes at 07:36:03 on 13 Mar 2006
[BGN] Copying a
  from /home/nori/b.tmp
  to /home/nori/a.tmp
[END] Copying a
[BGN] Updating file d/h
  from /home/nori/b.tmp
  to /home/nori/a.tmp
[END] Updating file d/h
[BGN] Deleting c
  from /home/nori/b.tmp
[END] Deleting c
UNISON finished propagating changes at 07:36:03 on 13 Mar 2006


Saving synchronizer state
Synchronization complete  (3 items transferred, 0 skipped, 0 failures)

Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間