rsync:最上位ディレクトリを除外する方法


14

したがって、私は一見単純な問題を抱えていますが、これまでのところ解決策が見つかりませんでした。すべての子を同期しながら、最上位ディレクトリをrsyncから除外したいです。特定の問題は、最上位のディレクトリの時刻を変更する権限がありませんが、すべての子に時刻を適切に同期させたいことです。

私が使用しているrsyncコマンドは次のとおりです。

rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/

そしてserver.example.com:/usr/local/directory/次のようになります。

drwxrws---  5 root   staff 24576 Jul  9 15:00 .

(私のローカルユーザーはのメンバーですstaff

rsyncを実行すると、次のエラーが表示されます。

rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23

これは、ローカルマシンではバージョン3.0.9、リモートでは3.0.7で、どちらのマシンもDebianを実行しています。


この例の構文に精通していますか?wirespeed.xs4all.nl/mediawiki/index.php/…除外されたディレクトリから特定のファイル/ディレクトリを含めることができます。ただし、除外ファイルを使用する必要がある場合があります。
ジッピー

うん。問題は、(具体的に)トップレベルディレクトリを除外するように説得できないように見えることです。過去にインクルード/エクスクルードのミキシングに問題はありませんでした。トップレベルが特別なケースであるかのように思えます。
スティーブポメロイ

回答:


8

rsyncのフィルタールールはトップレベルディレクトリと一致できないため、常に同期されると思います。回避策は、ディレクトリ自体ではなく、このディレクトリ内のすべてのファイルを同期することです。

rsync -rlptDu -- * server.example.com:/usr/local/directory/

最上位ディレクトリにドットファイルがあり、2つのドットで始まるファイル名がある場合は、.[!.]*後に追加し*ます..?*


2
素晴らしいです、ありがとう!動作します。このテクニックの唯一の欠点は、シェルがすべてのファイルを選択する必要があることです。ディレクトリに大量のファイルがある場合(私の場合はそうではありません)、それが窒息する可能性があります。これはおそらくxargsを使用して修正できます(ただし、-deleteオプションは使用できません)。
スティーブポメロイ

私が使用して得た一つの問題は、*それだった--delete、彼らは検索の一部ではなかったことから、任意のファイルを削除しませんでした。
thomasa88

@ thomasa88 この回答をご覧ください。
カミルマシオロウスキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.