Передача файлов через SSH

9

Я хочу использовать передачу файлов через SSH на некоторых скриптах. Я читал, что можно смолить через SSH. С чего мне начать читать?

Фернандо Бриано
источник
Почему ты воспитываешь смолу?
Зоредаче
1
tar - это самый быстрый способ копирования файлов через SSH. У scp и rsync много копий протокола при копировании большого количества маленьких файлов.
Джастин
@Justin, конечно, с tar предполагается, что у вас будет надежное соединение. Если сырая производительность не имеет значения, обычно лучше придерживаться более распространенных и простых решений, таких как scp / rsync.
Зоредаче
1
да? tar over ssh не хуже, чем scp или rsync. Единственный аспект, в котором rsync лучше, это то, что он позволяет вам возобновить работу. Если соединение ненадежное, то, вероятно, все же стоит сначала попробовать tar через ssh, а затем завершить передачу с помощью rsync.
Джастин
@ Джастин, это был бы довольно сложный сценарий. Возможно, нам следует начать с чего-то более простого.
Джон Гарденье

Ответы:

23

Для передачи файлов через SSH вы можете

  • использовать scp
    • scp -r /srcdir/ user@remotehost:/destdir/
  • использовать rsync поверх ssh (см. параметр -e)
    • rsync -e ssh -a /srcdir/ user@remotehost:/destdir/
  • использовать какой-либо инструмент, который передает данные через stdin / out ( tar , cpio и т. д.)
    • cd /sourcedir; tar -c . | ssh username@remotehost bash 'cd /dstdir; tar -x
  • Смонтируйте файловую систему через sshfs (если в вашей системе поддерживается fuse)
Zoredache
источник
Я регулярно использую все три; какой из них я использую, зависит от обстоятельств.
reinierpost
3

У О'Рейли есть книга со всем этим - SSH, Безопасная оболочка: исчерпывающее руководство - если вы пользуетесь ею в Google, есть много ссылок, где можно ее купить и просмотреть в Интернете.

Кевин К
источник
Должен любить это, когда вы получаете отрицательный голос и без комментариев, чтобы сообщить вам, почему. Он спросил, с чего начать чтение - и это доступно онлайн и в книжном магазине. Это отличная ссылка для SSH.
Кевин К
Я думаю, что это тоже неправильно. Почему за вас проголосовали "за" (дважды), учитывая, что вы на самом деле ответили на вопрос, а принятый ответ (за который проголосовали 15 раз) - это общий способ копирования файлов по ssh без указания места начала чтения. Я собираюсь проголосовать за тебя, просто чтобы попытаться исправить ситуацию. Не позволяй им сбить тебя с толку.
Ричард Холлоуэй
0

Для tar поверх ssh вы можете использовать тот факт, что ssh пересылает stdin и stdout. Так что вы можете сделать

ssh server 'tar czf - /some/dir/' > tarfile.tar.gz

и иметь резервную копию на локальной машине.

Дэн Андреатта
источник