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

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

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

答案1

如果您想使用rsync递归方式使dest目录成为该目录的精确副本src

rsync -a src/ dest

手册rsync页解释了它是如何工作的:

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

答案2

答案3

如果您的计算机可以访问新旧文件系统,请考虑使用符号链接而不是 rsync。如果您使用的 rsync 命令未指定主机(或者它们是同一主机),那么就是这种情况。您正在尝试在同一主机上镜像两个具有不同名称的目录。不要为此使用 rsync,因为您正在复制数据,并且您必须经常运行 rsync 才能保持它们同步。

使用符号链接是一种一次性修复,它将镜像两个目录(具有不同的名称)并且几乎不需要空间。这就像创建一个指向另一个目录的别名目录。

假设您的旧 git 位于名为 /old/path/old_git 的目录中,现在代码存储库已移至 /new/path/new_git

你可以做:

cd /old/path
rm -rf old_git     (if you still have it there, get rid of it, or move it out of the way)  
ln -s /new/path/new_git old_git

这将创建一个链接,如下所示:

/旧/路径/old_git - > /新/路径/new_git

因此,放入 new_git 中的任何内容都可以按照旧方式立即可用,而无需重复数据,也无需不断同步它们。

答案4

我现在找到替代解决方案。

使用rysnc -r /origin/* /target/可以将源目录的所有内容同步到目标目录。

相关内容