使用通配符时 rsync“没有这样的文件或目录”

使用通配符时 rsync“没有这样的文件或目录”

我正在尝试使用rsync将文件夹的内容复制到另一个文件夹。这是我为此使用的命令。

rsync -v -r $folder64/Pictures/* $folder65/Pictures/

这是错误代码。

building file list ... rsync: link_stat "/Volumes/HD/Users/jol/Pictures/*" failed: No such file or directory (2)
done

我在很多包含项目的文件夹中得到了这个。有时,例如,如果我只是在桌面上创建一些东西。

答案1

要将文件夹复制到另一个文件夹,rsync只需执行以下操作

rsync -a /source/folder/path/ /destination/folder/path/

就你而言,

rsync -a "$folder64/Pictures/" "$folder65/Pictures/"

/重要的是对源的追踪。

使用时,$folder64/Pictures/*您可能不会复制单个文件夹的内容,因为命令行参数会扩展为源文件夹中与*文件名通配模式匹配的项目列表,并且这通常与隐藏文件或文件夹不匹配。

在您的特定情况下,您会收到错误消息“没有这样的文件或目录”。这意味着您指定为源的目录根本不存在,或者是空的。如果它为空,这会导致*保持未展开状态,并且rsync无法找到*要同步的给定文件(称为 )。

答案2

rsync您是否可能使用涉及的别名noglob?一些 shell 配置框架会为您设置(例如 zsh 的 prezto)。我经历过同样的行为,你可以:

  1. 取消设置别名 ( unalias rsync)
  2. 输入完整路径(/usr/bin/rsync [etc.]可能)
  3. 或使用command rsync [etc.]

来规避它。

相关内容