У меня есть файл, который выглядит так:

/cygdrive/d/path/to/my/file1.png
/cygdrive/d/path/to/my/file2.png
/cygdrive/d/path/to/my/file3.png
/cygdrive/d/path/to/my/file4.png

Я звоню rsync с:

rsync --files-from="/cygdrive/d/myfiles.txt" "/cygdrive/d/path/to/" "user@remotehost:/cygdrive/c/new/path/for"

Я хочу, чтобы rsync сделал структуру dir такой:

c:\new\path\for\my\file1.png
...

Но это терпит неудачу с ошибками как:

rsync: change_dir "/cygdrive/c/new/path/for/cygdrive/d/path/to/my" не удалось: нет такого файла или каталога rsync: mkstmp "/cygdrive/c/new/path/for/cygdrive/d/path/to/my/file1.png.asdjfhsdj "не удалось: нет такого файла или каталога

Как заставить rsync понять, что /cygdrive/d/path/to/ является частью исходного пути, который является "корнем", и что только подпапки / файлы из него должны реплицироваться в корневой каталог назначения, чтобы дать новый путь в пункт назначения?

1 ответ1

1

Кажется, что бит, указанный в командной строке, является частью "исходного корня", а строка из файла является "относительной" частью.

Поэтому мне нужно было удалить /cygdrive/d/path/to/ из всех строк в файле, оставив только my/file1.png

Затем при вызове из командной строки из вопроса rsync собрал локальный путь к файлу, используя cmd_line_source + file_line , и скопировал его в cmd_line_dest + file_line

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .