如何包含rsync中排除的文件


16

我正在尝试设置一个rsync,它排除所有.*文件,.htaccess但不幸的是,这不起作用:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir

是否可以以某种方式排除一般排除规则?

Answers:


24

第一条匹配规则适用,因此.htaccess在排除之前先包含.*

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir

这会.htaccess在每个级别进行复制。我不知道你打算什么./.htaccess; 如果您只想匹配副本根目录下的文件,请以开头/。如果只需要root .htaccess,就不能只使用--include='/.htaccess' --exclude='.*',因为非rooted规则实际上在这里优先,因此您需要做一些更复杂的事情:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir

进一步阅读:rsync过滤器的基本原理


@ fred.bear:那是一个真正的错字,也是一个讨厌的错字。感谢您发现它!
吉尔(Gilles)“所以,别再邪恶了”,

谢谢,我曾尝试将第--include一个放在首位,但是将“ ./.htaccess”前面的“ ./”杀死了。
Rich

1
@Rich注意,如果存在包含.htaccess文件的隐藏目录,则您必须--include='.*/'(在我看来)在决赛之前--exclude,另请参见此处
Tobias Kienzler 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.