我尝试使用 scp 来完成该任务,但不幸的是它不起作用,也许我对 scp 是否可以做到这一点的想法是错误的。有人可以给我一些启发吗?我读过关于 rsync 的文章,但我不明白 rsync 是否可以只创建目录而不覆盖我需要的目录。我的意思是我需要一些命令来将新目录与远程主机同步,而不会覆盖文件和目录。对不起,我的英国朋友。问候塞巴斯蒂安
答案1
如果我理解正确的话,rsync 肯定是你想要的。假设你有一个来源:
- 父文件夹
- 子文件夹 A
- 文件 A1
- 文件 A2
- 文件 A3
- 子文件夹 B
- 文件 B1
- 文件 B2
- 文件 B3
- 子文件夹 A
以及目的地:
- 父文件夹
- 文件夹 A
- 文件 A1
- 文件夹 B
- 文件 B2
- 文件夹 A
如果您只想复制目标中尚不存在的文件,则 --ignore-existing 标志(rsync -av --ignore-existing /source user@host:/dest)将仅复制目标目录中尚不存在的文件。这会将文件 A2 A3、B1 和 B3 复制到新主机上的适当位置。但是,如果您想在文件 A1 和 B2 已更新的情况下复制它们,则省略 --ignore-existing 标志会将所有新文件和更新文件复制到目标,但不会复制任何未修改的文件(默认情况下基于大小和修改时间戳)。在rsync 手册页。
需要注意的是,-av 标志用于 --archive 和 --verbose。存档模式启用递归,保留尽可能多的文件元数据(例如所有权、时间戳等),并复制符号链接。Verbose 仅启用进度通知和其他复制信息,因为 rsync 默认是静默的。您可以添加额外的 v 以获取更多信息(超过两个用于调试软件)。