Answers:
如果要用于rsync
递归地使dest
目录成为目录的精确副本,请执行以下操作src
:
rsync -a src/ dest
该rsync
手册页介绍了如何工作的:
源上的斜杠避免在目标上创建附加目录级别。您可以
/
将源上的结尾视为“复制此目录的内容”,而不是“按名称复制目录” [...]
rsync
我从未使用过任何版本。如果您确实发生了这种情况,那么您将在源目录参数末尾缺少斜杠。
dest
是src
,如果这是一个符号,这似乎不起作用,而是最终复制src
到src/src
。在macOS上测试。希望我可以替换bar -> foo/
为bar/
,但必须使用中间临时目录。
dest
是的符号链接src
,只需rm dest
在运行上述命令之前。在复制内容之前rsync
足够智能。您不需要中间的临时目录。dest
src
如果您的计算机都可以访问旧文件系统和新文件系统,请考虑使用符号链接而不是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 / path / old_git-> / new / path / new_git
这样,放入new_git的所有内容也将以旧方式立即可用,而无需复制数据,也不必不断同步它们。
我现在找到替代解决方案。
使用rysnc -r /origin/* /target/
可以将所有内容从原始目录同步到目标目录。
rsync -r $(find /origin -maxdepth 1 -type f) /target/
。正如@RayBurgemeestre指出的那样,shell glob扩展将不包含点文件。
src
目录下的dest
目录