Przesyłaj pliki przez SSH

9

Chcę używać transferu plików przez SSH w niektórych skryptach. Przeczytałem, że możliwe jest tarowanie przez ssh. Gdzie powinienem zacząć czytać?

Fernando Briano
źródło
Dlaczego wychowujesz smołę?
Zoredache,
1
tar jest najszybszym sposobem kopiowania plików przez SSH. scp i rsync mają dużo narzutu protokołu podczas kopiowania wielu małych plików.
Justin
@Justin, oczywiście założenie dotyczące tar jest takie, że będziesz mieć niezawodne połączenie. Jeśli surowa wydajność nie ma znaczenia, zwykle lepiej jest trzymać się bardziej popularnych i prostych rozwiązań, takich jak scp / rsync.
Zoredache,
1
co? tar przez ssh nie jest gorszy niż scp lub rsync. Jedynym aspektem, w którym rsync jest lepszy, jest możliwość wznowienia. Jeśli połączenie nie jest niezawodne, prawdopodobnie nadal warto spróbować najpierw tar przez ssh, a następnie zakończyć transfer za pomocą rsync.
Justin
@Justin, to byłby dość skomplikowany skrypt. Być może powinniśmy zacząć od czegoś nieco bardziej podstawowego.
John Gardeniers,

Odpowiedzi:

23

Aby wykonać transfer plików przez ssh, możesz

  • użyj scp
    • scp -r /srcdir/ user@remotehost:/destdir/
  • użyj rsync nad ssh (patrz parametr -e)
    • rsync -e ssh -a /srcdir/ user@remotehost:/destdir/
  • użyj jakiegoś narzędzia, które przesyła dane przez standardowe wejście / wyjście ( tar , CPIO itp.)
    • cd /sourcedir; tar -c . | ssh username@remotehost bash 'cd /dstdir; tar -x
  • Zamontuj system plików za pomocą sshfs (jeśli w systemie obsługiwany jest bezpiecznik)
Zoredache
źródło
Regularnie używam wszystkich trzech; którego używam zależy od okoliczności.
reinierpost
3

O'Reilly ma książkę z tym wszystkim - SSH, The Secure Shell: The Definitive Guide - jeśli zdecydujesz się na Google, znajdziesz wiele referencji, miejsc do kupienia i przeglądania online.

Kevin K.
źródło
Uwielbiam to, gdy jesteś pochlebny i nie ma komentarzy, które dadzą Ci znać. Zapytał, od czego zacząć czytanie - i to jest dostępne online i w księgarni. Jest to świetne odniesienie do ssh.
Kevin K
Myślę, że to też jest złe. Dlaczego przegłosowano (dwukrotnie), biorąc pod uwagę, że faktycznie odpowiedzieliście na pytanie, a zaakceptowana odpowiedź (głosowano dotychczas 15 razy) to ogólny sposób kopiowania plików przez ssh bez odniesienia do tego, od czego zacząć czytanie. Głosuję za tobą, żeby spróbować naprawić sytuację. Nie pozwól, żeby cię przygnębiły.
Richard Holloway,
0

W przypadku tar przez ssh możesz użyć faktu, że ssh przesyła stdin i stdout. Więc możesz to zrobić

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

i mieć kopię zapasową na komputerze lokalnym.

Dan Andreatta
źródło