web-dev-qa-db-ja.com

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"は無視する必要があります。

Excludeパラメータを使用してみました

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/

ネットを検索しましたが、役立つ情報はありませんでした。

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

9
mrjayviper

フィルターで絶対パスを使用する場合(include/exclude)、同期のルートから開始して解釈されます。ソースのディレクトリを除外するのではなく、同期先のディレクトリを除外するのではなく、同期するツリーのディレクトリを除外します。

したがって:

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