主にUnix環境における、通信量を最適化するアルゴリズムが搭載されたファイル同期のためのアプリケーションである。
# cd /usr/local/src # wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz # tar zxvf rsync-3.1.1.tar.gz # cd rsync-3.1.1 # ./configure # make # make install
rsyncの使い方は基本的にはsshコマンドを通すことで、暗号化した状態でファイルの同期をとることが一般的といえよう。
# rsync -avz -e ssh 192.168.0.52:/root/test/ /root/test/同マシン内
# rsync -auv /usr/local/apache2/htdocs/ /test/htdocs/※この実行したプロセスをバックグランドに持って行きたいときなどは、以下のコマンドを実行する。
#<CTRL+Z> <- これで実行中のプロセスが一時中断され # bg <- このコマンドで中断プロセスがバックグランド化され再開される。
引数 | 概要 |
-a | Archiveモード、-rlptgoD のオプション指定と同じ |
-v | Verboseモード、よりコピー遷移を表示する |
-z | Compressモード、zlibを利用した圧縮方式で通信データ量を減らす |
-e ssh | SSHコマンドを通してファイル同期を図る |
-r | Recursiveモード、再帰指定、指定フォルダ以下も同期 |
-l | copy symlinks as symlinks、シンボリックリンクはシンボリックリンクとしてコピー |
-p | same as --partial --progress、Partial(部分転送)、Progress(過程表示)の機能と同じ |
-t | Preserve modification times、元ファイルの時間を保持してコピー |
-g | Preserve group、元ファイルのグループをそのまま保持してコピー |
-o | Omit directories from --times、ディレクトリの時間表示は除外 |
-D | Same as --devices --specials、Devices(デバイスも維持 rootのみ)、Specials(特別Fileも維持) |
--delete | バックアップ元で削除されたファイルは、バックアップ時にバックアップ先でも削除される指定。バックアップ元とバックアップ先が完全に同期するが、一歩間違えるとデータが全部消えるため、運用には注意すること。 |
/usr/local/libを丸ごとコピー
# rsync -avz -e "ssh -i /root/.ssh/server.key" root@192.168.0.1:/usr/local/lib/ /usr/local/lib/
パーミッションのエラーが無いにも関わらず、Permission denied (13)が出現する場合、一度、SELinuxをOFFにすると解決する。
# setenforce permissive
相手先の ~/.bashrcで何か標準出力にechoして、scp & rsync がハンドシェークに混乱し失敗する。よって、.bashrc の echo を >&2 をつけて標準エラーにする。
#! /bin/sh EDKBACKUP="/usr/local/edesk/bin/afio.sh" BACKUPDIR="/backup" if [ `/bin/date +%w` -eq 0 ]; then $EDKBACKUP -d $BACKUPDIR --full >> /var/log/backup 2>&1 else $EDKBACKUP -d $BACKUPDIR >> /var/log/backup 2>&1 fi