特定のファイルタイプが含まれている場合、ディレクトリ全体をrsyncにスキップさせたいと思います。
特定の種類のファイルを除外する方法は知っています。しかし、除外したいファイルのすべてのタイプを知っているわけではないので、1 つのタイプが存在する場合、ディレクトリ全体を除外する必要があります。それはあまり役に立ちません。
私はこのように行きます:
すべてのファイルをリストするファイルを作成します。
find . > allfiles
再同期しないディレクトリのリストを取得します。基準が何であるかを指定していないので、次のようなファイル接尾辞であると仮定しましょうfop
find . -path '*fop' | xargs -r -n1 dirname
「禁止されているディレクトリ」のリストが表示されます。ここでは、ケースに適応する必要があります。
次にgrep -v
、ファイル リスト全体から禁止されたディレクトリを抽出し、フィルタリングされたファイル リストを作成します。
--files-from=
次に、フィルタリングされたファイルリストを使用してスイッチでrsyncします
まあ、これはちょっと醜いですが、いつでもバッククォートを入れて、いくつかの sed 作業で find コマンドを実行できます。たとえば、拡張子が のファイルを持つすべてのディレクトリを無視する場合は、次のようにします.dist
。
rsync -vvaR `find /etc -name '*.dist' | sed -e 's:/[^/]*$:/:' | sort | uniq | sed -e 's:^/:--exclude /:'` /etc rsync://hostname.com/
次のような出力が得られます。
[client] add_rule(- /etc/config-archive/etc/)
[client] add_rule(- /etc/config-archive/etc/bash/)
[client] add_rule(- /etc/config-archive/etc/bind/)
[client] add_rule(- /etc/config-archive/etc/conf.d/)
[client] add_rule(- /etc/config-archive/etc/cron.daily/)
[client] add_rule(- /etc/config-archive/etc/eclean/)
[client] add_rule(- /etc/config-archive/etc/init.d/)
[client] add_rule(- /etc/config-archive/etc/logrotate.d/)
[client] add_rule(- /etc/config-archive/etc/modprobe.d/)
[client] add_rule(- /etc/config-archive/etc/mysql/)
[client] add_rule(- /etc/config-archive/etc/pam.d/)
[client] add_rule(- /etc/config-archive/etc/portage/bin/)
[client] add_rule(- /etc/config-archive/etc/portage/postsync.d/)
[client] add_rule(- /etc/config-archive/etc/portage/savedconfig/sys-apps/)
[client] add_rule(- /etc/config-archive/etc/profile.d/)
[client] add_rule(- /etc/config-archive/etc/security/)
[client] add_rule(- /etc/config-archive/etc/ssh/)
[client] add_rule(- /etc/config-archive/etc/ssl/)
[client] add_rule(- /etc/config-archive/etc/ssl/certs/)
[client] add_rule(- /etc/config-archive/etc/ssl/misc/)
[client] add_rule(- /etc/config-archive/etc/ssmtp/)
[client] add_rule(- /etc/config-archive/etc/syslog-ng/)
[client] add_rule(- /etc/config-archive/etc/udev/)
[client] add_rule(- /etc/config-archive/etc/udev/rules.d/)
[client] add_rule(- /etc/config-archive/etc/vim/)
opening tcp connection to hostname.com port 873