我使用以下命令将一个目录的内容完整、递归地复制到另一个目录中:
rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/
它按照我的预期工作,除了第一个文件(按字母顺序排列),无论是目录还是文件,都不会被复制。所有其他文件都会被复制。为什么 ?
如果重要的话,我的操作系统是 MacOS 10.14.6。
答案1
该-e
选项需要一个参数,因此它采用第一个文件名。我不确定你为什么想要,-e
因为它设置了用于连接到遥控器的命令,但你没有使用遥控器。只需删除-e
.
答案2
/path1/to1/dir1
要制作名为 的目录的完整副本/path2/to2/dir2
,请使用
rsync -av /path2/to1/dir1/ /path2/to2/dir2
-z
对本地副本使用压缩 ( ) 是没有意义的。该-e
选项指定用于建立网络连接的命令(这就是为什么您的命令无法复制第一个文件;rsync
将其用作该选项的选项参数-e
),因此在这种情况下也应该将其删除。
另外,不要*
在源路径的末尾使用,因为这通常不会匹配任何隐藏名称。通配所有名称dir1
也可能会导致列表太长而导致命令根本无法执行。
只需确保源路径以斜杠结尾即可。目标路径末尾的斜杠没有任何区别。从源路径中删除斜杠将复制dir1
到dir2
.源路径末尾的斜杠会dir2
生成dir1
.
除此之外,您可能需要使用它-H
来确保在目标处正确建立硬链接,并且--sparse
您知道您正在复制可能稀疏的文件(例如预分配的磁盘映像)。
--delete
也用于删除来自不属于源文件层次结构一部分的目标的条目。请谨慎使用。您可能需要先使用-n
( --dry-run
) 进行测试运行。