だから私はrsyncがファイルサイズと日付に基づいてファイルを更新するチェックサムアルゴリズムを使って動作することを知っています。しかし、この同期はソースとターゲットがどのように呼び出されるかによって異なりますか?ソースからターゲットへの順序が同期されたコンテンツの動作を変更しませんか?
私が行くところまで連れて行って…
明らかにこれinput1
rsync -e ssh -varz ~/local/directory/ [email protected]:~/remoteFolder/
等しくないinput2
rsync -e ssh -varz [email protected]:~/remoteFolder/ ~/local/directory/
しかし、どのような方法で呼び出されても、rsyncのポイントは、すべての最新のファイルがローカルターゲットとリモートターゲットの間で更新されることです。
ただし、これは新しいファイルがターゲットの場所ではなく元の場所にあるかどうかによって異なります。更新したらファイル1私のローカルコンピュータ(同じですが古い)ファイル1サーバーに保存し、場所間の同期code2
に使用しましたが、新しいバージョンファイル1自分のローカルコンピュータのサーバーにアップロードできません。実際には、最新のファイルを以前のバージョンで上書きします。私が使用すると、変更さinput2
れた内容はサーバーにアップロードされます。
文字通り同期するためにrsyncを実行する方法はありますか?新しいものと修正されたものソースまたはターゲットの場所に関係なく、ファイルは最新/変更されたファイルの場所に基づいて最初に呼び出されますか?
答え1
いいえ、rsync
ファイルは一方向にのみ同期されます。スマートでより強力なバージョンだと思いますcp
(またはmv
そのオプションを使用している場合--remove-source-files
)。ターゲットに既に存在するデータをスキップしようとする点でスマートで、やらないことがcp
できるという点で機能的です。たとえば、ソースから削除されたファイルをターゲットから削除します。しかし、本質的に、これはソースからターゲットにコピーするのと同じことを行います。
〜のようにパトリックコメントでも言及しましたが、一貫したあなたが探していることを行い、双方向に更新します。しかし、これは標準的なツールではありません。多くのUNIXシリーズシステムにインストールされますが、通常はインストールさrsync
れませんunison
。ただし、Linuxディストリビューションではパッケージマネージャにあります。
答え2
~のため最も簡単な場合人は非効率的である場合もある
$ rsync-au AB; rsync-au BA;
最新のファイルを両側にコピーします。だから可能です。ただし、お勧めできません。