rsync

実際は -a は -rlptgoD と同じである。各オプションの意味は以下のとおり。
ディレクトリを再帰的にコピーする (-r) 
シンボリックリンクを、そのままシンボリックリンクとしてコピーする (-l) 
パーミッションをそのままコピーする (-p) 
タイムスタンプをそのままコピーする (-t) 
グループをそのままコピーする (-g) 
ファイルオーナー (所有者) をそのままコピーする (-o) 
デバイスファイルやを特殊ファイルを、そのままコピーする (-D)

rsyncコマンドの使い方: UNIX/Linuxの部屋

ワイルドカードと範囲指定でファイル名を指定します (例えば、"*.log.[0-9]"のように指定します。正規表現は使用できません)。

http://www41375u.sakura.ne.jp/server/linux_basic/rsyncd_lsyncd.html#22

rsync exclude

--exclude "*.o" は *.o と一致する全てのファイル名を除外します
--exclude "/foo" は基点ディレクトリにある foo というファイルを除外します
--exclude "foo/" は foo という名前のディレクトリを除外します
--exclude "/foo/*/bar" は foo という基点ディレクトリから2レベル下にある bar というファイルを除外します。
--exclude "/foo/**/bar" は foo という基点ディレクトリから2レベルか それ以上下にある bar というファイルを除外します
--include "*/" --include "*.c" --exclude "*" は全てのディレクトリと C ソースファイルを含みます
--include "foo/" --include "foo/bar.c" --exclude "*" は foo/bar.c だけを含みます (foo/ ディレクトリが 含まれなければならないか、"*" によって除外される)

http://www.infoscience.co.jp/technical/rsync/rsync.html#exclude

特定ファイルの転送

hollyなblog:rsyncで特定のファイルだけ転送する

foo/bar/baz 以下をサブディレクトリを含め転送したい場合

excludefromというファイルを作って

+ /foo/
+ /foo/bar/
+ /foo/bar/baz/***
# all exclude
- *

rsync -nav --delete --exclude-from=excludefrom src/ dist/

+ /foo/bar/baz/***

+ /foo/bar/baz/
+ /foo/bar/baz/**
相当

最近のバージョンでは、
+ dir/
+ dir/**
- *
を
+ dir/***
- *
と書ける。

INCLUDEパターン(+)じゃないと***は意味がないと思う(たぶん)。ディレクトリを除外すればそれ以下も除外されるので。
地雷だらけのrsyncを理解する。 - こせきの技術日記

+ /foo/bar/baz/*** だけでは駄目

今回はうまくいった。つまりサブディレクトリを指定したい場合は、対象のディレクトリに至るまでの全ての親ディレクトリを--includeで指定する必要があるということだ。
rsync の include 使用方法(include と exclude の整理) | for everyone's smile

bwlimitオプション 帯域 制限

100Mbps
--bwlimit=12500

単位がKBPSなので、注意。

簡単に変換表。
100Mbpsなら、12500KBps
10Mbpsなら、1250KBps
1Mbpsなら、125KBps
500kbpsなら、62.5KBps

rsyncで帯域制限!ネットワークに負荷をかけないbwlimitオプション – Matsubo Tech Blog