我正在尝试使用 Windows 7 中的 Git Bash 将本地路径同步到另一个驱动器。我下载了 cwRsync 并将文件复制到我的 Git bash bin 目录中。我可以运行 rsync 但以下命令给我带来了问题
rsync -av /c/00-dev/05-batch /f/RSYNC/ 源和目标不能都是远程的。rsync 错误:main.c(1135) [receiver=3.0.6] 处的语法或使用错误(代码 1)
两条路径都是正确的,但不会同步。
解决方法:cd
使用/c
相对rsync
路径。
所以这有效:
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
.
在 Windows 中,我尝试使用 cwRsync 在 Z:(网络磁盘) 和 D:(usb 记忆棒) 上的文件夹之间同步数据,不包括子文件夹“数据”:
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”。
这使用来自Git Bash的cwRsync有效。
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行为。