Что является командой для ssh для нахождения файлов, какой *.png и загружают их

Я был соединен мой OpenSSH, но Что является командой для ssh для нахождения всех файлов, которые являются *.png и получают их одновременно, рекурсивно

4
задан 8 August 2011 в 12:46

2 ответа

Можно перечислить файлы интереса с 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 в удаленном корневом каталоге, нет никакого различия между двумя командами, но лучше быть безопасным.

6
ответ дан 1 December 2019 в 09:11

Самым быстрым путем я знаю, должен создать 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 для каждого файла.

2
ответ дан 1 December 2019 в 09:11

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

Похожие вопросы: