我试图通过在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/
感谢您为解决该问题提供的帮助!!预先感谢
答案 0 :(得分:1)
在Windows(64位Windows 10)上使用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
从目标目录中删除无关文件