如何排除除特定文件以外的所有文件rsync
?
我试图只备份特定文件rsync
,以排除所有文件,除了一些特定文件,即.md
所有这些页面的文件和解决方案对我不起作用:
- https://velenux.wordpress.com/2017/01/09/how-to-exclude-everything-except-a-specific-pattern-with-rsync/
- https://superuser.com/questions/1637543/how-to-specify-no-files-except-these-extensions-in-rsync
- https://serverfault.com/questions/1063730/rsync-exclude-all-files-in-dir-except-specific-files
$ rsync -vua --exclude="*" --include="*.md" ../log ./
sending incremental file list
sent 19 bytes received 12 bytes 62.00 bytes/sec
total size is 0 speedup is 0.00
$ rsync -vua --include="*.md" --exclude="*" ../log ./
sending incremental file list
sent 19 bytes received 12 bytes 62.00 bytes/sec
total size is 0 speedup is 0.00
$ du -sh ../log
1016M ../log
$ apt-cache policy rsync
rsync:
Installed: 3.2.7-0ubuntu0.22.04.2
Candidate: 3.2.7-0ubuntu0.22.04.2
Version table:
*** 3.2.7-0ubuntu0.22.04.2 500
500 http://ca-toronto-1-ad-1.clouds.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
3.2.3-8ubuntu3 500
500 http://ca-toronto-1-ad-1.clouds.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
我假设您想从下面的任何地方复制文件
../log
。如果名称与
--include
or--exclude
模式匹配,则不会使用命令行中的其余模式(“先匹配者获胜”)。如果你不匹配模式,你将永远不会*/
递归--include
。考虑到这些因素,在匹配with之前先匹配
*.md
and*/
with :--include
*
--exclude
如果您希望避免创建空目录,请添加
-m
或。--prune-empty-dirs
选项从左到右应用,因此您需要在排除其余项目之前包括项目
在这里,我们包括您想要的文件,包括子目录(因此我们可以深入到它们中寻找匹配项),但排除所有其他内容。最终为空的目录也会被跳过。