1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 基本
$ rsync -avz /path/from/ /path/to/

-z, --compress
転送時に gzip 圧縮を使用する。
-v, --verbose
コピーするファイル名を標準出力する。
-a, --archive
-rlptgoD と同義。(--recursive --links --perms --times --group --owner --devices)
-r, --recursive
ディレクトリを再帰的にコピーする。このオプションを指定していないと、rsync はディレクトリを全くコピーしない。
-l, --links
シンボリックリンクを DEST で作り直す。
-p, --perms
DEST のパーミッションを SOURCE と同じにする。
-t, --times
ファイルの転送時に、修正時間情報もリモートへ転送する。
-g, --group
DEST の所有グループを SOURCE と同じにする。スーパーユーザで実行しないと所有グループを変更できない。
グループ ID (GID) を使う場合は --numeric-ids オプションを追加する。
-o, --owner
DEST の所有者を SOURCE と同じにする。スーパーユーザで実行しないと所有者を変更できない。
ユーザ ID (UID) を使う場合は --numeric-ids オプションを追加する。
-D
デバイスファイルとスペシャルファイルを維持する。
--devices --specials と同義。

dru-run(-n)

1
$ rsync -avz -n /path/from/ /path/to/

fromに無いファイルを削除して完全同期(–delete)

1
$ rsync -avz --delete /path/from/ /path/to/

一部のファイルを除外したりする(–exclude, –include)

左から順に判定

1
$ rsync -avz --exclude="*.csv" --exclude="*.json" --include="*" /path/from/ /path/to/

–exclude, –includeを外部ファイルから(–exclude-from, –include-from)

1
$ rsync -avz --exclude-from=exclude.txt --include-from=include.txt /path/from/ /path/to/

別途sshコマンド指定が必要な場合の例

基本的には~/.ssh/config側で解決するのがいいです

1
$ rsync -avz -e "ssh -p [ポート] -i [秘密鍵]" /path/from/ [SSHユーザ]@[SSHホスト]:/path/to/

rsyncの「/tmpに一時保存してからコピー」する動作を「直接上書きコピー」するようにする(–inplace)

大きなファイルをrsyncする際の処理時間短縮などに有効

1
$ rsync -avz --inplace /path/from/ /path/to/

rsyncコマンドに帯域制限をかける(–bwlimit=[KB/sec])

1
$ rsync -avz --bwlimit=5120 /path/from/ /path/to/