お気に入りのrsyncのヒントとコツ


57

使用rsyncするほど、ファイル転送のスイスアーミーナイフであることがわかります。非常に多くのオプションがあります。私は最近、あなたが行くことができ--remove-source-files、コピーされたときにソースからファイルを削除することを発見しました。これはプログラムをコピーするのではなく、もう少し移動します。:)

お気に入りの小さなrsyncのヒントとコツは何ですか?

回答:


19

多くのファイルを同期する必要がある場合は、rsyncバージョン3を使用してください。V3はファイルリストをインクリメンタルに作成し、バージョン2よりもはるかに高速で、使用するメモリも少なくなります。

プラットフォームに応じて、これは大きな違いをもたらします。OSXバージョン2.6.3では、コンパイルしたバージョン3.0.2がすぐにコピーを開始している間に、500万ファイルのインデックスを作成しようとして1時間以上かかるか、クラッシュします。


ここで注意すべきことは、いくつかのオプション(--delete-beforeたとえば)を使用する場合、これらのオプションが正しく機能するために必要な古い「ビルドリストを最初に」の動作が使用されることです。あなたが使用している他のオプションは、それを可能にするのを止めることが知られています。これは、大きなツリーでrsyncをインタラクティブに使用しており、初期スキャンを強制的に実行して、出力を--progress正確にしたい場合に役立ちます(つまり、初期スキャン後に新しいオブジェクトが見つからないため、「比較するオブジェクト」カウントは増加しません) )。
デビッドスピレット

18

--link-destスペース効率の良いスナップショットベースのバックアップを作成するために使用します。これにより、バックアップデータの完全なコピーが複数(バックアップ実行ごとに1つ)あるように見えますが、実行間で変わらないファイルは、スペースを節約する新しいコピーを作成する代わりにハードリンクされます。

(実際には、私はまだ同じことを達成するrysnc-followed-by-cp -alメソッドを使用しています両方のテクニックの古いながらも非常に良いランダウンについては、http://www.mikerubel.org/computers/rsync_snapshots/を参照してくださいおよび関連する問題)

この手法の主な欠点の1つは、ディスクエラーが原因でファイルが破損した場合、そのファイルにリンクするすべてのスナップショットで破損するのと同じことですが、オフラインバックアップもあり、これをある程度保護します。他に注意することは、ファイルシステムに十分なinodeがあるか、実際にディスクスペースを使い果たす前にそれらを使い果たすことです(私はext2 / 3のデフォルトで問題を抱えたことはありませんが)。

また、--dry-run特に--delete*オプションを使用している場合は、少し健康的な妄想に非常に役立つことを決して忘れないでください。


6
--dry-runの+1
デビッドZ

1
--dry-実行のショートカットが-nであることに注意してください
ctennis

3
特に他の人が保守するスクリプトでは、長い名前を使用することを好みます。ドキュメントを参照せずに、何が意図されているかを明確にします。
デビッドスピレット2009

+1上記のハードリンクスナップショットの--link-destメソッドを使用して、多くのマシンで多くのTBのバックアップソリューションを実装しました。完全に機能しました。
マティア

あなた--link-DESTのバックアップなどの場合は、チェックアウトDirvishをボンネットの下にrsyncを使用する
HFS

14

遅いリンクを介していくつかの巨大なファイルでWebサイトを更新する必要がある場合は、この方法で小さなファイルを転送できます。

rsync -a --max-size = 100K / var / www / there:/ var / www /

次に、大きなファイルに対してこれを実行します。

rsync -a --min-size = 100K --bwlimit = 100 / var / www / there:/ var / www /

rsyncには、Webサイトに便利な多くのオプションがあります。残念ながら、同時更新を検出する組み込みの方法がないため、cronスクリプトにロジックを追加して、巨大なファイルの重複書き込みを回避する必要があります。


10

あるディレクトリのファイルの小さなサブセットを別の場所に同期させようとする場合、--existingオプションを使用します。


ありがとう!これにより、厄介なフィルタールールの記述が不要になりました。
ベンザド

8

--rsh 私の。

私は(速く何かにSSHで暗号を変更するためにそれを使用しました--rsh="ssh -c arcfour"一連のセットアップにも)ssh(でそれを使用することをお勧めSをssh-agent直接話をすることはできませんホスト間でファイルを同期します)。(rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/)。


7
--time-limit

このオプションを使用すると、rsyncはT分後に停止し、終了します。このオプションは、夜間(混雑していない時間)に大量のデータをrsyncし、日中(混雑した時間)に人々がネットワークの使用を開始する時間になったら停止するときに便利だと思います。

--stop-at=y-m-dTh:m

このオプションを使用すると、rsyncを停止する時間を指定できます。

Batch Mode

バッチモードを使用して、同じ更新セットを多くの同一システムに適用できます。


有用!以前にプロセス
ライオネル

ソースパッチ:rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; パッチとWin32のバイナリが含ま:itefix.no/i2/cwrsyncを
jftuga

2
残念ながら、これらのオプションはRedhat / CentosまたはUbuntuディストリビューションで配布されるrsyncでは使用できません。
IanB

@Lionel:atプロセスを強制終了するにはどのように使用していますか?
IMTheNachoMan

6

遅い実行のrsyncがどこまで進んでいるのか疑問に思っていて、-vを使用して転送中のファイルをリストしなかった場合、どのファイルが開いているかを調べることができます。

 ls -l /proc/$(pidof rsync)/fd/*

/ procがあるシステム上

たとえば、リモートシステムに大量のスペースが残っているように見えたとしても、たった今rsyncがハングアップしました。このトリックは、私が覚えていない予想外に巨大なファイルを見つけるのに役立ちました。

また、もう少し興味深い情報を教えてくれました-ソケットリンクが壊れているため、もう一方の端は明らかにあきらめました:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive は、バックアップのようなジョブの標準の選択肢です(デフォルトではありません)。これにより、ソースファイル(許可、所有権など)のほとんどのメタデータが確実にコピーされます。

ただし、それを使用したくない場合、多くの場合--times、ファイルの変更時間を越えてコピーするを含める必要があります。これにより、rsyncが変更時間を比較し、ファイルが変更されていない場合はスキップするため、実行する次のrsyncが(繰り返し実行していると仮定して)はるかに高速になります。驚いたことに(少なくとも私には)このオプションはデフォルトではありません。


4

私が最もよく使うのは間違いなく--exclude-from、除外するものを含むファイルを指定できることです。

また--chmod、ソースがめちゃくちゃになったとしても、アクセス許可が望ましい状態になることを確認できるので、非常に便利です。


4

--backup-dir = date +%Y.%m.%d--delete削除していますが、コピーを作成しています... 念のため


4

私のは--inplace。バックアップ用のサーバーがZFSまたはbtrfsを実行しているときに、ネイティブスナップショットを作成すると動作します。


3

もちろん、--deleteソースにはないものをターゲットから削除するものもあります。


2

cwrsync-Windows用のRsync http://www.itefix.no/i2/node/10650

このバージョンにはOpenSSHが含まれているため、安全なチャネルでファイルを転送できます。


私はcwrsyncを使用していますが、それは素晴らしいことです。だれかがこのすばらしい機能をWindowsにもたらしたことをうれしく思います。
アンドリューエンスリー


1

サーバーでrsyncをデーモンとして設定している場合は、他のディレクトリリストと同様に共有モジュールを参照できます。次に、使用可能なパスと使用できないパスを確認できます。


1

GlusterFsを使用する場合、サイズがゼロのTファイルにボトルネックがあります。クラッシュしたブリックまたはレプリカ間の同期のために--min-size=1、クラッシュしたサーバーの空のファイルを同期しないようにする必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.