我正在尝试通过在 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/
任何帮助解决这个问题表示赞赏!提前致谢
最佳答案
Rsync 在 Windows 中存在绝对路径问题
我在使用 rsync
时遇到了完全相同的问题在 Windows(Windows 10 64 位)上。rsync
不喜欢绝对的 Windows 路径,因为 C:
在路径中。因此,您应该:
Replace
C:
with/cygdrive/c
.
使用示例
这就是我使用
rsync
的方式在 Windows 上: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
将符号链接(symbolic link)复制为符号链接(symbolic link) -p
, --perms
保留权限 -t
, --times
保留修改时间-g
, --group
保存组-o
, --owner
保留所有者(仅限 super 用户)-D
与 --devices
相同--specials
--devices
保留设备文件(仅限 super 用户)--specials
保存特殊文件 -v
, --verbose
增加详细程度 --delete
从 dest 目录中删除无关文件 关于docker - rsync 无法识别 Windows 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51536762/