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» — имя хоста моего компьютера.

Другие вопросы по тегам