今更ながらの rsync

恥ずかしながら今までよく分かってなかった。

rsyncプロトコルrsync

rsync は、rsyncd や xinetd によってサーバプロセスとして実行させることができる。
この場合は rsync プロトコルで接続。
相手先を

rsync://hostname.com/module/path

で指定。 デフォルトのポートは 873。

sshrsync

ssh や rsh を使って実行することもできる。
その場合、rsync コマンドを打つと、ssh/rsh で相手先サーバに接続し、そちら側でも rsync が起動される。
相手先を scp の作法

username@hostname.com/path/to

で指定。

サーバ間のデータのやりとりも ssh/rsh の中で行っているっぽい。873等で通信するわけではなさそう。
(実際に rsync コマンド打ちながら netstat 見てみたら、ssh以外の接続が無かった。)

基本のおさらい
rsync -avz --delete --include='hoge' --exclude='*' dest-host:/home/hoge .

みたいな感じで使う。

a :「ファイルのプロパティなんかをそのまんまコピー」みたいなこと。
v : verbose
z : 圧縮して転送
--delete : 同期元に存在しないファイルが同期先にあれば消す

注意点
rsync -avz dest-host:/home/hoge/* .

とすると隠しファイル(.で始まるやつ)はコピーされず、

rsync -avz dest-host:/home/hoge/ .

とするとコピーされる、とか。
これは rsync だけでなく、cp や rm でも同様の仕様。