web-dev-qa-db-ja.com

.svn /ディレクトリを無視して、残りを除く特定のファイルを再帰的にrsyncします

Rsyncを使用して、いくつかのファイルを共有から別の共有にコピーしています。

再帰的に、次のことを行う必要があります。

  • 起点から削除された宛先のファイルを削除します
  • Phpファイルとjsファイルのみを同期します
  • 他のすべてのファイルタイプを除外する
  • 宛先の.svn/ディレクトリを削除しないでください

これを使用する場合:

rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \
    /origiin /destination

exclude="*"はすべてのファイルだけでなくフォルダも除外するため、rsyncは再帰的ではありません

--include="*/"を追加すると、.svn/ディレクトリが削除されます(これも含まれます)

どうすればこのマインドブラストのジレンマを解決できますか?

uname -a:

Linux Tux 3.9.2-1-Arch#1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux

rsyncバージョン:

rsync 3.0.9-6

前もって感謝します

2
canolucas

さて、何度か試した後、私はこれを整理しました:

rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
    --include='*/' --exclude='*' --Prune-empty-dirs \
    --filter "protect .svn/" /Origin /destination

別のアプローチ

空のdirを同期してもかまわない場合は、次のようにします。

rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
    --include='*/' --exclude='*' /Origin /destination

重要なのは--exclude=.svn/ の前に --include's

0
canolucas