如何将目录rsync到具有不同名称的新目录?

Zen*_*Zen 81 rsync

我正在进行数据传输,旧文件系统深深依赖于现在位于不同路径上的目录。这是一个 git 目录,用于在线存储代码。我无权移动或重命名它。

所以我能做的是将这个目录 rsync 到同一个旧路径。但是目录名也变了。

有没有一种简单的方法可以将目录同步到具有不同名称的目标目录?

Adr*_*ian 136

如果要使用rsync递归使dest目录成为目录的精确副本src

rsync -a src/ dest
Run Code Online (Sandbox Code Playgroud)

rsync手册页介绍了如何工作的:

源 [...] 上的尾部斜杠避免 [s] 在目标上创建额外的目录级别。您可以/将源的尾随视为“复制此目录的内容”而不是“按名称复制目录”[...]

  • 那个鬼鬼祟祟的斜线是关键...... (14认同)
  • @Zen,在我使用过的任何版本的 `rsync` 中都没有。如果这确实发生在您身上,那么您将缺少源目录参数末尾的斜杠。 (13认同)
  • 这将在 `dest` 目录下创建一个 `src` 目录 (4认同)

小智 6

快速开始

跑:

rsync -av --exclude='path1/in/source' --exclude='path2/in/source' [source]/ [destination]
Run Code Online (Sandbox Code Playgroud)

笔记

  • -avr将创建一个名为[destination].
  • sourcesource/创造不同的结果:
    • source— 将文件夹源复制到目标中。
    • source/— 将源的内容复制到目标中。
  • 要排除许多文件:
    • --exclude-from=FILEFILE是包含要排除的其他文件或目录的文件的名称。
  • --exclude 也可能包含通配符:
    • 例如 --exclude=*/.svn*

修改自:https : //stackoverflow.com/a/2194500/749232


例子

起始文件夹结构:

.
??? destination
??? source
    ??? fileToCopy.rtf
    ??? fileToExclude.rtf
Run Code Online (Sandbox Code Playgroud)

跑:

rsync -av --exclude='fileToCopy.rtf' source/ destination
Run Code Online (Sandbox Code Playgroud)

结束文件夹结构:

.
??? destination
?   ??? fileToExclude.rtf
??? source
    ??? fileToCopy.rtf
    ??? fileToExclude.rtf
Run Code Online (Sandbox Code Playgroud)