rsyncコマンドの使い方
rsyncコマンドの使い方をよく忘れるのでまとめておく。
書式
rsync [オプション] コピー元 コピー先
注意するのはコピー元の書き方
$ rsync -avz ./src ./dst/
のようにすると
$ ls ./dst/
src
dst以下にsrcディレクトリがそのまま作成される。
srcディレクトリ以下のみをdst以下にコピーするには、
次のようにコピー元に/を付ける
$ rsync -avz ./src/ ./dst/
オプション
オプション | 機能 |
---|---|
-a | コピー元のパーミッションやグループ情報などを保持。-a は -rlptgoDと同じ |
-v | 進行状況を詳細に表示。最大3個まで付けられる |
-z | データを圧縮する |
-u | 追加、更新されたファイルのみコピー |
-n | 実際には同期を実行せず、実行時の動作だけを表示 |
-r | ディレクトリを再帰的にコピー |
-l | シンボリックリンクをそのまま(リンク先は変えずに)コピー |
-L | シンボリックリンクを通常のファイルのように扱う |
-p | パーミッションを保持 |
-t | タイムスタンプを保持 |
-g | グループを保持 |
-o | オーナーを保持 |
-D | デバイスを維持する (root のみ実行可能) |
-b | バックアップを作成する |
-h | バイト数をわかりやすい単位で表示 |
--delete | コピー元で削除したファイルをコピー先でも削除する |
--include=PATTERN | 指定したパターンに一致するファイルを動機対象から除外しない |
--include-from=FILE | ファイルに記述されたパターンと一致するファイルを除外しない |
--exclude=PATTERN | 指定したパターンに一致するファイルを同期対象から除外する |
--exclude-from=FILE | ファイルに記述されたパターンと一致するファイルを除外する |
--existing | 新しいファイルを作成せず、受信側に既に存在するファイルだけを更新する |
--status | 転送効率を表示 |
使用例
リモートマシンへのコピー
$ rsync -avz ./src/ example.com:/dst/
通信にはsshが使用される
rshを使用するには以下のようにする
$ rsync -avz -e rsh ./src/ example.com:/dst/
同期する(全く同じ構造にする)
「--delete」オプションを付ける
$ rsync -avz --delete ./src/ ./dst/