web-dev-qa-db-ja.com

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

すでにリモートサーバー(つまりtest/xyz)にあるフォルダーを除外したいのですが、test1/xyzフォルダーがあるソースサーバーからrsyncを実行したいので、必要ありません。リモート側のxyzフォルダーを上書きします。

また、ソースサーバーで削除/追加されたファイルがリモートサーバーで削除/追加される場合は、ファイルを更新しますが、test/xyzフォルダーは除きます。

以下のコマンドでリモートディレクトリを除外しようとしましたが、除外されたディレクトリとファイルがリモートディレクトリにコピーされます。

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

何かアイデアはありますか?

1
Kaushal

2つの方法があります。

  1. ただ--exclude=dirとにかく同期したくないので、ローカルでもリモートでも違いはありません。
  2. 使用する --rsync-path='rsync --exclude=dir'およびリモートrsyncは、その除外オプションを使用して実行されます。
1
Alexander

これは機能するはずです:

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

「sourcepath」のルートで発生する場合、「xyz」は除外されます。およびはディレクトリです(末尾の「/」はそれを保証します)。

ソースディレクトリと宛先ディレクトリの末尾のスラッシュは重要です。それがないと、second rsyncを実行すると、新しいフォルダー「remotepath/sourcepath」が作成されますが、これはおそらく必要なものではありません。

また、あなたの説明によれば、あなたはソースとデスティネーションのパラメータを間違った方法で持っていました(しかし混乱は私のものかもしれません)。

0
ams