Hvordan kopiere filer fra en maskin til en annen ved hjelp av ssh

Jeg bruker Linux (centos) maskin, jeg har allerede koblet til det andre systemet ved hjelp av ssh. Nå er spørsmålet mitt hvordan jeg kan kopiere filer fra ett system til et annet system?

Anta at jeg i mitt miljø har to systemer som System A og System B. Jeg bruker System A maskin og noen andre bruker System B maskin.

Hvordan kan jeg kopiere en fil fra System B til System A? Og kopier en fil fra System A til System B?

Kommentarer

  • Jeg synes scp er ofte en tungestein. Hvis det kan imøtekomme dine behov, kan du prøve dette linuxjournal.com/article/8904 Det monteres det eksterne filsystemet lokalt.
  • @Alan Jeg tror du mener » tungvint «? Cumber Stone er et Magic -kort;)
  • noe i slekt: lag et kryptert arkiv av lokal dir/ på ekstern maskin ved bruk av ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Hvis du har tilgang til ftp til den eksterne serveren, kan vi også bruke wget til å laste ned som $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referanse1 Referanse2
  • Ikke duplikat, koblet spørsmål ber spesifikt om ikke å bruke scp; for den ene scp er den fineste og enkleste måten å svare på, så mods, vennligst fjern duplikatflagget som om noen vil gå til et annet, det mest nyttige svaret blir savnet.

Svar

Syntaks:

scp <source> <destination> 

Til kopier en fil fra B til A mens du er logget på B:

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

For å kopiere en fil fra B til A mens du er logget på A:

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

Kommentarer

  • For å avklare, du vanligvis ikke bruk ‘ t scp for å kopiere en fil til eller fra din lokale maskin (System A) mens du er logget på en ekstern server (System B) med ssh. scp logger deg på den eksterne serveren, kopierer filen og logger deg ut igjen i en prosess, så bare kjør den fra et skall på din lokale maskin. Når det er sagt, kan du bruke scp hvis du ‘ er logget på System B via SSH og vil kopiere filer mellom System B og System C.
  • @DopeGhoti. Ja, du kan ‘ t flytte filer mellom to eksterne datamaskiner. Enten kilden eller destinasjonen må være en lokal fil. Men hvis du logger på en ekstern maskin med ssh, kan du kopiere filer mellom to eksterne maskiner på den maskinen ‘ s kommandolinje.
  • Også, en viktig ting å huske er at du bare kan scp til en mappe på målmaskinen du har tillatelse til. Hvis du prøver å kopiere den til et mål som målbrukeren ikke har tillatelse til, må du først kopiere filen til brukeren ‘ sin hjemmekatalog eller underkatalog og deretter ssh inn i målmaskin og sudo flytter den til den endelige destinasjonen
  • Husk -r (rekursiv) og -p (bevar systemmetadata): scp -rp < fil1 > < file2 >
  • Ja, bruk -P for å spesifisere TCP-porten på den eksterne verten. Dette fanger meg hver gang, fordi ssh bruker -p.

Svar

Hvis du trenger en alternativ tilnærming.

Installer sshfs. hvis du bruker ubuntu / debian:

sudo apt-get install sshfs 

eller, hvis du bruker centos / rhel:

sudo yum install fuse-sshfs 

eller i macOS

brew install sshfs 

Opprett en tom dir

mkdir /home/user/testdir 

«lenke» eller «monter» de to katalogene

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

«koble fra» dirs

fusermount -u /home/user/testdir 

For å demontere filsystemet på BSD og macOS:

umount mountpoint 

eller

diskutil unmount mountpoint 

For mer se her, linuxjournal.com libfuse / sshfs

Kommentarer

  • Spørsmålet sier spesifikt at det aktuelle operativsystemet er CentOS; ikke Debian-avledet. apt-get er en Debianisme; den riktige pakkehåndtereren ville være yum eller, for virkelig gamle smaker av CentOS, up2date eller rpm.
  • +1 svaret på dette spørsmålet kan være utenfor sammenheng, men det hjalp meg fortsatt, og så vidt jeg kan se andre også.
  • Ikke relatert, men det ‘ et svar på en million dollar xD
  • Hvis jeg forstår riktig, gir dette tilgang til de eksterne filene, men KOPIERER de ikke?
  • @ ToolmakerSteve deg ‘ har helt rett: den oppretter en falsk katalog (mount), slik at du kan bruke alle dine foretrukne verktøy til å kopiere eller flytte ting: cp, mv, rm, rsync, unisonscp kommandoen vil bare kunne kopiere filer.

Svar

Noen ganger trenger du å bli fancy med tjære:

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? Slik delte vi båndstasjoner. 🙂
  • Kan du fortelle oss hva dette gjør? Jeg aner for eksempel ikke hva ‘ cron ‘ har å gjøre med å kopiere fil!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget er individuelle filer som skal inkluderes i tararkivet. Poenget var å illustrere hvorfor du noen ganger trenger å bli fancy. Denne serien av kommandoer streamer tjærearkivet over en ssh-forbindelse og fjerner arkivet på den andre siden. Dermed blir det aldri skrevet noe tjærearkiv til disken. Jeg bruker dette noen ganger for å kirsebærplukke filer for å kopiere i en kommando.
  • Ow! Jeg lærte at den første ‘ / ‘ var kildestien! (Hva er det?) Så det var et dumt spørsmål! Takk. 🙂
  • Tar vil chdir til » / » og dermed er alle følgende baner i forhold til » / «.

Svar

Hvis du vil ha filene på begge systemene synkronisert, kan du ta en titt på rsync -programmet:

(se opplæringen her)

Kommentarer

  • Dette er et virkelig profesjonelt verktøy.

Svar

Hvis du har et av de vanlige operativsystemene, kan du installere pigz som er det samme som gzip bortsett fra at det vil bruke flere kjerner og være raskere over et raskt nettverk. Kommandoen min er litt annerledes.

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

eller den andre måten å hente filer på

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

eller ta sikkerhetskopi av roten fs med

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

Kommentarer

Svar

En enklere metode som fungerer med via SSH-kontrollerte NVIDIA Jetson-datamaskiner er å koble til SFTP (SSH File Transfer Protocol).

Anta at jeg ønsker å flytte dokumentet UFO_blueprint.odt fra NASAs eksterne servere og flytt den til dokumentene mine.

  1. cd dit du vil at filen skal lagres
$ cd Documents 
  1. Koble til
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Gå til katalogen som inneholder filen som skal overføres.
$ cd NASA/secret_files/ 
  1. Overføring
$ get UFO_blueprint.odt 

For å få den komplette katalogen, bruk i stedet

$ get -r secret_files/ 

Kommentarer

  • bruk put kommando for opplasting av filer

Svar

Unix / Linux rekursiv kopi av filer og mapper over et sikkert skall med koden som følger:

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

Et fullstendig eksempel kan se ut:

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

Merk at hvis du ikke har en DNS-server for å løse vertsnavn, bruk IP-adressen din i stedet. Eksemplet ovenfor kan se slik ut

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

Svar

Hvis de kjører SCP / SSH på en annen port, sørg for at du angir store -P portalternativer.

Eksempel:

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

Kommentarer

  • Dette spørsmålet er syv år gammelt og har mange svar allerede. Selv om det er sant at ssh kan bruke ikke-standardporter, og ssh-klientens ‘ s -P -alternativet kreves, trenger du ikke ‘ hjelper ikke virkelig problemet. Prøv å fokusere på nylige spørsmål.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *