| 原作者 | アンドリュー・トリジェル、ポール・マッケラス[1] |
|---|---|
| 開発者 | ウェイン・デイヴィソン[2] |
| 初回リリース | 1996年6月19日[1] |
| 安定リリース | 3.3.0 [3]
/ 2024年4月6日 |
| リポジトリ |
|
| 書かれた | C |
| プラットフォーム | クロスプラットフォーム |
| タイプ | データ転送、差分バックアップ |
| ライセンス | 2007: GPL-3.0以降[a] [4] [5] [6] 2007: GPL-3.0のみ[b] 2007: GPL-2.0のみ[c] 1996: GPL-2.0以降[d] [7] |
| Webサイト | rsync.samba.org |
rsync(リモートシンク)は、ファイルの変更時刻とサイズを比較することで、コンピュータとストレージドライブ間、およびネットワーク上のコンピュータ間でファイルを転送および同期する ためのユーティリティです。 [8] Unix系オペレーティングシステムでよく見られ、 GPL-3.0以降のライセンスが適用されます。[4] [5] [9] [10] [11] [12]
rsyncはシングルスレッドアプリケーションとしてC言語で書かれています。[13] rsyncアルゴリズムはデルタエンコーディングの一種で、ネットワーク使用量を最小限に抑えるために使用されます。Zstandard 、LZ4、またはZlibは追加のデータ圧縮に使用できます。[8] SSHまたはstunnelはセキュリティに使用できます。
rsync は、通常、2 つの異なるシステム間でファイルとディレクトリを同期するために使用されます。たとえば、コマンドが実行されると、rsync は SSH を使用してrsync local-file user@remote-host:remote-fileに接続します。[14]接続されると、リモート ホストの rsync が呼び出され、2 つのプログラムは、リモート ファイルがローカル ファイルと一致するように、ローカル ファイルのどの部分を転送する必要があるかを決定します。rsync の 1 つの用途は、パッケージ管理システムで使用されるミラー サイト上のソフトウェア リポジトリの同期です。[15] [16]userremote-host
rsync はデーモンモード (rsyncd)でも動作し、ネイティブ rsync プロトコル (rsync://構文を使用) でファイルを送受信します。
歴史
アンドリュー・トリジェルとポール・マッケラスは、1996年6月19日に初めて発表されたオリジナルのrsyncを作成しました。 [1]これは、1983年にラルフ・キャンベルによって作成され、 4.3BSDの一部としてリリースされたrdist ( )と機能と呼び出しが似ています。[17]トリジェルは、1999年の博士論文の第3章から第5章でrsyncの設計、実装、パフォーマンスについて説明しています。[18] 2023年現在、ウェイン・デイヴィソンによってメンテナンスされています。[2]rdist -c[参照]
その柔軟性、スピード、スクリプト可能性により、rsyncLinuxの標準ユーティリティとなり、すべての一般的なLinuxディストリビューションに含まれています。[要出典] Windows( Cygwin、Grsync、またはSFU [19]経由)、FreeBSD、[20] NetBSD、[21] OpenBSD、[22]およびmacOSに移植されています。
使用
およびとcp同様に、は送信元と送信先の指定を必要とし、そのうち少なくとも1つはローカルである必要があります。[23]rcpscprsync
一般的な構文:
rsync [オプション] … SRC … [ USER@ ] HOST:DEST
rsync [オプション] … [ USER@ ] HOST:SRC [宛先]
ここで、SRCはコピー元のファイルまたはディレクトリ (または複数のファイルとディレクトリのリスト)、DESTはコピー先のファイルまたはディレクトリ、角括弧はオプションのパラメータを示します。
rsyncrsyncは、 /と標準の Unix アカウントを使用して、Unix クライアントを中央の Unix サーバーに同期できますssh。デスクトップ環境で使用して、たとえば、外付けハード ドライブ上のバックアップ コピーとファイルを効率的に同期できます。などのスケジュール ユーティリティは、複数のホストと中央サーバー間のcron自動暗号化ベースのミラーリングなどのタスクを実行できますrsync。
例
FreeBSDをミラーリングするためのコマンドラインは次のようになります。[24]
$ rsync -avz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/
Apache HTTP Serverはミラーの更新にのみrsyncをサポートしています。[25]
$ rsync -avz --delete --safe-links rsync.apache.org::apache-dist /path/to/mirror
PuTTYウェブサイトを現在のディレクトリにミラーリングする推奨される(そして最も簡単な)方法はrsyncを使用することです。 [26]
$ rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ 。
Time Machine(macOS)の機能を模倣する方法。[27]
$ date = $( date "+%FT%H-%M-%S" ) # rsync は ":" をホストとポート (つまり、ホスト:ポート) の区切りとして解釈するため、ここでは %T または %H:%M:%S を使用できません。したがって、%H-%M-%S を使用します。
$ rsync -aP --link-dest = $HOME /Backups/current /path/to/important_files $HOME /Backups/back- $date
$ ln -nfs $HOME /Backups/back- $date $HOME /Backups/current
システムルートディレクトリの完全バックアップを作成する: [28]
$ rsync -avAXHS --progress --exclude ={ "/dev/*" , "/proc/*" , "/sys/*" , "/tmp/*" , "/run/*" , "/mnt/*" , "/media/*" , "/lost+found" } / /path/to/backup/folder
ディレクトリ内のすべてのファイルとディレクトリを非常に高速に削除します。
# どこかに空のディレクトリを作成します。これが最初のパスで、2 番目のパスは空にするディレクトリです。
$ rsync -a --delete /path/to/empty/dir /path/to/dir/to/empty
繋がり
rsync プロセスは、送信側と受信側の別の rsync プロセスと通信することで動作します。起動時に、rsync クライアントはピア プロセスに接続します。転送がローカル (つまり、同じホストにマウントされたファイル システム間) の場合、接続に適したパイプを設定した後、fork を使用してピアを作成できます。リモート ホストが関係する場合、rsync は接続を処理するプロセス (通常はSecure Shell)を開始します。接続すると、確立された接続を使用するリモート ホストで rsync プロセスを開始するコマンドが発行されます。代わりに、リモート ホストが rsync デーモンを実行している場合、rsync クライアントは TCP ポート 873 でソケットを開くことで接続できます (プロキシを使用する場合もあります)。[29]
rsync には、代替シェル、オプション、コマンド (フルパスも可能)、およびポート番号を指定するための多数のコマンド ライン オプションと構成ファイルがあります。リモート シェルを使用する以外に、トンネリングを使用して、rsync デーモンが実行されるサーバー上でリモート ポートをローカルとして表示することもできます。これらの可能性により、セキュリティ レベルを最新のものに調整できますが、単純な rsync デーモンでローカル ネットワークに十分対応できます。
--dry-run1 つの解決策は、ユーザーがコマンドライン引数を検証し、実際に変更を加えたりデータを転送したりせずにデータをコピーすると何が起こるかをシミュレート
できるオプションです。
アルゴリズム
送信するファイルの決定
デフォルトでは、rsync は各ファイルの変更時間とサイズをチェックして、送信システムと受信システム間で異なるファイルを判別します。システム間で時間またはサイズが異なる場合、送信システムから受信システムにファイルを転送します。これはファイル ディレクトリ情報を読み取るだけなので高速ですが、どちらにも変更がない異常な変更は見逃してしまいます。[8]
rsync は、 で呼び出された場合、より低速ですが包括的なチェックを実行します--checksum。これにより、両方のシステムに存在するすべてのファイルに対して完全なチェックサムの比較が強制されます。まれにチェックサムの衝突が発生しない限り、これにより、両方のシステムに存在するすべてのファイルを読み取るコストで変更されたファイルを見逃すリスクを回避できます。
ファイルのどの部分が変更されたかを判断する
rsyncユーティリティは、オーストラリアのコンピュータプログラマー、アンドリュー・トリジェルが発明したアルゴリズムを使用しており、受信側のコンピュータが既に同じ構造の類似したバージョンを持っているが同一ではない場合に、通信リンクを介して構造(ファイルなど)を効率的に送信します。[30]
受信者はファイルのコピーをチャンクに分割し、各チャンクに対して2つのチェックサムを計算します。MD5ハッシュと、より弱いが計算が容易な「ローリングチェックサム」 です。[31]これらのチェックサムを送信者に送ります。
送信者は、受信者のチャンクと同じサイズを持つファイルの各ローリング セクションのチェックサムを計算します。受信者はチャンク サイズの倍数で始まるチャンクに対してのみチェックサムを計算しますが、送信者は任意のアドレスで始まるすべてのセクションに対してチェックサムを計算します。送信者が計算したローリング チェックサムが受信者が計算したチェックサムと一致する場合、このセクションは、セクションの内容を送信せず、代わりに受信者のファイル内の場所のみを送信する候補となります。この場合、送信者は、より計算コストの高い MD5 ハッシュを使用して、送信者のセクションと受信者のチャンクが等しいことを確認します。送信者のセクションは、受信者のチャンクと同じ開始アドレスにない可能性があることに注意してください。これにより、挿入や削除によって異なるファイルを効率的に送信できます。[32]次に、送信者は、一致しなかったファイルの部分を、既存のブロックを受信者のバージョンにマージする場所に関する情報とともに受信者に送信します。これにより、コピーは同一になります。
rsync で使用されるローリング チェックサムは、zlibで使用されるMark Adler のadler-32チェックサムに基づいており、それ自体はFletcher のチェックサムに基づいています。
送信者と受信者のファイル バージョンに共通するセクションが多数ある場合、ユーティリティは比較的少量のデータ転送でファイルを同期できます。一般的なデータ圧縮アルゴリズムを使用する場合、圧縮されていないときは類似しているファイルでも、圧縮すると大きく異なる場合があり、ファイル全体を転送する必要があります。 gzipなどの一部の圧縮プログラムでは、特別な「rsyncable」モードが提供されており、圧縮されていないファイル内のローカルの変更が圧縮ファイル内のローカルの変更のみになるようにすることで、これらのファイルを効率的に rsync できます。
rsync は、データ転送やバックアップに大きく役立つその他の重要な機能をサポートしています。これには、 Zstandard、LZ4、またはzlib を使用したブロックごとのデータの圧縮と解凍、およびsshやstunnelなどのプロトコルのサポートが含まれます。
バリエーション
のrdiffユーティリティは、rsync アルゴリズムを使用して、ファイル A とファイル B の差分を含むデルタ ファイルをdiffpatchと同様)。rdiff はバイナリ ファイル。
rdiff -backupスクリプトは、ファイルまたはディレクトリのバックアップミラーをローカルまたはネットワーク経由で別のサーバー上にリモートで保持します。rdiff-backupは増分rdiffデルタをバックアップとともに保存し、これを使用して任意のバックアップポイントを再作成することができます。[33]
rdiffが使用するlibrsyncライブラリは、rsyncアルゴリズムの独立した実装です。rsyncネットワークプロトコルを使用せず、rsyncアプリケーションとコードを共有しません。[34] Dropbox、rdiff-backup、duplicity、その他のユーティリティで使用されます。 [34]
acrosyncライブラリは、rsyncネットワークプロトコルの独立したクロスプラットフォーム実装です。[35] librsyncとは異なり、rsync(プロトコルバージョン29または30)と互換性があります。これは相互公衆ライセンスの下でリリースされており、商用rsyncソフトウェアAcrosyncで使用されています。[36]
Pythonで書かれたduplicityバックアップ ソフトウェアは、ローカル ファイル システム、sftp、Amazon S3などのシンプルなストレージ バックエンド サービスを使用して増分バックアップを可能にします。librsync を使用して、以前のファイル バージョンの署名に対して差分データを生成し、gpg を使用して暗号化し、バックエンドに保存します。パフォーマンス上の理由から、バックアップ チェーン署名をキャッシュするためにローカル アーカイブ ディレクトリが使用されますが、必要に応じてバックエンドから再ダウンロードできます。
macOS 10.5以降では、この機能をサポートする2台のマシン間で同期する際にHFS+ファイルのメタデータの多くを保持できる特別なスイッチ-Eまたはスイッチがあります。これは、データフォークとともにリソースフォークを送信することで実現されます。 [37]--extended-attributes
zsyncはrsyncに似たツールで、ファイルバージョンごとに多数のダウンロードに最適化されています。zsyncはUbuntu [38]などのLinuxディストリビューションで、急速に変化するベータISOイメージファイルを配布するために使用されています。zsyncはHTTPプロトコルと、事前に計算されたローリングハッシュを持つ.zsyncファイルを使用して、サーバーの負荷を最小限に抑えながら、ネットワークの最適化のために差分転送を許可します。[39]
Rcloneはrsyncにヒントを得たオープンソースツールで、クラウドやその他の高レイテンシストレージに重点を置いています。50以上のプロバイダーをサポートし、クラウドストレージ用のrsyncのようなインターフェースを提供します。 [40]ただし、Rcloneは部分的なファイル同期(バイナリ差分)のローリングチェックサムをサポートしていません。これは、クラウドストレージプロバイダーが通常その機能を提供しておらず、Rcloneが追加のメタデータを保存しないようにするためです。 [41]
rsync アプリケーション
参照
注記
- ^ 2007-07-10 以降 GPL-3.0、2007-10-05 プレリリース 3.0.0pre1、2008-03-01 安定版 3.0.0。
- ^ 2007-07-07 から 2007-07-09 までは GPL-3.0 のみ。
- ^ 2007-02-04 から 2007-07-07 までは GPL-2.0 のみ。
- ^ GPL-2.0以降、1996-06-16から2007-01-31まで、バージョン0.1から2.6.9。
参考文献
- ^ abc Tridgell, Andrew (1996 年 6 月 19 日). 「rsync の rcp 代替品の最初のリリース」.ニュースグループ: comp.os.linux.announce. Usenet: cola-liw-835153950-21793-0@liw.clinet.fi. 2011 年 11 月 8 日時点のオリジナルよりアーカイブ。 2007 年7 月 19 日閲覧。
- ^ ab "rsync". 2014年11月27日時点のオリジナルよりアーカイブ。2014年11月28日閲覧。
- ^ 「rsync 3.3.0のニュース(2024年4月6日)」。2024年4月6日。 2024年4月7日閲覧。
- ^ ab "ニュース"。
- ^ ab 「ライセンステキストをもう少し調整する」。
- ^ 「rsync のライセンス」。
- ^ 「rsync のライセンス」。
- ^ abc "rsync(1) – Linux man page". linux.die.net . 2017年1月1日時点のオリジナルよりアーカイブ。2017年2月2日閲覧。
- ^ Sayood, Khalid (2002 年 12 月18 日)。ロスレス圧縮ハンドブック。Elsevier。ISBN 9780080510491. 2014年8月18日閲覧。
- ^ Webコンテンツのキャッシュと配信:第8回国際ワークショップの議事録。Springer Science & Business Media。2004年。316ページ。ISBN 9781402022579. 2014 年8 月 18 日に取得– Internet Archive経由。rsync
は広く使用されています。
- ^ Rasch, David; Burns, Randal; In-Place Rsync: モバイルおよびワイヤレスデバイス向けファイル同期、Wayback Machineに 2016 年 4 月 13 日にアーカイブ、ジョンズ ホプキンス大学コンピューター サイエンス学部
- ^ Dempsey, Bert J.; Weiss, Debra (1999 年 4 月 30 日)。 「 I2-DSI プロジェクトのための効率的でスケーラブルなレプリケーション メカニズムに向けて」。技術レポート TR-1999-01。CiteSeerX 10.1.1.95.5042。
- ^ 「Bash - 同時/並行ファイル転送でrsyncを高速化しますか? - Stack Overflow」。2019年8月6日時点のオリジナルよりアーカイブ。2019年12月18日閲覧。
- ^ 「Rsync と SSH の使用」。Troy.jdmz.net。2014年8 月 18 日閲覧。
- ^ 「ミラーの使用と実行」。GNU プロジェクト。2020 年 4 月 16 日時点のオリジナルよりアーカイブ。2020 年4 月 15 日閲覧。
- ^ 「CentOS のパブリックミラーを作成する方法」。CentOS wiki。2020 年 4 月 1 日時点のオリジナルよりアーカイブ。2020年4 月 15 日閲覧。
- ^ "rdist(1)"。
- ^ Tridgell, Andrew; Efficient Algorithms for Sorting and Synchronization、1999年2月、2009年9月29日閲覧
- ^ 「Tool Warehouse」。SUAコミュニティ。2013年4月6日時点のオリジナルよりアーカイブ。
- ^ 「FreeBSD ポート」 。2016年10 月 24 日閲覧。
- ^ “NetBSD Ports”. 2016年10月25日時点のオリジナルよりアーカイブ。2016年10月24日閲覧。
- ^ 「OpenBSD ポート」 。2016年10 月 24 日閲覧。
- ^ READMEファイルを参照。2007年12月10日アーカイブ、Wayback Machine
- ^ 「FreeBSD をミラーリングする方法 (rsync を使用)」。Freebsd.org。2014年8 月 18 日閲覧。
- ^ 「Apache Software Foundation のミラーになる方法」Apache.org。2014 年 8 月 21 日時点のオリジナルよりアーカイブ。2014 年8 月 18 日閲覧。
- ^ 「PuTTY Web サイトミラー: ミラーリングガイドライン」。Chiark.greenend.org.uk。2007 年 12 月 20 日。2014 年 8 月 19 日時点のオリジナルよりアーカイブ。2014年8 月 18 日閲覧。
- ^ 「Rsync を Time Machine のように実行するように設定」。Blog.interlinked.org。2007 年 11 月 15 日時点のオリジナルよりアーカイブ。2014年8 月 18 日閲覧。
- ^ 「rsync によるシステム全体のバックアップ」。wiki.archlinux.org。2015 年 2 月 11 日時点のオリジナルよりアーカイブ。2014 年12 月 15 日閲覧。
- ^ 「Rsyncの仕組み」。2016年12月16日時点のオリジナルよりアーカイブ。 2017年1月24日閲覧。
- ^ 「RSync – 概要」。2017年4月10日時点のオリジナルよりアーカイブ。 2017年4月9日閲覧。
- ^ rsync 3.0.0 のニュース 2008 年 3 月 20 日にWayback Machineにアーカイブ(2008 年 3 月 1 日)
- ^ ノーマン・ラムゼイ。Rsync アルゴリズム
- ^ rdiff バックアップ
- ^ ab Pool, Martin; 「librsync」 2013年12月9日アーカイブ、Wayback Machine
- ^ Chen, Gilbert. 「acrosync-library」. github.com. 2017年2月10日時点のオリジナルよりアーカイブ。2016年6月22日閲覧。
- ^ “acrosync.com”. 2019年12月20日時点のオリジナルよりアーカイブ。2020年7月29日閲覧。
- ^ 「Mac Developer Library」。Developer.apple.com。2012年9月26日時点のオリジナルよりアーカイブ。2014年8月18日閲覧。
- ^ 「Zsync Cd Image」。ubuntu.com 。 2015年1月6日閲覧。
- ^ zsync ウェブサイト
- ^ Craig-Wood, Nick. 「クラウドストレージシステムの概要」。rclone.org。2017年10月4日時点のオリジナルよりアーカイブ。2017年7月10日閲覧。
- ^ Craig-Wood, Nick. 「Rclone よくある質問」. rclone.org . 2022年5月10日時点のオリジナルよりアーカイブ。2022年5月13日閲覧。
- ^ “Grsync for Windows”. SourceForge . 2016年7月12日. 2019年3月24日時点のオリジナルよりアーカイブ。 2019年3月24日閲覧。
外部リンク
- 公式サイト
- Rsync アルゴリズム – 1998-11-09
- Rsyncアルゴリズムを紹介する博士論文
- Linux での rsync の例 (rsync の使い方)
