Hur man kopierar filer från en maskin till en annan med ssh

Jag använder Linux (centos) -maskin, jag har redan anslutit till det andra systemet med ssh. Nu är min fråga hur kan jag kopiera filer från ett system till ett annat system?

Antag att i min miljö har jag två system som System A och System B. Jag använder System A -maskinen och några andra använder System B maskin.

Hur kan jag kopiera en fil från System B till System A? Och kopiera en fil från System A till System B?

Kommentarer

  • Jag tycker att scp ofta är en cumbersten. Om det skulle kunna passa dina behov kan du prova detta linuxjournal.com/article/8904 Det monterar fjärrfilsystemet lokalt.
  • @Alan Jag tror att du menar ” besvärlig ”? Cumber Stone är ett Magic -kort;)
  • något relaterat: gör ett krypterat arkiv av lokal dir/ på fjärrmaskin med ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Om du har tillgång till fjärrservern ftp kan vi också använda wget för att ladda ner som $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referens1 Referens2
  • Inte duplikat, länkad fråga frågar specifikt att inte använda scp; för det är scp det bästa och enklaste sättet som svar, så mods var god ta bort dubblettflaggan som om någon går till en annan, det mest användbara svaret kommer att missas.

Svar

Syntax:

scp <source> <destination> 

Till kopiera en fil från B till A medan du är inloggad på B:

scp /path/to/file username@a:/path/to/destination 

För att kopiera en fil från B till A medan du är inloggad på A:

scp username@b:/path/to/file /path/to/destination 

Kommentarer

  • För att klargöra, brukar du använd ’ t scp för att kopiera en fil till eller från din lokala maskin (System A) när du är inloggad på en fjärrserver (System B) med ssh. scp loggar in dig på fjärrservern, kopierar filen och loggar sedan ut igen i en process, så kör bara från ett skal på din lokala maskin. Med detta sagt kan du använda scp om du ’ är inloggad i System B via SSH och vill kopiera filer mellan System B och System C.
  • @DopeGhoti. Ja, du kan ’ t flytta filer mellan två fjärrdatorer. Antingen måste källan eller destinationen vara en lokal fil. Om du loggar in på en fjärrmaskin med ssh kan du dock kopiera filer mellan två fjärrmaskiner på den maskinen ’ s kommandorad.
  • Dessutom en viktig sak att komma ihåg är att du bara kan scp till en mapp på målmaskinen som du har behörighet till. Om du försöker kopiera den till en destination som målanvändaren inte har behörighet, kopierar du först filen till användaren ’ hemkatalog eller underkatalog och sedan ssh till målmaskin och sudo flytta den till den slutliga destinationen
  • Kom ihåg -r (rekursiv) och -p (bevara systemmetadata): scp -rp < fil1 > < file2 >
  • Ja, använd -P för att ange TCP-porten på fjärrvärden. Detta fångar mig varje gång, för ssh använder -p.

Svar

Om du behöver en alternativ metod.

Installera sshfs. om du använder ubuntu / debian:

sudo apt-get install sshfs 

eller, om du använder centos / rhel:

sudo yum install fuse-sshfs 

eller, i macOS

brew install sshfs 

Skapa en tom dir

mkdir /home/user/testdir 

”länk” eller ”montera” de två katalogerna

sshfs [email protected]:/remote/dir /home/user/testdir 

”ta bort länken” dirs

fusermount -u /home/user/testdir 

På BSD och macOS, för att avmontera filsystemet:

umount mountpoint 

eller

diskutil unmount mountpoint 

För mer se här, linuxjournal.com libfuse / sshfs

Kommentarer

  • Frågan säger specifikt att operativsystemet i fråga är CentOS; inte härrör från Debian. apt-get är en Debianism; rätt pakethanterare skulle vara yum eller, för riktigt gamla smaker av CentOS, up2date eller rpm.
  • +1 svaret på den här frågan kan vara utanför sammanhanget, men det hjälpte mig ändå, och så vitt jag kan se andra också.
  • Inte relaterat, men det ’ ett svar på en miljon dollar xD
  • Om jag förstår rätt ger detta ACCESS till fjärrfilerna, men KOPIERAR inte dem?
  • @ VerktygsmakareStyr dig ’ är helt rätt: den skapar en falsk katalog (mount) så att du kan använda alla dina verktyg för att kopiera eller flytta saker: cp, mv, rm, rsync, unison … Kommandot scp skulle bara kunna kopiera filer.

Svar

Ibland behöver du tjäna på tjära:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Kommentarer

  • Kreativitet? Så här brukade vi dela bandstationer. 🙂
  • Kan du berätta vad det här gör? Till exempel har jag ingen aning om vad ’ cron ’ har att göra med kopieringsfilen!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget är enskilda filer som ska ingå i tararkivet. Poängen var att illustrera varför du ibland behöver bli snygg. Denna serie av kommandon strömmar tjärarkivet över en ssh-anslutning och tar bort arkivet på andra sidan. Därför skrivs inget tjärarkiv någonsin till hårddisken. Jag använder det ibland för att körsbärsplocka filer för att kopiera i ett kommando.
  • Ow! Jag lärde att den första ’ / ’ var källvägen! (Vad är det?) Så det var en dum fråga! Tack. 🙂
  • Tar kommer att chdir till ” / ” så att alla följande vägar är relativt ” / ”.

Svar

Om du vill hålla filerna på båda systemen synkroniserade, ta en titt på rsync -programmet:

(se handledning här)

Kommentarer

  • Detta är ett verkligt professionellt verktyg.

Svar

Om du har ett av de vanliga operativsystemen kan du installera pigz som är samma som gzip förutom att det kommer att använda flera kärnor och vara snabbare över ett snabbt nätverk. Mitt kommando är lite annorlunda.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

eller på annat sätt för att få filer

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

eller säkerhetskopiera roten fs med

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

Kommentarer

Svar

En enklare metod som fungerar med SSH-kontrollerade NVIDIA Jetson-datorer är att ansluta till SFTP (SSH File Transfer Protocol).

Antag att jag vill flytta dokumentet UFO_blueprint.odt från NASA: s fjärrservrar och flytta det till mina dokument.

  1. cd dit du vill att filen ska sparas
$ cd Documents 
  1. Anslut
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Gå till katalogen som innehåller filen som ska överföras.
$ cd NASA/secret_files/ 
  1. Överföring
$ get UFO_blueprint.odt 

För att få hela katalogen, använd istället

$ get -r secret_files/ 

Kommentarer

  • använd put -kommando för överföring av filer

Svar

Unix / Linux rekursiv kopia av filer och mappar över ett säkert skal med koden som följer:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Ett fullständigt exempel kan se ut:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Obs! Om du inte har en DNS-server för att lösa värdnamn, använd din IP-adress istället. Exemplet ovan kan se ut så här

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Svar

Om de kör SCP / SSH på en annan port, se till att du anger versal -P portalternativ.

Exempel:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Kommentarer

  • Den här frågan är sju år gammal och har många svar redan. Även om det är sant att ssh kan använda icke-standardportar och ssh-klient ’ s -P krävs då, du behöver inte ’ hjälper verkligen inte problemet. Försök att fokusera på de senaste frågorna.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *