web-dev-qa-db-ja.com

rsyncのinclude = "*"は、すべてのサブディレクトリのすべての隠しファイルをコピーしますか?

何千ものサブディレクトリと深いサブフォルダパスを含むディレクトリのバックアップを作成したいと考えています。これらのディレクトリの多くには、.で始まる多数のファイルがあります。サブディレクトリやサブサブディレクトリなどにあるすべての.ファイルが適切にコピーされることを確認したいと思います。 include="*"を指定するだけで十分ですか?これはすべてをカバーしますか?

rsync -rvh --compress-level=0 --stats --progress --include ".*"  user@vm:/mnt/storage8/backups ~/data/backup_of_backups/
6
benett

デフォルトではすべてのファイルが含まれるため、すべてのファイルを含める場合は、--includeまたは--excludeオプションを渡さないでください。

パターンを使用する場合、rsyncはドットファイルを特別に扱いません。ドットファイルをスキップする場合は、--exclude='.*'を明示的に使用する必要があります。

--include='.*'にはドットファイルのみが含まれることに注意してください。これは、.がそれ自体を表し、*が「任意の文字シーケンス」を意味するシェルパターンであり、.が「任意の文字」を意味し、*が意味する正規表現ではありません。 「任意の数の先行する文字またはグループ」。 excludeディレクティブがなくてもすべてのファイルが取得されるため、includeディレクティブは無意味ですが、excludeディレクティブがいくつかある場合、--include='.*'は「ドットファイルを含むすべてのファイルを含める」という意味ではなく、「includeドットファイル」(そしてそれ自体では、名前がドットで始まらないディレクトリに再帰しません)。

Without包含または除外パターンを指定すると、rsyncは隠しファイルとディレクトリをコピーします。

1
Kusalananda