【问题标题】:rsync does not recognize windows pathrsync 无法识别 Windows 路径
【发布时间】:2018-07-26 10:34:24
【问题描述】:

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

rsync -a --exclude='*/node_modules' $PROJECT_PATH/project_name/src/ ./project_name/src

以及$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]

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

$PROJECT_PATH=\\Users\\yajnesh_rai\\git

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

\Users\yajnesh_rai\git/project_name/src/folder_name/file_name: warning: directory does not exist.

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

感谢任何解决此问题的帮助!提前致谢

【问题讨论】:

  • 找到解决方案了吗?

标签: docker docker-compose rsync boot2docker docker-toolbox


【解决方案1】:

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

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

C: 替换为/cygdrive/c

 

使用示例

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

rsync -av --delete /cygdrive/c/Users/Kristof/src_folder/ /cygdrive/c/Users/Kristof/dst_folder/

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 从目标目录中删除无关文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2016-09-11
    • 2015-04-19
    • 2019-07-20
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多