Быстрое и безопасное копирование с удаленного хоста в Linux

Не так давно я копировал англоязычную статью о копировании файлов, сжатых tar через ssh-туннель. В ней был рассмотрен способ заливки файлов на сервер, недавно мне понадобилась обратная операция — скопировать файлы с удаленного сервера к себе на комп.
Конвеер команд для этого выглядит так (запускается на машине, которая является приемником):

ssh user@host tar -C /path/to/dir/ -zcf - ./ | tar -zxf - ./


Мы исполняем команду tar через ssh на удаленном компьютере host, под учетной записью user. Ключ -С говорит о том что перед началом работы, необходимо перейти в папку /path/to/folder/.
Символ «-» говорит о том, что сжатый файл необходимо передавать в поток стандартного вывода, «./» Указывает на файл который нужно сжимать, благодаря параметру «-С» мы указываем просто текущую папку. 
Если выполнить эту команду до пайпа, то мы увидем бинарные данные. Через пайп (символ «|») мы перенаправляем этот поток на локально запущенный tar, который распаковывает его в папку (в примере указана текущая, но можно указать произвольную).

Напомню, что обратная операция выполняется командой (следите за руками, команды все те же, но связаны по-другому):

tar -zcf - ./ | ssh user@remotehost tar -C /path/to/dir -zxf -
  • Ress

    а если я уже подключен по ssh поработал немного и хочу скопировать файл. не ужели надо отключатся и заново набирать пароль? или всетаки есть вариант копирования без необходимости набора пароля