トップ(最新) | <前

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

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日全て ]

2004年9月3日 (金)

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

以前cwRsyncを試した時の記事に今井さんからコメントをいただいた。

cwRsyncの場合、UNC パスは「\」を「/」に読み替えれば使えますよ。 例えば、「\\remote\share\dir1」は「//remote/share/dir1」となります。

ということなので早速試してみる。 ほんとだ。

Unison共有フォルダ内での renaming で Permission denied を出して失敗するので、ちょっと遅くなるけどやっぱり rsyncミラーするようにしよう。


[ 9月3日全て ]

2004年9月20日 (月)

Linux kernel 2.6.8 + MADWIFI このエントリーを含むはてなブックマーク

SourceForge.netCVSサーバが復旧したようなので、早速 MADWIFI ドライバをビルドする。

@ debパッケージ化

してみる。/etc/apt/sources.list に

 # madwifi
 # http://www.marlow.dk/site.php/tech/madwifi
 deb-src ftp://debian.marlow.dk/ sid madwifi

を追加して

 su
 apt-get update
 apt-get build-dep madwifi

として必要なモジュールをインストール

次に MADWIFI の source パッケージとツールの deb を作成しインストール

 mkdir /tmp/madwifi
 cd /tmp/madwifi
 apt-get source madwifi
 cd madwifi-1.4
 fakeroot dpkg-buildpackage
 su
 dpkg -i madwifi-source_20040920_all.deb
 dpkg -i madwifi-tools_20040920_i386.deb

9月17日に kernel をビルドしたソースツリーで madwifi をビルドする。 kernel 2.6.8 用の MADWIFI 非公式パッチもあてておく。

 cd /tmp
 wget http://users.informatik.haw-hamburg.de/~gropp_v/madwifi-2.6.8_and_-mm-040821.patch.bz2
 bunzip2 madwifi-2.6.8_and_-mm-040821.patch.bz2
 cd /usr/local/src/linux
 tar zxvf /usr/src/madwifi.tar.gz
 cd modules/madwifi
 patch -p1 < /tmp/madwifi-2.6.8_and_-mm-040821.patch
 cd /usr/local/src/linux/kernel-source-2.6.8
 $MODULE_LOC=/usr/local/src/linux/modules
 fakeroot make-kpkg --added-modules madwifi modules_image

失敗。パッケージ構築時にこけている感じ。

@ ということで普通にビルド

 cd /tmp
 wget http://users.informatik.haw-hamburg.de/~gropp_v/madwifi-2.6.8_and_-mm-040821.patch.bz2
 bunzip2 madwifi-2.6.8_and_-mm-040821.patch.bz2
 cd /usr/local/src/sf
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi
 cd madwifi
 patch -p1 < /tmp/madwifi-2.6.8_and_-mm-040821.patch
 make
 su
 make install
 modprobe -a ath_pci

ThinkPad X31無線 LAN LED も点灯するようになった。

@ 大きなファイルの転送は駄目

RTSを設定してみたりもしたが、駄目。 Webを普通に巡回する程度なら問題ないが、POP3 や rsync などは駄目。


[ 9月20日全て ]

2005年4月2日 (土)

DAR で差分/増分バックアップ このエントリーを含むはてなブックマーク

普段使っているノート PCpdumpfsバックアップをとっている。 任意のスナップショットから簡単にファイルを復元できるので、バックアップHDDを別に用意できる場合はこれが便利。

@ 問題1

会社で使っている Windows デスクトップは、rsyncWindowsファイルサーバへ同期。 1世代しかバックアップが無い。 少なくとも数世代前のファイルが復元できるようにしておきたい。

@ 問題2

Linux サーバはバックアップ無し! マズイ。 現状、たまに手動で tarball にして保存しているぐらい。

@ DAR

DAR というバックアップコマンドの紹介を見て興味をひかれた。 シンプルながらも使い勝手の良さそう。 Linux でも Windows でも動くというのも嬉しい。

@ DAR を使ってみる

Linux 上で試してみる。

@ テスト用ディレクトリを作成

/tmp の下にテスト用ディレクトリ dar を作成。 その下に home ディレクトリと var ディレクトリを作成する。

 mkdir -p /tmp/dar/home/naney
 mkdir -p /tmp/dar/var/lib/dar
 echo 'abc' > /tmp/dar/home/naney/file1.txt

/tmp/dar/home 以下バックアップ対象として /tmp/dar/var/lib/dar 以下にバックアップファイルを作成してみることにする。

@ フルバックアップ

最初はフルバックアップ:

 dar -c /tmp/dar/var/lib/dar/home-full \
     -y9 \
     -R /tmp/dar \
     home

/tmp/dar/home をフルバックアップした home-full.1.1.dar が /tmp/dar/var/lib/dar にできる。

@ 差分バックアップ(1回目)

ファイルを1つ追加。

 echo 'def' > /tmp/dar/home/naney/file2.txt

ここで差分バックアップをとる:

 dar -c /tmp/dar/var/lib/dar/home-diff-1 \
     -A /tmp/dar/var/lib/dar/home-full \
     -y9 \
     -R /tmp/dar \
     home

home-full.1.dar に対する差分バックアップファイル home-diff-1.1.dar ができる。

@ 差分バックアップ(2回目)および増分バックアップ

もう1つファイルを追加。それから最初にあったファイルを削除してみる。

 echo 'ghi' > /tmp/dar/home/naney/file3.txt
 rm /tmp/dar/home/naney/file1.txt

ここで差分バックアップ(2回目):

 dar -c /tmp/dar/var/lib/dar/home-diff-2 \
     -A /tmp/dar/var/lib/dar/home-full \
     -y9 \
     -R /tmp/dar \
     home

home-full.1.dar に対する差分バックアップファイル home-diff-1.2.dar ができる。

またインクリメンタルバックアップもとってみる dar -c /tmp/dar/var/lib/dar/home-inc-2 \

    -A /tmp/dar/var/lib/dar/home-diff-1 \
    -y9 \
    -R /tmp/dar \
    home

差分バックアップファイル home-diff-1.1.dar に対する差分バックアップファイル home-diff-2.1.dar ができる。

@ フルバックアップからの復元
 dar -x /tmp/dar/var/lib/dar/home-full

を実行。

 home/naney/file1.txt

が復元される。

@ フルバックアップ+差分1回目からの復元
 dar -x /tmp/dar/var/lib/dar/home-full
 dar -x /tmp/dar/var/lib/dar/home-diff-1

を実行。

 home/naney/file1.txt
 home/naney/file2.txt

が復元される。

@ フルバックアップ+差分2回目からの復元
 dar -x /tmp/dar/var/lib/dar/home-full
 dar -x /tmp/dar/var/lib/dar/home-diff-2

を実行。

 home/naney/file2.txt
 home/naney/file3.txt

が復元される。

@ フルバックアップ+増分1回目(=差分1回目)+増分2回目からの復元
 dar -x /tmp/dar/var/lib/dar/home-full
 dar -x /tmp/dar/var/lib/dar/home-diff-1
 dar -x /tmp/dar/var/lib/dar/home-inc-2

を実行。

 home/naney/file2.txt
 home/naney/file3.txt

が復元される。

@ 運用するには

などが必要か。 エラー処理まで含めると結構面倒くさいな。 Perlあたりでまずは簡単なスクリプトを用意するか。


[ 4月2日全て ]

2006年7月3日 (月)

自前 PPM リポジトリの管理 このエントリーを含むはてなブックマーク

Windows Perl アプリケーション用に PPM リポジトリを久しぶりに整理。

自分が使用する PPM パッケージは以下の理由から、以前より基本的に自前でビルド/保存し PPM リポジトリをローカルに作成するようにしている。

  1. 後でオフラインインストールできるようにする。
  2. 「公開リポジトリが無くなった」あるいは「公開リポジトリに欲しいパッケージが無くなった」時に困らないようにする。
  3. 動作確認された組み合わせでの PPM パッケージセットを作成・保持できるようにする。
  4. ライセンス的にクリアなものだけを含むリポジトリを用意する。 (芋蔓式インストールで、ライセンス的にクリアでないパッケージが入ってしまうのを防ぐ)。

@ 手元では以下のように管理

 PPM
  |-- <category>
  |   `-- 8xx
  |       |-- <projects A> [ 公開 / export ]
  |       |   |-- module1.ppd -> (A)
  |       |   |-- module1.tar.gz -> (B)
  |       |   `-- ...
  |       `-- ...
  `-- pool
      |-- module1-x.yy
      |   |-- module1.x.yy.tar.gz
      |   |-- some documents...
      |   `-- build817
      |       |-- module1.ppd (A)
      |       `-- module1.tar.gz (B)
      `-- ...
@ pool
  • pool ディレクトリに「[モジュール]-[バージョン]」ディレクトリを作成する。同じバージョンでも、異なるバージョンは両方とも別々にキープしておく。
  • その下にソース tarball を置く。
  • ライセンス情報ファイルなども置く (touch Perl-License 等空のファイルを作成しておく)
  • PPM パッケージPPM::Make で作成し、その時に使用した ActivePerlビルド番号別にサブディレクトリを作って .tar.gz と .ppd を置く。
@ リポジトリ
  • ActivePerlビルド番号別にリポジトリを作成する。基本的には 6xx 系、8xx 系それぞれの中ではバイナリ互換性がある (PAR などは、ビルド番号に1対1でしか互換性がない)。
  • 必要に応じてカテゴリ別サブディレクトリを用意 (アクセス制限の都合などにより)
  • 必要に応じてプロジェクト毎にサブディレクトリを用意 (プロジェクト毎にパッケージセットを作るため)
  • リポジトリディレクトリからは pool 内の .ppd、.tar.gz へシンボリックリンクを張る。欲しいモジュールのバージョン、ビルド番号を選んでリンクする。
@ 公開
  • SambaApache などで、PPM ディレクトリ全部あるいは特定のリポジトリ部分を公開する。
  • 必要なら export して別サーバに置く。rsync や cp の -L オプションでシンボリックリンクを実ファイルに置き換えてアーカイブを作成する。

[ 7月3日全て ]

2007年1月8日 (月)

iCalendar 形式経由でスケジュールを社内 Blog に表示 このエントリーを含むはてなブックマーク

仕事用に Skype 名を作成し、ついでに社内 BlogSkype ボタンを貼りつけてログイン状態を表示できるようにしてみた。

そういえば電話もそうなんだけれど、本社に連絡を取るとき「もしかして会議中?」などと勘繰ってかけるかどうか迷ってしまうことがある。 かけたい人の予定がわかればいいのになと。

ならば逆もしかりだろうということで、自分の仕事のスケジュールを晒してみようと思いついた。 グループウェアとかそういうのは大袈裟なので、まずは社内 Blogサイドバーに表示するようにしたい。

ということでこの3連休に実装してみた。

@ 構成

@ 入力

完全なスケジュールはほぼ日手帳に手書きで管理しているので、ミーティング・外出など晒しカテゴリのイベントだけを、電子化する必要がある。 手で HTML 毎回ごりごり書き直すのも嫌なので、スケジュール管理ソフトを使いたい。 この部分は KDE の KOrganizer を使うことにした。

@ サーバへアップロード

で、KOrganizer のスケジュールを iCalendar 形式でエクスポート。 このファイルを社内 Blog を配信しているサーバに rsync で転送。

この処理はちょっと手間なので自動化したいところ。

@ 社内 Blog 内表示用 JavaScript Include ファイル生成 CGI プログラム

この iCalendar 形式ファイルを読み込んで、今日以降の10件(程度)を HTML フラグメントに変換し JavaScript プログラム (document.write() 列) として出力する Perl CGI プログラムを作成。

iCalendar の形式の読み込みについては Data::ICal や iCal::Paraser などの Perl モジュールを利用できる。 今回はシンプルに使えそうな iCal::Parser をチョイス。 基本的には

 use iCal::Parser;
 my $parser = iCal::Parser->new;
 my $calendar = $parser->parse($ics_file_name);

で読み込んだデータがハッシュリファレンスとして $calendar に設定される。 イベントは $calendar->{2007}->{01}->{01}->{$uid} のように「年、月、日、イベントUID」のハッシュ階層として格納されているので、これを読み出せばよい。

@ 社内 Blog サイドバーに表示

で、この CGI プログラムが生成する JavaScript プログラムをサイドバーJavaScript Include

まずは表示までできるようになった。

これで

をまとめて公開できる社内 Blog にアップグレード。

おいおいスケジュールの表示デザインとかは改良していきたい。 hCalendar 形式にして CSS でデザインするのがいいのかな。


[ 1月8日全て ]

2008年6月11日 (水)

今日のさえずり - スポーツの制裁金ってどこにいくのだ? このエントリーを含むはてなブックマーク


[ 6月11日全て ]

Related web page

rsync 対処方法 - たかみちえの開発日誌
耳寄りな情報を見つけたので、平日の朝にもかかわらずサーバをいじる &gt;http://www.naney.org/diki/d/2006-02-25-TCP-Window-Scale.html:title=nDiki: 大きいファイルの転送が止まってしまうのは TCP Window Scale... (2006-02-25)&gt; tcp_window_scaling はまだ存在するので、 echo 0 &gt; /proc/sys/net/ipv4/tcp_window_scaling してみる。 ちょうど1. ...
http://d.hatena.ne.jp/TakamiChie/20071227/1198708166
I should be so lucky.
gzip --rsyncable
http://www.daionet.gr.jp/~knok/diary/?200602a&to=200602092#200602092
vimrc diary / 2005-11 Bontmia - rsync + pdumpfsのようなバックアップツール
pdumpfsのようなハードリンクを使ったバックアップができる。また、最近1週間分だけ残すとか、1か月おきに残しておくなどという事ができる。多分、これがあればもう他のバックアップツールは要らないだろう。http://folk.uio.no/johnen/bontmia/
http://vimrc.hp.infoseek.co.jp/diary/2005-11.html#2005-11-15-1
窓の杜 - 【NEWS】米MS、“PowerToys”の新作となるフォルダ同期ソフト「SyncToy」Beta版を公開
cwRsync 使わなくてよくなるかな?
http://www.forest.impress.co.jp/article/2005/08/04/synctoybeta.html
nDiki: rsync - DAR で差分/増分バックアップ (2005-04-02)
mkdir /tmp/madwifi cd /tmp/madwifi apt-get source madwifi cd madwifi-1.4 fakeroot dpkg-buildpackage su dpkg -i madwifi-source_20040920_all.deb dpkg -i madwifi-tools_20040920_i386.deb 9月17日にkernelをビルドしたソースツリーで madwifi をビルドする。 Kernel 2.6.8 用のMADWIFI非公式パッチもあてておく。 cd /tmp wget http://users.informatik.haw-hamburg.de/~gropp_v/madwifi-2.6.8_and_-mm-040821.patch.bz2 bunzip2 madwifi-2.6.8_and_-mm-040821.patch.bz2 cd /usr/local/src/linux tar
http://www.naney.org/diki/dk/rsync.html
SourceForge.net: Project Info - RsyncWin32
http://sourceforge.net/projects/rsyncwin32/

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

perl(58) windows(44) 書き方(40) 提案書(38) インストール(26) cvs(26) 使い方(26) linux(26) ドラマ(23) debian(22) 壁紙(20) x31(19) アジェンダ(19) usb(18) ほぼ日手帳(18) 画像(17) thinkpad(17) 桑田佳祐(17) wiki(17) 深浦加奈子(16) svn(15) ganttproject(15) java(15) 動画(14) (14) rcs(14) tc-1(14) c#(13) gmail(13) 生年月日(13) ヨドバシ(13) ノート(12) a6(12) 2008(12) 設定(12) ダイソー(11) ssh(11) サンプル(11) 日本語(11) リフィル(11) ubuntu(11) 影舞(11) nikon(11) 作り方(11) 修理(11) ボールペン(10) terastation(10) 無印(10) torrent(10) activeperl(10) apache(10) centos(10) google(10) gtd(10) 冷蔵庫(10) tortoisesvn(10) 手帳(9) proxy(9) subversion(9) フリー(9) メール(9) 変更(8) firefox(8) バッグインバッグ(8) ダウンロード(8) ナースのお仕事(8) xampp(8) うなぎ(7) xp(7) 本名(7) iphone(7) qemu(7) ppm(7) vq1005(7) par(7) エラー(7) tar(7) norton(7) mailpia(7) システム手帳(7)

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

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