rsync メモ

#rsync#shell

fuji44

同期だけじゃなくコピーだけもできる。

構文

manpage のコピペ。

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

オプション

個人的に気になったもの。これ以外はmanpageを参照。

-a, --archive

アーカイブモードで実行する。いろいろなオプションの詰め合わせオプション。

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-c, --checksum

タイムスタンプとファイルサイズではなく、チェックサムでスキップを判定する。

-c, --checksum              skip based on checksum, not mod-time & size

-r, --recursive

ソースディレクトリ以下を再帰。

-r, --recursive             recurse into directories

-e, --rsh

リモートシェルを指定。例えば、sshを使いたいときに指定する。

-e, --rsh=COMMAND           specify the remote shell to use

--delete

同期元にないものは削除する。

--delete                delete extraneous files from dest dirs

--log-file

指定のファイルに実行結果を出力する。指定しないと出力しない。

--log-file=FILE         log what we're doing to the specified FILE

--exclude

パターンにマッチするディレクトリやファイルを除外する。

--exclude=PATTERN       exclude files matching PATTERN

以下のように複数指定すると指定したパターンのすべてを除外できる。

rsync -a --exclude="Cashe/" --exclude="Logs/" src dest

使用例

共通編

進捗が見えるようにする。

rsync -v --progress src dest

ローカル編

権限情報などを保ったままコピーする。

rsync -a src dest

リモート編

SSHでポート55555にアクセスし ~/send_dirディレクトリを192.168.1.1の /tmp/ 配下にコピー。

rsync -e "ssh -p 55555" ~/send_dir` 192.168.1.1:/tmp/

SSHでポート55555にアクセスし、192.168.1.1の/tmp/src_dir/配下のファイル、ディレクトリを再帰的に~/dest_dir/配下にコピー。実行結果を./rsync.logに出力する。

rsync -r -e "ssh -p 55555" --log-file=./rsync.log fuji44@192.168.1.1:/tmp/src_dir/ ~/dest_dir/