wd and cc

— Happy every day

rsync files-from 参数

Posted at — Apr 16, 2011

rsync



include/exclude



rsync 支持使用 include/exclude 来过滤要同步的文件,使用这两个参数的时候,需要注意下面的这个问题
Note that, when using the –recursive (-r) option (which is implied by -a), every subcomponent of every path  is  vis‐
        ited  from the top down, so include/exclude patterns get applied recursively to each subcomponent’s full name (e.g. to
        include "/foo/bar/baz" the subcomponents "/foo" and "/foo/bar" must not be excluded).  The exclude  patterns  actually
        short-circuit  the  directory  traversal stage when rsync finds the files to send.  If a pattern excludes a particular
        parent directory, it can render a deeper include pattern ineffectual  because  rsync  did  not  descend  through  that
        excluded section of the hierarchy.  This is particularly important when using a trailing ’*’ rule.  For instance, this
        won’t work: 

/some/path/this-file-will-not-be-found
/file-is-included 
*
rsync 使用 -r 来遍历子目录的时候,如果还想用 exclude include 来过滤文件,那么要注意 一个目录如果满足了 exclude,而且还没有对应的 include,那这个目录下面的子目录也会被 exclude,就算你对这个子目录写了 include 。 虽然能解决问题,可实在很费劲,直到无意中发现了 files-from 参数。

files-from

files-from 是通过指定一个本地/远程的文件来定义需要同步的文件。这个文件生成方法可就多了,你可以用 find/sed/awk/xxxxx 等搭配来得到你这个文件,一行命令不够还可以多行,是不是爽多了?
如果是远程文件,那就 –files-from=:/path/to/files。

写在后面

顺便测试一下 org2blog,这帖子是用 org2blog 写的,给作者提了个建议,加上 permlink 的支持,没几天居然给加上了,刚好测试一下,呵呵。
comments powered by Disqus