Я был соединен мой OpenSSH, но Что является командой для ssh для нахождения всех файлов, которые являются *.png и получают их одновременно, рекурсивно
Можно перечислить файлы интереса с ssh
, затем загрузите их scp
:
ssh user@host find /remote_path -iname '*.png' |
while read pngfile; do
scp user@host:"$pngfile" /local_path
done
Все *.png
файлы под /remote_path
будет загружен на /local_path
, но удаленная структура каталогов не будет создана (все файлы будут помещены в тот же каталог), таким образом, у Вас смогут быть проблемы, если у Вас есть два файла с тем же именем в различных каталогах.
Править
Удаленное find
командная строка должна быть исправлена таким образом:
find /remote_path -iname "'*.png'"
где внутренняя пара одинарных кавычек необходима для предотвращения локального расширения пути оболочки *
, тогда как внешняя пара двойных кавычек необходима для предотвращения удаленного расширения пути оболочки *
.
Два типа кавычек могли быть обменами, и другие синтаксисы могли использоваться, как \''*.png'\'
, \""*.png"\"
или "\"*.png\""
.
Если у Вас нет .png в удаленном корневом каталоге, нет никакого различия между двумя командами, но лучше быть безопасным.
Самым быстрым путем я знаю, должен создать tar.gz удаленно, передать его через SSH и untar локально:
ssh user@remotehost 'find /remote/path/ -name "*.png" -print0 2>/dev/null | xargs -0 tar cfz - ' | tar xvfz -
Это будет работать с именами файлов с пробелами и быстрее, чем scp -r
и намного быстрее, чем scp
для каждого файла.