我正在进行数据传输,旧文件系统深深依赖于现在位于不同路径上的目录。这是一个在线存储代码的 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/
可以将源目录的所有内容同步到目标目录。