rsync 中的 include="*" 是否复制所有子目录中的所有隐藏文件?

ben*_*ett 10 rsync wildcards

我想备份一个包含数千个子目录和深层子文件夹路径的目录。在这些目录中的许多目录中,有大量以.. 我想确保.子目录和子子目录等中的所有文件都被正确复制。指定就够了include="*"吗?这会涵盖一切吗?

rsync -rvh --compress-level=0 --stats --progress --include ".*"  user@vm:/mnt/storage8/backups ~/data/backup_of_backups/
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 7

默认情况下包含所有文件,因此如果要包含所有文件,请不要传递 any--include--exclude选项。

如果您确实使用模式,rsync 不会特别对待点文件。如果您想跳过点文件,则必须明确使用--exclude='.*'.

请注意,--include='.*'只会包含点文件。这是一个 shell 模式, where.代表自身,*意思是“任何字符序列”,而不是正则表达式,where.意思是“任何字符”,*意思是“任意数量的前面的字符或组”。没有任何 exclude 指令,你仍然得到所有文件,所以包含指令是没有意义的,但如果你有一些排除指令,--include='.*'并不意味着“包含所有文件,包括点文件”,它只会意味着“包含点文件”(和它本身不会递归到名称不以点开头的目录中)。


Kus*_*nda 5

在不指定任何包含或排除模式的情况下,rsync将复制隐藏文件和目录。

rsync --stats --progress -av user@vm:/mnt/storage8/backups ~/data/backup_of_backups/
Run Code Online (Sandbox Code Playgroud)