rsync (cwrsync) в Gitbash - источник и назначение не могут быть оба удаленными. [Windows 7]
Я пытаюсь синхронизировать локальный путь с другим диском с помощью Git Bash в Windows 7. Я скачал cwRsync и скопировал файлы в мой каталог Git bash bin. Я могу запустить rsync, но следующая команда вызывает у меня проблемы
rsync -av /c/00-dev/05-batch /f/RSYNC/ Источник и пункт назначения не могут быть одновременно удаленными. Ошибка rsync: синтаксис или ошибка использования (код 1) в main.c(1135) [receive =3.0.6]
Оба пути верны, но не синхронизируются.
4 ответа
Временное решение: cd
в /c
а также rsync
using relative paths.
Так что это работает:
cd /c
touch temp/test.txt
rsync temp/test.txt temp/test2.txt
while this doesn't, even if you cd
в /c
:
$ rsync /c/temp/test.txt /c/temp/test2.txt
The source and destination cannot both be remote.
Tested with the Git Bash that came with git 2.9.0.windows.1
,
Это работает с использованием cwRsync из Git Bash.
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-накопитель), за исключением подпапки "Данные":
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.
У меня это работает следующим образом:
rsync.exe -avr --chmod=ugo=rwX "//DESKTOP-NQIR1HR/D$/Bkp Google Drive" "//DESKTOP-NQIR1HR/E$/Bkp Google Drive"
Где «DESKTOP-NQIR1HR» — имя хоста моего компьютера.