すでにリモートサーバー(つまりtest/xyz
)にあるフォルダーを除外したいのですが、test1/xyz
フォルダーがあるソースサーバーからrsync
を実行したいので、必要ありません。リモート側のxyz
フォルダーを上書きします。
また、ソースサーバーで削除/追加されたファイルがリモートサーバーで削除/追加される場合は、ファイルを更新しますが、test/xyz
フォルダーは除きます。
以下のコマンドでリモートディレクトリを除外しようとしましたが、除外されたディレクトリとファイルがリモートディレクトリにコピーされます。
rsync -ave ssh --exclude=remotedirectory root@IPADDRESS:remotepath --delete sourcepath
何かアイデアはありますか?
2つの方法があります。
--exclude=dir
とにかく同期したくないので、ローカルでもリモートでも違いはありません。--rsync-path='rsync --exclude=dir'
およびリモートrsyncは、その除外オプションを使用して実行されます。これは機能するはずです:
rsync -av --delete --exclude=/xyz/ sourcepath/ root@IPADDRESS:remotepath/
「sourcepath」のルートで発生する場合、「xyz」は除外されます。およびはディレクトリです(末尾の「/」はそれを保証します)。
ソースディレクトリと宛先ディレクトリの末尾のスラッシュは重要です。それがないと、second rsyncを実行すると、新しいフォルダー「remotepath/sourcepath」が作成されますが、これはおそらく必要なものではありません。
また、あなたの説明によれば、あなたはソースとデスティネーションのパラメータを間違った方法で持っていました(しかし混乱は私のものかもしれません)。