今更ながらの rsync
恥ずかしながら今までよく分かってなかった。
rsyncプロトコルで rsync
rsync は、rsyncd や xinetd によってサーバプロセスとして実行させることができる。
この場合は rsync プロトコルで接続。
相手先を
rsync://hostname.com/module/path
で指定。 デフォルトのポートは 873。
ssh で rsync
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 でも同様の仕様。