|
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync は rcp とほとんど同じ方法で動くプログラムですが、より多くの
オプションを持っています。目的のファイルが既に存在する場合に、
rsync のリモート更新プロトコルは高速なファイル転送を行います。
rsync のリモート更新プロトコルは2つのファイルセット間のネットワークリンクの
違いだけを転送します。その際には、パッケージに添付されている技術報告書に
あるような効果的なチェックサム検索アルゴリズムを使っています。
その他の rsync の機能:
rsync には6通りの使い方があります:
全ての場合では(リスト表示を除く)、ソースとオブジェクトのパスの少なくとも1つは
ローカルでなければなりません。
インストールについては README ファイルを読んでください。
1度インストールすれば rsh を使うことのできるマシンに対して
rsync を使うことができます。rsync はソースとオブジェクトがローカルではない場合に、通信に rsh を使います。
コマンドラインのオプションから -e を使うか、RSYNC_RSH 環境変数を設定することで、
rsh とは違うのものを選択することができます。
セキュリティを考慮すれば、ssh を使うのが一般的です。
rsync はソースとオブジェクトのマシンの両方にインストールされていなければなりません。
rcp を使うのと同じように rsync を使います。ソースとオブジェクトを
指定しなければなりません。また、片方はリモートかもしれません。
以下にシンタックスの例をいくつか示します:
rsync *.c foo:src/
カレントのディレクトリにある *.c と一致する全てのファイルを、foo というマシンの src ディレクトリに
転送します。もし既にリモートのシステムにファイルが存在すれば、ファイルの相違部分だけを
転送する rsync のリモート更新プロトコルが使われます。詳しくは技術報告書をご覧ください。
rsync -avz foo:src/bar /data/tmp
foo というマシンにある src/bar ディレクトリの全てのファイルを、ローカルマシンの /data/tmp/bar ディレクトリへ
再帰的に転送します。"archive" モードで転送された全てのファイルは、シンボリックリンク、デバイス、属性、
パーミッション、所有者等が維持されます。そして、転送の際のサイズを小さくするために圧縮されます。
rsync -avz foo:src/bar/ /data/tmp
ソースの後にスラッシュが付くと、foo というマシンにある src/bar ディレクトリ以下の全てのファイルを
/data/tmp/ に転送します。ソース名の後に付く / は、「このディレクトリのあるコンテンツをコピーする」
ことを意味します。スラッシュがなければ、「このディレクトリをコピーする」ことを意味します。
この違いは --delete オプションを使う際に特に重要になります。
ソース名とオブジェクト名の両方に':'がなければ、rsync はローカルモードになります。
この場合には、優れたコピーコマンドとして使うことになります。
rsync somehost.mydomain.com::
somehost.mydomain.com というホストで利用できる anonymous の rsync モジュールを全て表示します
(詳しくは次の章を読んでください)
転送に rsh や ssh を使わなくても rsync を利用することが可能です。
この場合には TCP の 873 ポートで走っているリモートの rsync サーバに接続する
ことになります。
あなたのウェブ・プロキシーに hostname:port がポイントするように、環境変数 RSYNC_PROXY を設定すれば
、ウェブ・プロキシー経由で接続できるでしょう。ただし、あなたのウェブ・プロキシーが 873 番ポートの
プロキシーを許可するようにプロキシー・サーバのルールセットで設定されていなければなりません。
以下の点を除けば、rsh や ssh と同じように rsync を使うことができます:
リモートのサーバのパスでは認証を要求されるかもしれません。もし認証を要求されると、接続時に
パスワード入力のプロンプトが返されます。使用するパスワードを RSYNC_PASSWORD 環境変数に設定するか、
--password-file オプションを使えばパスワードのプロンプトは表示されません。rsync のスクリプトを
使用する時に便利でしょう。
注: システムによっては環境変数が全てのユーザに対して不可視であることがあります。
その場合には --password-file の使用をお勧めします。
rsync サーバはデフォルトで /etc/rsyncd.conf という設定ファイルを使います。詳しくは
rsyncd.conf(5) man ページを参照してください。
以下に rsync の使用例をいくつか示します。
妻のホームディレクトリには、MS ワードのファイルやらメールフォルダやらがあるのだが、
こんな感じのクーロンを走らせてバックアップしています
rsync -Cavz . arvidsjaur:backup
夜な夜な、私のマシンである"arvidsjaur"に PPP リンクを通じてディレクトリを
バックアップしている。
samba のソースツリーの同期を取るために、以下のような Makefile targets を使っている:
get:
rsync -avuzb --exclude '*~' samba:samba/ .
put:
rsync -Cavuzb . samba:samba/
sync: get put
これで他のリンクの終わりまで CVS ディレクトリの同期を取ることができる。
リモートのマシンで cvs の操作することで時間を節約できる。リモート cvs プロトコルは
効率的とは言えないのだから。
コマンドでの新旧 ftp サイト間ディレクトリのミラーリングは
rsync -az -e ssh --delete ~ftp/pub/samba/ nimbus:"~ftp/pub/tridge/samba"
これをクーロンで2、3時間毎に走らせます。
rsync で利用できるオプションの概要を示します。それぞれのオプションの詳細
については以下を見てください。
-v, --verbose 転送情報を詳しく表示
-q, --quiet 転送情報を表示しない
-c, --checksum 常にチェックサムを行う
-a, --archive アーカイブモード(-rlptgoD オプションと同義)
-r, --recursive ディレクトリで再帰的に実行する
-R, --relative 相対パス名を使う
-b, --backup バックアップを作成する (デフォルトで ~ が付く)
--suffix=SUFFIX バックアップのサフィックスを変更
-u, --update アップデートのみ許可 (上書き禁止)
-l, --links ソフトリンクを維持する
-L, --copy-links ファイルのようにソフトリンクを扱う
--copy-unsafe-links 送信側ツリー外のリンクをコピー
--safe-links 受信側ツリー外のリンクを無視
-H, --hard-links ハードリンクを維持する
-p, --perms パーミッションを維持する
-o, --owner オーナーを維持する (root のみ)
-g, --group グループを維持する
-D, --devices デバイスを維持する (root のみ)
-t, --times タイムスタンプを維持する
-S, --sparse 密度の低いファイルを効率的に扱う
-n, --dry-run 実行時の動作だけを表示
-W, --whole-file rsync アルゴリズムを使わない
-x, --one-file-system 再帰的に実行された時にファイルシステムの境界を横断しない
-B, --block-size=SIZE rsync アルゴリズムのチェックサムブロックサイズの制御(default 700)
-e, --rsh=COMMAND rsh の代替を指定
--rsync-path=PATH リモートのマシーンで rsync のコピーへのパスを指定
-C, --cvs-exclude システム間で転送したくない広範囲のファイルを除外(CVSの方法と同じ)
--delete 送信側にないファイルを削除
--delete-excluded 受信側にある exclud ファイルも削除
--partial 転送途中のファイルを保存します
--force ディレクトリが空でなくても削除
--numeric-ids ユーザとグループの id 番号を転送して、転送後にマッピング
--timeout=TIME IO タイムアウトを設定(秒)
-I, --ignore-times タイムスタンプとファイルサイズのチェックをしない
--size-only タイムスタンプのチェックをしないで、ファイルサイズのチェックだけをする
-T --temp-dir=DIR tmp ファイルのディレクトリを指定
--compare-dest=DIR 受信側のファイルと比較するための追加ディレクトリ
-z, --compress 受信ファイルを圧縮compress file data
--exclude=PATTERN パターン一致するファイルを除外
--exclude-from=FILE ファイルに記述されたパターンと一致するファイルを除外
--include=PATTERN パターン一致するファイルを除外しない
--include-from=FILE ファイルに記述されたパターンと一致するファイルを除外しない
--version rsync のバージョンを表示する
--daemon rsync をデーモンとして走らせる
--config=FILE 別の rsyncd.conf ファイルを指定
--port=PORT 別の rsync ポート番号を指定
--stats rsync アルゴリズムの転送効率を表示
--progress 転送中の情報を表示
--log-format=FORMAT ログフォーマットを指定
--password-file=FILE ファイルからパスワードを得る
-h, --help このヘルプを表示する
rsync は GNU ロング・オプション・パッケージを使っています。コマンドラインのオプションの
多くは、ショートかロングのどちらかです。以下ではコンマで区切って記述してあります。
オプションによってはロングだけのものがあります。オプションの '=' では変数を取ります;
代わりに空白も使われます。
rsync foo/bar/foo.c remote:/tmp/
ここではリモートのマシンにある /tmp/ というディレクトリに foo.c というファイルを作ります。この代わりに
rsync -R foo/bar/foo.c remote:/tmp/
とすると、リモートのマシンで /tmp/foo/bar/foo.c というファイルが作られます。フルパス名は維持されます。
リンクの両方の部分が送信されたファイルの一覧にあると、rsync はハードリンクだけを検出することに注意して下さい。
このオプションを使うと非常に遅くなるので、本当に必要な時にだけ使って下さい。
注:受信側が Solaris の "tmpfs" ファイルシステムなら、このオプションを使わないで下さい。シークオーバー null の領域を扱わないようなので、ファイルが壊れてしまいます。
ディレクトリで再帰的に実行されていなければ、このオプションは効果がありません。
正しく使わないと非常にキケンです!どのファイルが削除されるのか、実行前に dry run のオプション(-n) を使って確認すると良いでしょう。
送信側でなんらかの IO エラーを検出すると、受信側にあるファイルの削除は自動的に行わなくなります。受信側での過度のファイル削除のせいで、送信側で一時的にファイルシステムがおかしくなる(NFS エラーのように)のを避けるためです。
このオプションが追加されると削除は depth-first されるように再実行されるので、あいまいな場合を除いてほとんど必要ありません。
RSYNC_RSH 環境変数を使ったリモート・シェルプログラムを使うこともできます。
--exclude オプションをコマンドラインから多用すると、除外ファイルリストを作りたくなるかもしれません。
このシンタックスについては除外パターン(exclude patterns)のセクションを見て下さい。
このオプションのシンタックスについては除外パターン(exclude patterns)のセクションを見て下さい。
除外リストの初期化は:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core
$HOME/.cvsignore に記述されたファイルはリストと CVSIGNORE 環境変数で表示されるファイルに追加されます(スペース区切り)。
最後にそれぞれのディレクトリで、そのディレクトリの .cvsignore ファイルに記述してあるファイルがリストに追加されます。
--csum-length オプションを使えばトランケートしたチェックサムのバイト数を選択できます。有効な値は 16 以下です。
このオプションを使うと、間違ったターゲットファイルになってしまう危険性があります。16 という値でこの危険は微細なものになり、それは無視できる程安全ですが、それより小さい値では危険が増します。
rsync の最新版では、デフォルトで、2回目で更に長いブロックのチェックサムが必要かどうかを決定するために、16 バイトのファイルチェックサムを使って、最適なチェックサム長を使います。ソースコードを読むか、何をしているのかを把握するときにだけ、このオプションを使います。
このオプションは、リモートのシェルの圧縮を使うか、一致するデータブロックに関して情報を送る利点のある、圧縮転送を使うことによる圧縮率を実現します。
デフォルトで rsync はファイルのオーナーを決定するためにユーザ名とグループ名を使います。ユーザ id の 0 とグループ id の 0 は --numeric-ids オプションを指定しないとユーザ・グループ名がマップされません。
送信側のシステムが chroot を使ったデーモンか、ユーザ・グループ名が受信側に存在しなければ、代わりに送信側の id 番号を使います。
このオプションは普通、-v と組み合わせて使います。-v オプションなしで使うと、ディスプレイの表示がヒドイことになります。
exclude と include のパターンは、どのファイルを転送して、スキップするのかを
柔軟に選択します。
rsync はコマンドラインで指定された include/exclude オプションのリストを作成します。
ファイル名があると、rsync はそれぞれの exclude/include パターンに対して名前をチェックします。
最初に一致したパターンの処理が行われます。exclude パターンがあれば、ファイルをスキップします。
include パターンがあれば、ファイルをスキップしません。include/exclude のパターンがなければ、
ファイルをスキップしません。
--include と --exclude オプションはそれぞれ1つのパターンを指定します。
多様なパターンを追加するには、--include-from と --exclude-from のオプションを
使うか、あるいは複数の --include と --exclude のオプションを使ってください。
パターンにはいくつかの形式があります。ルールは:
exclude リストの中で +/- のルールを使うと、include と exclude のオプションを両方含んだ exclude リストを
持つことになり、とても便利です。
いくつか例を示します:
rsync はしばしば謎めいたエラーを出力します。混乱を招くものとしては
"protocol version mismatch - is your shell clean?" というのがあります。
このメッセージは起動スクリプトやリモートシェルで、rsync が転送に使っているストリームに不要なノイズが生じる
ことが原因です。この問題を診断するには、以下のようなリモートシェルを走らせます:
rsh remotehost /bin/true > out.dat
そして、out.dat を見てください。正確に動作していれば out.dat のファイル長はゼロです。
もし rsync から上記のエラーが出ている場合には out.dat になんらかのテキストやデータが
出力されます。その中身を見て何がそのメッセージを出力しているのか、解決してください。
ありがちなのは、非インタラクティブなログインに対するアウトプットのステートメントを含んだ、
シェルのスタートアップスクリプト(.cshrc や .profile)の記述が間違っていることです。
/etc/rsyncd.conf
rsyncd.conf(5)
times are transferred as unix time_t values
file permissions, devices etc are transferred as native numerical values
see also the comments on the --delete option
Please report bugs! The rsync bug tracking system is online at http://rsync.samba.org/rsync/
rsync is distributed under the GNU public license. See the file COPYING
for details.
A WEB site is available at http://rsync.samba.org/
The primary ftp site for rsync is ftp://rsync.samba.org/pub/rsync.
We would be delighted to hear from you if you like this program.
This program uses the excellent zlib compression library written by
Jean-loup Gailly and Mark Adler.
Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell and
David Bell for helpful suggestions and testing of rsync. I've probably missed
some people, my apologies if I have.
rsync was written by Andrew Tridgell and Paul Mackerras. They may be
contacted via email at tridge@samba.org and Paul.Mackerras@cs.anu.edu.au