RSYNC は宛先パスからディレクトリを除外します。

RSYNC は宛先パスからディレクトリを除外します。

リモートサーバーにすでに存在するフォルダ(例:)を除いて、フォルダがあるソースサーバーで実行したいので、test/xyzリモート側のフォルダを上書きしたくありません。rsynctest1/xyzxyz

test/xyzまた、ソースサーバーからファイルが削除/追加されると、そのファイルはリモートサーバーから削除/追加されますが、フォルダから削除/追加されず、そのファイルも更新したいと思います。

リモートディレクトリを除外するには、次のコマンドを試しましたが、除外されたディレクトリとファイルはリモートディレクトリにコピーされます。

rsync -ave ssh --exclude=remotedirectory root@IPADDRESS:remotepath --delete sourcepath

どんなアイデアがありますか?

答え1

2つの方法があります。

  1. とにかく--exclude=dir同期したくないので、ローカルでもリモートでも構いません。
  2. この除外オプションを使用する--rsync-path='rsync --exclude=dir'と、リモートrsyncが実行されます。

答え2

これは働きます:

rsync -av --delete --exclude=/xyz/ sourcepath/ root@IPADDRESS:remotepath/

「sourcepath」のルートに現れると、「xyz」は除外されます。そしてディレクトリです(末尾の「/」がこれを保証します)。

ソースディレクトリとターゲットディレクトリの末尾のスラッシュが重要です。それがなければ第二rsync 実行は、おそらく望むものではないかもしれない新しいフォルダ「remotepath/sourcepath」を作成します。

また、あなたの説明によると、ソースとターゲットのパラメータが間違っています(しかし、混乱は私のものかもしれません)。

関連情報