gitbash 中的 rsync (cwrsync) - 源和目标不能同时是远程的.[视窗 7]



我正在尝试使用 Windows 7 中的 Git Bash 将本地路径同步到另一个驱动器。我下载了cwRsync并将文件复制到我的Git bash bin目录中。我可以运行 rsync,但以下命令给我带来了问题

rsync -av/c/00-dev/05-batch/f/RSYNC/ 源和目标不能都是远程的。 rsync 错误:main.c(1135) 上的语法或使用错误(代码 1) [接收器=3.0.6]

两条路径都是正确的,但它不会同步。

解决办法:使用相对路径cd /crsync

所以这有效:

cd /c
touch temp/test.txt
rsync temp/test.txt temp/test2.txt

虽然这没有,但即使您cd /c

$ rsync /c/temp/test.txt /c/temp/test2.txt
The source and destination cannot both be remote.

git 2.9.0.windows.1附带的 Git Bash 进行测试。

这使用 Git BashcwRsync 工作。

export MSYS_NO_PATHCONV=1
rsync -av /cygdrive/c/00-dev/05-batch /cygdrive/f/RSYNC/

cwRsync.exe 需要/cygdrive/<drive-letter>才能实现绝对路径,因此简单的rsync -av /cygdrive/c/00-dev/05-batch /cygdrive/f/RSYNC/cmd 开始工作。

但是,Git Bash 将像 .../c/... 这样的路径转换为像 ...C:... 这样的奇怪东西。行:export MSYS_NO_PATHCONV=1阻止该转换。(查看更多:如何阻止 MinGW 和 MSYS 修改命令行中给出的路径名)。

使用脚本中的unset MSYS_NO_PATHCONV还原标准 Git Bash 行为。

在Windows中,我尝试cwRsync在位于Z:(网络磁盘)和D:(USB记忆棒)上的文件夹之间同步数据,不包括子文件夹"Data":

rsync -r -v --size-only --dry-run --exclude=Data --chmod=ugo=rwX /cygdrive/z/"Scan folder"/"Sub folder" /cygdrive/d/"Scan folder"/"Sub folder"

-r 表示递归,-v 详细输出,--dry-run 仅用于测试(数据不传输),--exclude 排除子文件夹或文件,--chmod=ugo=rwX 设置适当的权限(在此处阅读有关权限的更多信息并附有注释)

对于 Windows 上的西里尔文名称,请使用"chcp 65001"。

最新更新