編集:2つの詳細な答えに基づいて、以下を試しました。
rsync --progress -v -az -e “ssh” /archive/images/dcam/ [email protected]:/data/archive/images/dcam --dry-run
だから--progressを使用すると結果を見ることができます。 -vを使用すると冗長にできますか? -azはそれを保持し(したがってタイムスタンプを取得します)、zはそれを圧縮してネットワークトラフィックを節約します。 -e 10.xxxxxシステムの認証キーにソースSSHキーを持つSSHを介してログインします。ああ、このエラーが発生しました。
rsync: Failed to exec \#342\#200\#234ssh\#342\#200\#235: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(600) [sender=3.0.6]
リモートシステムにすでにデータが含まれている/data/archive/images/dcamがあるため、これは奇妙です。
rsyncがどのように機能するかを完全に理解してはいけません。私は2つのサーバーを持っています。あるサーバーには別のサーバーに転送したいデータがたくさんあります。だから... NFSはサーバーB(バックアップがある場所)からサーバーAにフォルダをマウントしました。
そしてこれは重要なライブサーバーなので、2TBのデータでRSYNCを実行することに緊張しました...次のように手動で実行しました。 /images/imageDateXX と入力し、2 TB のフォルダとデータに対してこれを繰り返します。いよいよ動作するようになりました。そのため、サーバーをダウンさせていないのは幸いで、このデータは一晩更新されています。したがって、サーバーBを最新の状態に保つためにcronjobを設定しました。
0 8 * * * rsync -r /archive/images/ /mnt/backup/archive/images
これは始まりましたが(私の考えでは)、完了するまでに2日かかります。単にサーバーAの新しい/変更された内容を見てサーバーBに入れるのではなく、すべてのファイルをサーバーBに再び上書きするようです。この理論をテストする方法がわかりませんが、時間がかかります。 rsyncにスイッチがない場合、またはフォルダごとにrsyncフォルダを実行して親フォルダでrsyncを実行すると、rsyncとは「異なる」ように見えます。なぜなら、rsyncはそれがすべて新しいデータだと思い、すべてをコピーするからです。サーバーbと同じ場所?
この理論をテストまたは決定する方法がわかりません。簡単だと思います。 rsyncは、ファイルがserverBにない場合、またはserverAから変更された場合に自動的にファイルを上書きするか、ファイルをコピーします。
答え1
rsync --progress -av -e "ssh" /archive/images/ username@[serverIP-or-domainname]:/archive/images --dry-run
サンプル:
rsync --progress -av -e "ssh" /archive/images/ [email protected]:/archive/images --dry-run
これは、両方のシステムのディレクトリが/archive/imagesで、キーが設定されていて、リモートシステムがsshdを実行していると仮定します。私はそうすると確信しています。
--dry-run
不快なミスを避けるのに役立つように、タスクが実行するアクションを特定することは常に便利です。
-v
作業場所の追跡に役立つ出力の詳細を追加します。
--delete
ソースに存在しなくなったファイルをターゲットから削除します。これは、リモートシステムにデータミラーを作成したい場合にしばしば必要です。データが大きく異なる場合は、およびを調べて、--delete-before
どちら--delete-after
が--delete-during
要件に最も適しているかを確認することをお勧めします。通常、--delete
これはかなりうまく機能しますが、TiBデータの場合はこれが重要です。--delete-before
たとえば、ほぼいっぱいのリモートディスクを処理する場合に便利です。
削除するときは注意してください! !ローカルパスにないすべてのエントリをリモートパスに削除します。つまり、間違ったパスを指定すると、そのリモートディレクトリ内のすべてのエントリを削除または削除しようとします。少なくとも間違えないように--delete
最初から使用しないでください。--dry-run
-rtvz
はい-a
。ほとんどのアプリケーションにはこれで十分だと思います。
-a
-aHAX
デフォルトでは、ソースのほぼ実際のミラー(ほとんど完全なミラー)が作成されます。-a
/(いいえ、、)と同じです--archive
。-rlptgoD
-H
-A
-X
--progress
ジョブの実行中に進行状況を表示するので便利です。
-e "ssh"
sshを実行するときに、より多くのsshオプションまたはコマンドに他のオプション(たとえば、特定のsshポート)を使用する必要がある場合は、コマンドが長くなる可能性があります。サンプル:-e "ssh -p 423"
-z
:CPU使用率を減らしたい場合に帯域幅が大きく変わらない場合(画像などのバイナリファイルを想定)、-z
圧縮オプションを削除してください。
--bwlimit
:マシン間のネットワーク帯域幅が多すぎるかどうかを心配する場合に便利です。最小速度サイズは1k、1KiB / s、1m、別名1MiB / sなどです。これは、ネットワーク伝送の帯域幅をすべて使用したくない場合に便利です。人が言ったように、--max-size
さまざまな単位の構文を参照してください。
単位文字列の最初の文字は、B(バイト[該当なし
--bwlimit
])、K(キロ)、M(メガ)、G(ギガ)、T(テラ)、またはP(ペタ)です。文字列が単一文字である場合、または「ib」が追加された場合(例:「G」または「GiB」)、単位は1024の倍数です。 「B」で終わる2文字のサフィックス(「kb」など)を使用すると、1000の倍数である単位が得られます。文字列の文字は、使用する大文字と小文字の組み合わせにすることができます。
--partial
:転送が中断される可能性があると思われる場合に便利です。これにより、中断時に rsync がデフォルトで転送の一部を削除するのを防ぎます。
最初の完全同期の後、変更されたファイルのみが更新されるため、それ以降のすべての同期速度ははるかに高速になります。ロジックが正常に機能している場合は、将来の同期--delete
で常にそれを使用して、ローカルファイルとリモートファイルを同期したままにし、削除したり名前を変更したファイルを削除したりすることができます。一部の構成では、ファイル内で変更されたデータのみが更新されます。たとえば、ファイルには変更可能なメタデータがありますが、バイナリコアデータは変更されず、メタデータ部分のみが変更される場合です。画像にはあまり良くありませんが、他のデータ型には適しており、同期を100倍高速化できます。
rsyncとnfs
特に、ext4を使用している場合、nfsを介したrsyncはすべてのファイルシステム属性をサポートしていないため失敗します(-aの場合と同じように転送したい場合)。また、非常に遅いです。 nfsは、拡張ファイル属性の問題のないローカルネットワークを介した小規模転送に適していますが、本番環境では使用しません。私はnfsを介してバックアップを実行するためにrsyncを使用しようとしましたが、あまりにも多くの属性を転送できないため、ext4が登場したときに停止する必要がありました。
マニュアルページの再同期
これらのシステムで作業するときは、rysncのマニュアルページを読むよりも役に立ちません。たとえば、--partial
私は今日までこれが問題であることに気付かず、非常に大きなファイル転送の中断のために困難を経験して再起動する必要がありました。次回の起動時に中止されました。
私の考えでは、rysncがこれまでに作られた最高のcliソフトウェアの1つですが、マンページがひどくて再構成が切実に必要なので、ここにないものを見つけるのは難しいです。 、私は今日それを読むまでそのうちのいくつかを知っていました。たとえば、--partial
大量のファイル転送が中断されたため、再起動に失敗したため、数え切れないほど時間がかかりました。
Andrew Tridgellにピザを送ってください、ハハ、人々がrsyncのためにお金を払いたいと思ったときに彼が求めるものです。しかし、より良い方法は、マニュアルページを修正してより便利にし、論理的な部分に分割することです。読んで使用してください。しかし、優れた文書ですが、再構成はうまくいきません。
答え2
ソリューションには2つの主な問題があるため、各コピーを完了するには長い時間がかかります。
- ファイルをコピーする時間がないため、コピーされ
rsync
たファイルを識別してスキップすることはできません。したがって、すべての呼び出しはすべてをコピーします rsync
ローカルファイルシステムの一部を別の部分にコピーしています。この場合、増分コピーは取得できませんが、ファイルを変更するとファイル全体がコピーされます。
修理する
- ほとんどのメタデータを一度に取得するには、
--times
()を含めるか-t
(--archive
)を検討してください。-a
NFSを引き続き使用する必要がある場合でも、これを実行してください。 - NFSを使用しないで、
ssh
NFSサーバーへの転送を使用してください(remoteHost
私の例では)。 --compress
(-z
)を使用してネットワーク内のトラフィックを圧縮します。
はい
rsync -az /archive/images/ remoteHost:/mnt/backup/archive/images
インタラクティブに実行する場合、通常は--partial --progress --verbose
()も含まれます。-Pv
あなたの場合、この修正されたコマンドを初めて実行すると、完了するまでに長い時間がかかることがわかります。これは、どのファイルが最新であるかをすばやく識別する方法がなく、ファイルの時間とサイズで識別するためですrsync
。したがって、各ファイルのペア(ソースとターゲット)を比較して、メタデータのみが異なることを確認する必要があります。その後、rsync
サイズや時間の異なるファイルだけがコピー先と見なされるため、変更されていないファイルはスキップされます。