rsync(1) の重箱

最も分かりやすいスラッシュ要不要の覚え方

SRCスラッシュの有無は、mv SRC DEST と mv SRC/* DEST の違いと一緒。スラッシュの後ろに*が省略されているものと考える。

Sparseだったファイルが膨らむんですがorz

この sparse file をコピーする時に注意。対応していないものを使うとサイズが膨れてしまう。 GNU cp は勝手に解釈してくれるが、例えば rsync では -S オプションを付ける必要がある。

しかしローカル(eSATA NTFSからUSB 2.0 NTFS)で試すと mv(1) より8倍くらい遅い... NTFS sparse fileはさすがに扱い辛いか? そもそもWindowsでも,sparse化には,なんか面倒なコマンド (fsutil) が要るよね...

「特定パターンにマッチするファイルのみ転送」はできないぽい

一瞬 '--exclude=*' '--include=*.o' で実現できそうに思えたが駄目.--exclude には「当該ファイルを同期しない」という意味と,「当該ディレクトリの中にrecurse downしない」という2つの意味があり,前者のみを * に設定することができない.find(1) で列挙して一時ファイルに書き出して --files-from が現実解か?

デフォルトのtimeoutは無限大

Cronで1分毎に動かしてたら((DHCPな「なんちゃってサーバ」に継続的にSSH loginするため, ifconfig eth0 の出力を真の固定IPサーバに送ってた.いやぁ案件単位でサーバを導入したりすると,アドミンに一々固定IPを申請という流れにはなかなかならんよね...)),ある日,転送先サーバが落ちてたことがあって... Timeoutしないから1分毎にrsyncプロセスが1個増えて,翌朝には転送元サーバがまともに動かなくなっていた(新プロセスを作れない)という失態をやらかしたことがある.Cronでは --timeout=10 (10秒)とかが必須だと学んだ.