トップ(最新) | <前 | 次>

nDiki : rsync

rsync

よく使うパターン

 # 基本
 rsync -av $src $dest

 # 同期先にしかないファイルは削除
 rsync -av --delete $src $dest

 # 同期先にしかないファイルは削除 (--exclude 指定してあるものも削除)
 rsync -av --delete-excluded --exclude '...' $src $dest

 # シンボリックリンクはその先のファイル実体にする
 rsync -avL $src $dest

 # 圧縮して転送する
 rsync -avz $src $dest

 # .svn/ を除外してコピーする
 rsync -av --delete-exclude --delete .svn/ $src $dest

src と dest の指定

 rsync -av /src/foo  /dest
 rsync -av /src/foo/ /dest/foo

関連情報

  • cwRsync
    • Cygwin 上で動く rsync を使うのに必要な最低限のファイルをパッケージングしたもの。
  • Unison
    • rsh/SSH/socket を利用した双方向ファイル同期化ツール。
  • lsyncd (live syncing (mirror) daemon)
    • inotify を使ってディレクトリツリーの変更を監視し、同期するデーモン。
  • SSH
  • バックアップ
  • rdiff-backup

web

スポンサード リンク

Related term

2003年10月24日 (金)

UnisonWindows 間 sync このエントリーを含むはてなブックマーク

デモンストレーション環境を複数の PC に設定するために、ファイルを同期する必要あり。 UNIX系なら rsyncWindows(共有ディレクトリ有)ならDirSyncを使っているのだが、今回は極力 OS の設定を変更したりしたくないので、前から気になっていた Unison を試してみる。 rsync が使い慣れているのだが、Cygwin は面倒だし。

SSHインストールするのも面倒なので socket モードで(安全ではないので注意)。 リモート側の Windows BOX の /usr/local ディレクトリをカレントディレクトリとして

 unison --socket 3456

ローカル側の /usr/local ディレクトリで

 unison targetdir socket://remotehost:3456/target

で sync。 (特にオプション指定がないと)何回か対話的に選択/確認の入力があるものの、すぐ慣れる。 ちょっとした用途には便利 (きちんと使えば多分もっと便利)

スポンサード リンク


[ 10月24日全て ]

2003年11月20日 (木)

www.naney.org のファイルを全て Unison で同期 このエントリーを含むはてなブックマーク

www.naney.org 上のコンテンツは、ローカルで一旦構築したファイル(ディレクトリ構造)を rsync で1方向に sync している。

@ しかし細かくみてみると

  • (L) ローカルで xml -> html し、サーバに送るファイル (html/ 以下のファイルなど)
  • (L) ローカル上で直接作成し、サーバに送るファイル (etc/ 以下のファイルなど)
  • (L) ローカルから定期的に送るファイル(webcamの画像など)
  • (S) サーバ上でインストールし、オリジナルがサーバにあるファイル (local/ 以下のファイルなど)
  • (L) サーバ上でインストール後、ローカルにコピーし改変して送るファイル(設定ファイルなど)
  • (S) サーバ上で生成されるファイル (Wikiデータベース、ログなど。var/ 以下)

とかなりかなり混在中。(L) はローカルにマスターがあるもの。(S) はサーバにマスターがあるもの。

できるだけ(L)と(S)を分離するようにはしているのだが(例えばサーバでインストールしたものの中で手元にコピーして編集したファイルは別ディレクトリにまとめておいて、サーバ上ではそちらへ symbolic link を張るとか)、これはこれで訳がわからなくなってしまう訳で。 rsync の実行も --exclude オプションがからみあい、--delete を付けられたり付けられなかったりとちょっとトリッキーな状態。

@ Unison で同期

日記システム関連の導入検討の前に、一旦ここら辺を整理し簡略化したい。 ということで、これからは Unison を使って www.naney.org とローカルを基本的に同期させてしまう事にした。

これならばどれがサーバオリジナルのファイルで、どれがローカルがオリジナルのファイルか迷わなくて済むようになると。

で、設定。ローカルの /usr/local/www.naney.org ディレクトリで同期させる事にする(ディレクトリ名は実際は違うところ)。 ローカルホストの ~/.unison/naneyorg.prf に

 times = true

 # Roots
 root = /usr/local/www.naney.org
 root = ssh://www.naney.org//home/naney

 # ignore backup
 ignore = Name *~
 ignore = Name .*~

 # ignore files
 ignore = Path .cpan
 ignore = Path .union
 ignore = Path var/log/access_log

 # hns
 ignore = Name referer_log
 ignore = Name referer_batta_log

と書く(ignore は一部抜粋。ディレクトリ等は実際は微妙に違う)。 で、

 unison naneyorg

で同期。 同期処理中に、(ログファイルなど)書き換わってしまうものがあるとそれを含むディレクトリの同期がごっそり abort させられるようなので、ignore を調整しつつ何回か実行して完全に同期をかける。

これで、ローカル・サーバどちらでファイルを書き換えてもOK。

rsync よりパスの指定が簡単だし(rsync はパス指定最後の / の有り・無しでの挙動の違いをいつも忘れてしまうので怖い)、なかなか使い勝手が良いかも。

ちなみにローカルで xml -> html しているファイル群だけは一旦別ディレクトリに生成してから、ローカルの www.naney.org 同期ディレクトリへ rsync で一方向 sync するようにしておいた(その後サーバと同期するという2段階処理)。

@ はまり所

最初 -times オプションを指定していなかったので、サーバからローカルへ同期したファイルの更新時刻が全て現在のものになってしまった。 後から -times オプションを指定して unison しなおすと、全部再同期しようとしてしまうようだ。 よくわからないので、一旦同期ディレクトリを消して全部取り直し。


[ 11月20日全て ]

2003年12月5日 (金)

[ Debian ] DynaBook SS -> X31 このエントリーを含むはてなブックマーク

作業中は、両方同時に使用する事になるのでホームディレクトリを Unison で同期。 DynaBook SSの方はメモリ192MBなのであるが、ホームディレクトリをまるごと転送するとスワッピング発生しまくりで、かなり遅い(それに加えて使用しているのが3C589なので10Base-Tだし)。 同期するファイル群の絶対的なファイル数はそれほどメモリ使用量には関係ないのかな。非同期になっているファイル数に応じてメモリを消費している感じ。-path で何回かに分割すれば良いようだ。

他、/etc、/usr/local、/var の下の一部、/home の下の一部を X31 の /usr/local/ss2 以下に rsync。 もともと DynaBook SS の /usr/local にはさらに前の Debian BOX の 退避ファイルを残してあるので、

 /usr/local
   |
   +- ss2
       |
       +- usr-local
           |
           +- ss
              |
              +- 2代前のDebianBOXの
                 /usr/localファイル

なんて事になっている。 そろそろあきらかに必要のないファイルを削除しないといかんな。

とにかく、ほぼ必要なファイルを転送終了。 qmailMew の設定が無事 X31 で動いたので、今日からこちらで作業する事にする。


[ 12月5日全て ]

2003年12月31日 (水)

私的10大ニュース2003 このエントリーを含むはてなブックマーク

今年の大事件、マイブームなど。

@ [web] WiKicker 公開

オリジナル WikiEngine 「WiKicker」を公開し、 www.naney.org での運用を開始。 機能追加、負荷軽減など定期的にメンテナンスを継続中。 今年も1年 Wiki の年だった。

12月からは WiKicker ベースの日記システムDiKicker」の開発も開始。

@ [comp] cool programs

@ [net] ADSLトラブル

モデム

春の数ヶ月間悩まされ続けた。 一度常時接続に慣れてしまうと、もう戻れない。 結局モデムの故障。 その間「@FreeD」も契約してみたが、ADSL復旧に合わせて解約。

P-in Free 1P

@ [comp] 適応型ソフトウェア開発

仕事でのソフトウェアプロジェクトでの適用を開始しはじめてみた。

@ [comp] ThinkPad X31 2672-PHJ

ThinkPad

3年ぶりのメインノート PC の買い換えPentium M 1.6GHz + 1GBメモリ。 また3年は頑張ってもらわないと。

@ [camera] TC-1GR1s修理

TC-1 GR1s

愛用のTC-1が故障したため修理修理費16,300円也

GR1s修理

新規に購入したのは、Ai Nikkor 45mm F2.8P(10月12日)、 F3接眼補助レンズドンケ F-2 ぐらい。 あまり散財しなかった。

接眼補助レンズ ドンケ F-2 Ai Nikkor 45mm F2.8P

今年は撮影枚数が伸びず。

近所のミニラボが閉店したのも痛い。

@ [misc] レザークラフト

昨年買ったままだったレザークラフトセットを使ってレザークラフトを始めた。 パスケース、LEDフラッシュライトケース x 2、ツールナイフケース x 2、露出計ケース などを製作。 最近は何も作ってないな。 また何か作りたい。

LEATHERMAN MICRA 革ケース ツインメイトカバー SureFire エクゼクティブ・エリート E1e + KL1 レザーケース マグライト ソリテールケース Leatherman juice S2 レザーケース Arc-LS 用レザーケース

@ [misc] LEDフラッシュライト

LEDフラッシュライトに興味を持つ。 SureFire E1e + KL1ARC-AAAArc LSL-P などを購入。

SureFire E1E-HA Arc-AAA Arc LSL-P


[ 12月31日全て ]

2004年1月4日 (日)

[ Debian ] pdumpfsバックアップ このエントリーを含むはてなブックマーク

先日買ってきた外付けHDDに前から使ってみたかった pdumpfsバックアップ

小宮健氏の pdumpfs-exclusion-0.6.patch-5 済み deb パッケージを使用して以下の通り。

 #!/bin/sh

 BACKUPBASEDIR=/mnt/backup/001

 BACKUPDIR=$BACKUPBASEDIR/home
 mkdir -p $BACKUPDIR
 pdumpfs --exclude .galeon/mozilla/galeon/Cache \
         --exclude Mail/trash \
         /home $BACKUPDIR \
         >$BACKUPDIR/log \
         2>$BACKUPDIR/error-log

 BACKUPDIR=$BACKUPBASEDIR/etc
 mkdir -p $BACKUPDIR
 pdumpfs /etc $BACKUPDIR \
         >$BACKUPDIR/log \
         2>$BACKUPDIR/error-log

 BACKUPDIR=$BACKUPBASEDIR/var-spool
 mkdir -p $BACKUPDIR
 pdumpfs --exclude squid/ \
         --exclude texmf/ \
         /var/spool $BACKUPDIR \
         >$BACKUPDIR/log \
         2>$BACKUPDIR/error-log

/etc と /var/spool は以前からバックアップしていたから今回もそのようにしてみたけど、さすがに /var/spool は今まで通り rsync で充分かも。


[ 1月4日全て ]

2004年2月1日 (日)

過去の今ごろ このエントリーを含むはてなブックマーク

過去の2月1日より。


[ 2月1日全て ]

2004年6月7日 (月)

Unison展示会機器のセットアップ このエントリーを含むはてなブックマーク

来週の展示会の準備として、数台のWindows BOXにソフトウェアやらデータやらをセットアップ。 まだ確定していないデータなどもあるので、こまめに同期する必要あり。

ということで USB メモリ

  • unison.exe
  • ブートストラップバッチファイル
    • 共通ディレクトリ作成バッチファイル
    • USB メモリと共通ディレクトリのbinを同期させるための Unison 実行バッチファイル
    • 共通ディレクトリをUnisonで同期するためのバッチファイル (クライアント用と daemon 用)

を書き込む。

1台目(マスター):

  1. ブートストラップ関連を USB メモリから共通ディレクトリへ
  2. 共通ディレクトリ下にデータをセットアップ
  3. ブートストラップ関連の変更があれば、共通ディレクトリから USB メモリへ同期

2台目以降:

  1. ブートストラップ関連を USB メモリから共通ディレクトリへ
  2. マスターPCと同期

後はどっかで変更したら適宜同期。

Unisonインストール不要で exe 1個で動くのでこういう時に便利。 Windows だと -fastcheck true にしないとかなり遅いので注意。

時限的な作業で sshd を入れるのもなんなので Unison の Socket メソッドを使っているのだが、この方法だとまったく認証が無いのでちょっと気持ち悪い。 Socket モードでも rsync 程度の認証機能ぐらいは欲しい。


[ 6月7日全て ]

2004年6月11日 (金)

Unison + Zebedee このエントリーを含むはてなブックマーク

記事「Unison で展示会機器のセットアップ」に、

wtnabe 2004-06-10 15:51:09 rsync もまともな認証とは呼べないような気がしますが。。。同じことをするなら tcpwrapper を使うって形になるんでしょうけど、Zebedee などで認証を掛けるともっと融通が利いてなおかつセキュアなんじゃないでしょうか。

という貴重なコメントをいただく。

Zebedee 最近使ってなかったな。ホスティングサーバ(FreeBSD)がSSH接続を提供してくれていなかった時は、Linux BOX からZebedee 経由で telnet したりmirror したりしていた。

ちなみに今回の用途では、通信路の暗号化はあまり重視していない(社内ネットワークで、対象ファイルはもともと皆が閲覧できるものだし、端末の前にも座れるから)。

@ Unison Soket メソッドでのサーバ側の問題

  • 認証なし
  • 接続ホストによるアクセスコントロール不可
  • 同期対象となるローカルファイルの制限不可。

というのが問題。

c:ドライブ全体(だけでなく全てのドライブ)をパスワード無しで「読み書き可能なWindowsファイル共有」しているような感じであり、気持ち悪い。

@ rsync サーバの認証

  • パスワード認証。平文では流れない。パスワードファイルは自体は平文で管理。
  • 接続ホストによるアクセスコントロール可。
  • 同期対象となるローカルファイル/ディレクトリは指定される。

平文でパスワードが流れることはないし、Unison でもこれぐらいの認証ができれば今回の用途では充分という感じ。

@ Unison + Zebedee

Windows 同士だと結局一方は Unison を Socket メソッドで起動しなければならない。 そのポートへは認証有のZebedeeトンネルで接続するとして、外部からは直接アクセスできないようにしなければならないので面倒。

Zebedee 自体はナイスなプログラムではあるのだが、Unison と組み合わせには使えないかな。 普段使いには Unison + SSH だし。

@ Windows

本家に Windows 版もあるのか。 インストーラの形になっているがインストールされる zebedee.exe は単体でも動く。 Unison との連携は別にしても、入れておいて損はないのでこれもUSBメモリにいれておこう。


[ 6月11日全て ]

2004年7月31日 (土)

cwRsync このエントリーを含むはてなブックマーク

Windows でのファイルの同期には Unison を使ったりしているのだが双方向むけのものなので、目的によっては向かない事もある。

やっぱり rsync も使いたい。かといって Cygwinインストールするのも面倒だし。

で探してみたところ cwRsync というのを発見。 これも Cygwin 上で動くものなのだが、rsync, ssh, ssh-keygen と cygwin1.dll 等必要最低限のDLL だけがパッケージされていて気軽にインストールできるようになっている。

exe 1個で済む Unison ほど扱いやすくはないが、Cygwin を1から入れるよりはずっと楽。

 daemon-mode protocol:
 rsync -rv rsync://rsync.samba.org/ftp/unpacked/rsync/ .

 ローカル:
 rsync -rv /usr/local/aaa .

 ローカル(ドライブ指定):
 rsync -rv /cygdrive/c/usr/local/aaa .

 リモート:
 rsync -e ssh -v www.example.com:/home/naney/a.txt .

などの動作を確認。ファイル共有しているリモートファイルのUNCによる指定はうまくいかない(Cygwin ではどうやって指定する?)が、ネットワークドライブ割り当てをすればアクセスできる。


[ 7月31日全て ]

2004年8月21日 (土)

rsync の --copy-unsafe-links このエントリーを含むはてなブックマーク

man ページを見ると「コピーツリーの外へのシンボリックリンクのみ実体に置き換え、ツリー内でのリンクはそのまま維持」してくれるようなのだが、どうも期待した動作と違う。 '-l' と一緒に指定すると全てシンボリックリンクのままで、-L と一緒に指定すると全て実体に置き換えられてしまう。

ActivePerl を使用する各プロジェクト毎のPPM リポジトリを、必要とするPPM パッケージについて「ビルド済み/ダウンロード済みPPM パッケージの pool」へシンボリックリンクする事で実現している(というのを今作っている)。 ここでいくつかのプロジェクト分のPPM リポジトリを、必要な実体を無駄なくそろえて export するのに rsync が使えないかと思ったわけだが、現状だと重複して実体がコピーされてしまう。 まあディスク容量はそれほどネックではないから、これでもいいか。


[ 8月21日全て ]

スポンサード リンク

■よく検索されるキーワード

perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 15.193736s / load averages: 0.15, 0.23, 0.31
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)