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秒)とかが必須だと学んだ.