为什么 rsync 跳过名为“core”的子文件夹?

为什么 rsync 跳过名为“core”的子文件夹?

我正在使用以下命令将本地 OSX 系统上的文件从一个文件夹同步到另一个文件夹:

rsync -avC ./src ~/Sites

里面./src有几个子文件夹:

  • ./src/assets
  • ./src/core
  • ./src/css
  • ./src/js

除 外,所有文件夹和内容均按预期复制./src/core。重命名文件夹可解决问题,但这不是选项。例如,将其命名为./src/core2即可。

答案1

它这样做是因为您要求它这样做。具体来说,您要求-C它“忽略 CVS 所做的事”。

其中包括各种垃圾,例如核心转储在链接远端,这些内容其实并不有趣。除非它按名称而不是“类型和名称”执行此操作,因此您的目录会陷入混乱。

从中rsync(1),可以列出其排除的内容:

RCS  SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #*
.#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o  *.obj  *.so
*.exe *.Z *.elc *.ln core .svn/ .git/ .hg/ .bzr/

要忽略来自 CVS 的文件和文件夹并包含“核心”文件夹,请明确包含“核心”,如下所示:

rsync -avC --include "core" ./src ~/Sites

相关内容