0

さて、私のWebサーバーには次のファイル構造があります

/
    /home
           /home/username
                            /home/username/public_html
                            /home/username/mail
                            /home/username/etc
                            ...
           /home/username2
                            /home/username2/public_html
                            ...

そこで、rsync を実行する cronjob を実行する方法を見つけようとしています。これは、私が持っている 600 個のアカウントの public_html フォルダーのみを同期します。アカウントディレクトリの下にある他のすべてのサブフォルダー名で除外リストを作成することを考えましたが、それが最適な解決策であるかどうかはわかりませんでした

600 個のアカウントを手動で入力しなくても、public_html フォルダーのコンテンツのみを同期するように rsync に指示する方法はありますか? ありがとう

PS .:私の現在の解決策は、次のようなものでした:

rsync –vaRu –exclude ‘mail*’ -exclude 'etc*' home root@xxx.xxx.xxx.xxx:home

このソリューションでは、ファイル名がディレクトリ名と一致する場合、それらはコピーされません。

4

1 に答える 1

1

次の 3 つのフィルターを使用してそれを行うことができます。

rsync -av --filter="+ /home" \
          --filter="+ /home/*" \ 
          --filter="+ /home/*/public_html" \
          --filter="+ /home/*/public_html/**" \
          --filter="- *" / root@xxx.xxx.xxx.xxx:mirror

public_html の前にツリー内のすべてのディレクトリの「+」フィルタを追加し、「**」を追加して public_html の背後にあるすべてのディレクトリを含めることが重要です。

唯一の欠点は、すべてのホーム ディレクトリが宛先に作成されますが、空のディレクトリとして作成されることです。

于 2013-10-07T16:36:14.533 に答える