W SSH, jak mogę wykonać mv do mojego systemu lokalnego?

129

I ssh-ed do katalogu mojego hosta i tar-ed aplikacji internetowej do pobrania. Kiedy próbuję mvdo ~/mydirectory/backupslub /home/mydirectory/backupsdefiniuje się jako „dom” root na moim witryną, że jestem ssh'ed się.

Jak wykonać mv in ssh na dysk lokalny, będąc nadal w systemie hosta?

JeanSibelius
źródło
Z jakiego systemu operacyjnego się łączysz?
Zoredache,

Odpowiedzi:

181

Po pierwsze: ssh to sposób zdalnego logowania na innym komputerze. Powłoka (linia poleceń), którą otrzymujesz po ssh, jest (prawie) taka sama, jakbyś otworzył xterm na zdalnej maszynie. Jeśli nie oferuje takiego sposobu przenoszenia plików.

Jednak fakt, że komputer zdalny akceptuje połączenia ssh, daje kilka opcji wymiany plików:

Użyj scp Aby skopiować z komputera lokalnego na zdalny, wpisz w komputerze lokalnym:

scp /tmp/file [email protected]:/home/name/dir

(gdzie / tmp / file można zastąpić dowolnym plikiem lokalnym, a / home / name / dir dowolnym zdalnym katalogiem)

Aby skopiować z komputera zdalnego na komputer lokalny, wpisz w komputerze lokalnym :

scp [email protected]:/home/name/dir/file /tmp

Użyj sshfs Jest to trochę bardziej zaawansowane, ale o wiele ładniejsze (gdy połączenie internetowe obu komputerów jest dobre. Jeśli nie, trzymaj się scp)

Możesz „połączyć” katalog ze zdalnego komputera z (pustym) katalogiem komputera lokalnego. Powiedz, że „łączysz” katalog / some / remote / dir ze zdalnego komputera z / home / youruser / remotecomp na twoim komputerze. Jeśli na komputerze zdalnym znajduje się plik / some / remote / dir / file, możesz go zobaczyć w pliku / home / youruser / remotecomp / file. Możesz kopiować i mv jak zwykle, a nawet zmieniać zdalne pliki i katalogi.

Pamiętaj jednak, że po zakończeniu połączenia / home / youruser / remotecomp ponownie staje się pustym katalogiem, a na komputerze lokalnym przechowujesz tylko pliki skopiowane do innych katalogów

Osiągnąć to:

1) zainstaluj sshfs:

sudo apt-get install sshfs

2) utwórz pusty katalog

mkdir /home/youruser/remotecomp

3) „połącz” dwa katalogi (właściwym terminem jest mount)

sshfs [email protected]:/some/remote/dir /home/youruser/remotecomp

4) Ciesz się

5) „odłącz” katalogi

fusermount -u /home/youruser/remotecomp

Jeśli na komputerze lokalnym działa system Windows, możesz znaleźć wersje systemu scpWindows. Zobacz np. Winscp

josinalvo
źródło
Czy istnieje sposób na skopiowanie pliku z komputera zdalnego na komputer lokalny za pomocą „terminala na komputerze zdalnym”? W twoim przypadku użyłeś terminala na lokalnej maszynie. Mówię o sytuacji, w której lokalny komputer to Windows, a zdalny to Ubuntu i jestem zalogowany do zdalnego komputera przez ssh.
chandresh
Zwykle nie. O ile mi wiadomo, kopiowanie przez „terminal na zdalnej maszynie” oznacza, że ​​potrzebujesz serwera SSH na „maszynie lokalnej” (celowo pominąłem to podczas mojej odpowiedzi, ale „fakt, że komputer zdalny akceptuje połączenia ssh” oznacza powiedzieć „fakt, że na komputerze zdalnym działa serwer ssh”)
josinalvo
Można jednak znaleźć „klientów scp” dla systemu Windows. Patrz np. Winscp.net/eng/download.php
josinalvo
Uwielbiam tę sshfsopcję
Fibo Kowalsky
Jeśli przenosisz duży plik, użyj rsync over ssh with rsync -P -e ssh /tmp/file [email protected]:/home/name/dir. Wynika to z faktu, że jeśli transfer pliku nie powiedzie się w połowie, scpplik zostanie po prostu usunięty. Z drugiej strony, jeśli użyjesz rsyncz tą -Popcją, zachowa niekompletny plik na komputerze zdalnym, a po ponownym uruchomieniu przesyłania upewni się, że to, co jest już na komputerze zdalnym, pasuje do pliku na komputerze lokalnym i następnie kontynuuj od momentu przerwania transferu.
Boris,
16

Możesz użyć scpalbo rsync. W twoim systemie lokalnym:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

Ale skoro wspomniałeś o tworzeniu kopii zapasowych, zakładam, że byłoby to przyrostowe i będziesz musiał to robić od czasu do czasu. Jest więc rsynclepszym wyborem do tworzenia przyrostowych kopii zapasowych. W lokalnej powłoce:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

zobacz rsync(1)i scp(1)man strony dla opcji.

Mohammad Hedayati
źródło
10

Możesz użyć bezpiecznej kopii scp .

Od ciebie lokalna powłoka:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Ten przykład skopiuje przez ssh z /path/of-the/tar.archive twojego webhosta do / home / mydirectory / backups /

Dodatkowe opcje:

-C : Włącza kompresję

pl1nk
źródło
6

Miałem ten sam problem. Oto proste rozwiązanie: -

  1. Otwórz nautilus (eksplorator plików)
  2. Kliknij na + Other Locationsdole lewego panelu.
  3. Na dole znajduje się pasek Connect to server. Wpisz adres ssh w polu wprowadzania, np ssh://111.222.333.444/.
  4. Wprowadź swoją nazwę użytkownika i hasło w oknie dialogowym, które zostanie otwarte.
  5. Po udanym uwierzytelnieniu będziesz w homezdalnej lokalizacji. Możesz przenieść plik tu i tam.
rushi
źródło
Świetna odpowiedź! Prosta i najbliższa odpowiedź na rzeczywiste pytanie, tj. W jaki sposób mv z poziomu komputera zdalnego ssh. Odpowiedź brzmi: nie możesz, robisz to z lokalnego komputera. Albo to! Robisz to graficznie z poziomu eksploratora, aby przynajmniej użytkownikowi wydawało się, że możesz przenosić pliki bezpośrednio ze zdalnego na lokalny.
Kvothe
2

Inne odpowiedzi zalecają rsynclub scp, które wymagają znajomości lokalizacji pliku, który chcesz skopiować na zdalnym komputerze.

Jeśli zamiast tego chcesz mieć możliwość grzebania się na zdalnej maszynie, tak jak możesz ssh, chcesz biegać sftp. Logowanie do serwera jest bardzo podobne ssh, ale po wejściu wpisz helplistę poleceń - pozwala ci poruszać się zarówno na komputerach lokalnych, jak i zdalnych oraz łatwo przesyłać pliki tam iz powrotem.

Xanthir
źródło
1

To dziwne, że to niemożliwe od wewnątrz ssh. W zwykłym terminalu można wysyłać / odbierać pliki za pomocą poleceń zmodem.

Pomogło to Google zssh: http://zssh.sourceforge.net/ . Trzeba będzie uruchomić go jako opakowanie do oryginału ssh.

Victor Sergienko
źródło