rsyncを使用するときにターゲットの特定のフォルダを除外する方法は?

rsyncを使用するときにターゲットの特定のフォルダを除外する方法は?

次の例を考えてみましょう。

/source
  /source/folder1
  /source/folder2
  /source/folder3

/destination
  /destination/folder2
  /destination/folder3
    /destination/folder3/mytestfolder1
  /destination/folder4
    /destination/folder4/mytestfolder1
    /destination/folder4/mytestfolder2

ソースをターゲットに同期したいが、「/destination/folder4/mytestfolder1」を無視する必要があります。

除外パラメータを試してみました。

rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/

ただし、これは「mytestfolder1」という名前のすべてのフォルダを無視します。

フルパスを提供すると、rsyncはパスがターゲットではなくソースにあると思うため、何も無視されません。

rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/

rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/

オンラインで検索しましたが、役に立つコンテンツが見つかりませんでした。

助けてくれてありがとう。 :)

答え1

フィルタ(インクルード/除外)に絶対パスを使用すると、解析は同期ルートから始まります。ソースのディレクトリを除外せず、ターゲットのディレクトリも除外せず、同期したいツリーのディレクトリを除外することです。

したがって:

rsync -av --delete --progress --除外"/フォルダ4/mytestフォルダ1/出典/ /目的地/

関連情報