rsync
を使うほど、ファイル転送のスイスアーミーナイフであることに気付きます。非常に多くのオプションがあります。私はあなたが行くことができることを最近知りました--remove-source-files
そして、コピーされたファイルをソースから削除します。これにより、プログラムをコピーするのではなく、少し移動しやすくなります。 :)
Rsyncのちょっとしたコツやコツは何が好きですか?
多くのファイルを同期する必要がある場合は、rsyncバージョン3を使用してください。 V3はファイルリストを段階的に作成し、バージョン2よりもはるかに高速でメモリ使用量も少なくなります。
これはプラットフォームによって異なります。 OSXバージョン2.6.3では、1時間以上かかるか、500万ファイルのインデックスを作成しようとするとクラッシュし、コンパイルしたバージョン3.0.2はすぐにコピーを開始しました。
--link-dest
を使用してスペース効率の良いスナップショットベースのバックアップを作成すると、バックアップデータの完全なコピーが複数あるように見えます(バックアップごとに1つ)実行)が、実行間で変更されないファイルは、スペースを節約する新しいコピーを作成する代わりにハードリンクされます。
(実際には、同じことを実現するrysnc
- followed-by -cp -al
メソッドをまだ使用しています。- http:/ /www.mikerubel.org/computers/rsync_snapshots/ 手法と関連する問題の両方の、古臭いがまだ非常に良いランダウンの場合)
この手法の主な欠点の1つは、ディスクエラーが原因でファイルが破損した場合、そのファイルにリンクしているすべてのスナップショットでも同じように破損していることですが、オフラインバックアップもあり、これによりある程度保護されます。もう1つの注意点は、ファイルシステムに十分なiノードがあるか、実際にディスク領域が不足する前にそれらが不足することです(ただし、ext2/3のデフォルトで問題が発生したことはありません)。
また、特に--dry-run
オプションを使用している場合は、少し健全なパラノイアに非常に役立つ--delete*
を忘れないでください。
低速のリンクを介していくつかの大きなファイルでWebサイトを更新する必要がある場合は、次の方法で小さなファイルを転送できます。
rsync -a --max-size = 100K/var/www/there:/ var/www /
次に、大きなファイルに対してこれを行います。
rsync -a --min-size = 100K --bwlimit = 100/var/www/there:/ var/www /
rsyncには、ウェブサイトに便利なオプションがたくさんあります。残念ながら、同時更新を検出する方法が組み込まれていないため、巨大なファイルの書き込みが重複しないように、cronスクリプトにロジックを追加する必要があります。
私は--existingオプションを使用して、あるディレクトリのファイルの小さなサブセットを別の場所に同期させようとします。
--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/
)。
--time-limit
このオプションを使用すると、rsyncはT分後に停止して終了します。このオプションは、夜間に大量のデータをrsync(非ビジー時間)し、ネットワークの使用を開始するときに昼間に(ビジー時間)停止する場合に役立つと思います。
--stop-at=y-m-dTh:m
このオプションを使用すると、rsyncを停止する時間を指定できます。
Batch Mode
バッチモードを使用すると、同じアップデートセットを多数の同一システムに適用できます。
実行速度の遅いrsyncがどこまで進んだのか疑問に思っていて、転送時にファイルをリストするために-vを使用しなかった場合は、開いているファイルを確認できます。
ls -l /proc/$(pidof rsync)/fd/*
/ procがあるシステム
例えば。リモートシステムに大量のスペースが残っているように見えましたが、rsyncは今のところハングしていました。このトリックは、私が覚えていない、意外と巨大なファイルを見つけるのに役立ちました。
それはまた、もう少し興味深い情報を私に教えました-壊れたソケットリンクもあったので、もう一方の端は明らかにあきらめました:
/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'
--archive
は、バックアップのようなジョブの標準的な選択です(デフォルトではありません)。これにより、ソースファイルからのほとんどのメタデータ(権限、所有権など)が確実にコピーされます。
ただし、それを使用しない場合でも、--times
を含めたい場合がよくあります。これにより、ファイルの変更時刻全体にコピーされます。これにより、実行される次のrsyncが(繰り返し実行されていると仮定して)muchより速くなります。これは、rsyncが変更時間を比較し、ファイルが変更されていない場合はスキップするためです。驚いたことに(少なくとも私にとって)このオプションはデフォルトではありません。
鉱山は--inplace
。バックアップ用のサーバーでZFSまたはbtrfsが実行されていて、ネイティブスナップショットを作成すると、うまくいきます。
私が最もよく使用するのは間違いなく--exclude-from
で、除外するものを含むファイルを指定できます。
--chmod
も非常に便利です。これは、ソースがめちゃくちゃになっても、アクセス許可が望ましい状態になることを確認できるためです。
--backup-dir = date +%Y.%m.%d
--delete削除していますが、コピーを作成しています...念のため
もちろん、--delete
これは、ソースから見つからないものをターゲットから削除します。
cwrsync-Rsync for Windows http://www.itefix.no/i2/node/1065
このバージョンにはOpenSSHが含まれているため、安全なチャネルを介してファイルを転送できます。
--partial
中断の場合
--bwlimit=100
帯域幅を制限するには-大きなファイルやディレクトリをコピーするのに適しています
サーバーでrsyncをデーモンとして設定している場合は、他のディレクトリリストと同じように、共有モジュールを参照できます。次に、利用可能なパスと利用できないパスを確認できます。
glusterFsを使用すると、サイズがゼロのTファイルにボトルネックが発生します。クラッシュしたブリックまたはレプリカ間の同期では、--min-size=1
を使用して、クラッシュしたサーバーの空のファイルを同期しないようにする必要があります