Я пытаюсь использовать PuTTY для подключения через SSH к Mac и загрузки некоторых файлов, указанных с помощью команды find.
Вы пытаетесь загрузить файлы в локальную систему Windows?
Помните, что PuTTY является SSH-клиентом. Все, что он делает, это отправляет напечатанный текст на ваш Mac и отображает полученный вывод. Поэтому, когда вы запускаете scp
как этот, он запускается на Mac, и имена файлов должны быть указаны, как видно на Mac.
Если вы хотите перенести файлы с Mac на Windows, то это scp macpath user@windowshost:windowspath
. (Похоже, вы изменили это в своей примерной команде.)
Это также означает, что вашему компьютеру Windows необходим SSH-сервер, на котором установлены возможности SCP, и что он должен разрешать входящие SSH-соединения.
Я не уверен, как указать локальный путь Windows.
Это зависит от того, какой SSH-сервер установлен в Windows. (См. Пункт выше.) Но обычно x:\dir\file
можно преобразовать в /x/dir/file
. Прочтите руководство.
В файлах есть пробелы, которые могут вызывать проблемы
Да, это вызывает проблемы с xargs
. Вы пошли в правильном направлении с xargs -0
, но вам нужно сделать то же самое с find
- find .... -print0
или find .... -printf "%p\0"
.
Если версия find
в Mac OS X не поддерживает ни -print0
ни -printf
, вы можете избежать использования новых строк в качестве разделителей. В этом случае не добавляйте никаких специальных параметров для find
, но измените xargs -0
на xargs -d '\n'
.
Лучшая альтернатива xargs
- find -exec
.
xargs -0 scp user@host:{} localpath
Здесь есть еще одна ошибка. По умолчанию xargs
не заменяет {}
именем файла; Вы должны конкретно указать это, используя -I "{}"
.
Возможно , вы спутали это с -exec
вариант в find
который не работает , как это:
find . -iname "*searchtext*" -exec scp user@host:{} localpath \;
Выше я оставил порядок аргументов scp
точности так, как это было в исходном примере. Но, как я уже говорил, это неправильно.