rsync 无法识别 Windows 路径

Yaj*_*Rai 4 rsync docker boot2docker docker-compose docker-toolbox

我试图通过在 git bash 中运行 shell 脚本来在 Windows 7(带有 Oracle VM 的 Docker 工具箱)中构建一个 docker 容器,该脚本具有带有 rsync 的命令,如下所示:

rsync -a --exclude='*/node_modules' $PROJECT_PATH/project_name/src/ ./project_name/src
Run Code Online (Sandbox Code Playgroud)

和价值$PROJECT_PATH=/c/Users/yajnesh_rai/git

这是我在控制台中看到的:

ssh: Could not resolve hostname c: Name or service not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.2]
Run Code Online (Sandbox Code Playgroud)

一些在线文档说使用正斜杠作为没有驱动器名称的路径,我尝试了这种方式

$PROJECT_PATH=\\Users\\yajnesh_rai\\git
Run Code Online (Sandbox Code Playgroud)

这使得 rsync 工作,但无法复制文件,如下所示:

\Users\yajnesh_rai\git/project_name/src/folder_name/file_name: warning: directory does not exist.
Run Code Online (Sandbox Code Playgroud)

我按照本文中提到的步骤在 Windows 上安装了 rsync: https: //blog.tiger-workshop.com/add-rsync-to-git-bash-for-windows/

任何解决该问题的帮助都将受到赞赏!提前致谢

K.M*_*ier 6

Rsync在Windows中存在绝对路径问题

rsync我在 Windows(Windows 10 64 位)上 使用时遇到了完全相同的问题。rsync不喜欢 Windows 绝对路径,因为C:路径中有 。因此,您应该:

C:用。。。来代替/cygdrive/c

 

使用示例

这是我在 Windows 上的使用方式rsync

rsync -av --delete /cygdrive/c/Users/Kristof/src_folder/ /cygdrive/c/Users/Kristof/dst_folder/
Run Code Online (Sandbox Code Playgroud)

rsync 将源文件夹同步C:/Users/Kristof/src_folder/到目标文件夹C:/Users/Kristof/dst_folder/

我使用以下标志:

  • -a--archive 存档模式;等于-rlptgoD(否-H, -A, -X

    • -r,--recursive 递归到目录
    • -l,--links 将符号链接复制为符号链接
    • -p,--perms 保留权限
    • -t--times 保留修改时间
    • -g,--group 保留组
    • -o,--owner 保留所有者(仅限超级用户)
    • -D 与...一样--devices --specials
      • --devices 保留设备文件(仅限超级用户)
      • --specials 保留特殊文件
  • -v,--verbose 增加详细程度

  •         --delete 从目标目录中删除无关文件