Sådan kopieres filer fra en maskine til en anden ved hjælp af ssh

Jeg bruger Linux (centos) -maskine, jeg har allerede oprettet forbindelse til det andet system ved hjælp af ssh. Nu er mit spørgsmål, hvordan kan jeg kopiere filer fra et system til et andet system?

Antag, i mit miljø har jeg to systemer som System A og System B. Jeg bruger System A maskine og nogle andre ved hjælp af System B maskine.

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

Kommentarer

  • Jeg finder ud af, at scp ofte er en stensten. Hvis det kan imødekomme dine behov, skal du prøve dette linuxjournal.com/article/8904 Det monterer det eksterne filsystem lokalt.
  • @Alan Jeg tror du mener ” besværlig “? Cumber Stone er et Magic -kort;)
  • noget beslægtet: lav et krypteret arkiv af lokal dir/ på fjernmaskine ved hjælp af ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Hvis du har adgang til fjernserverens ftp, kan vi også bruge wget til at downloade som $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Reference1 Reference2
  • Ikke duplikat, linket spørgsmål beder specifikt om ikke at bruge scp; for den ene scp er den fineste og mest nemme måde at svare på, så mods skal du fjerne duplikatflag som om nogen vil gå til en anden, mest nyttige svar vil gå glip af.

Svar

Syntaks:

scp <source> <destination> 

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

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

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

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

Kommentarer

  • For at afklare, typisk don ‘ t brug scp til at kopiere en fil til eller fra din lokale maskine (System A), mens du er logget på en ekstern server (System B) med ssh. scp logger dig på fjernserveren, kopierer filen og logger dig derefter ud igen i en proces, så bare kør den fra en skal på din lokale maskine. Når det er sagt, kan du bruge scp hvis du ‘ er logget ind på System B via SSH og vil kopiere filer mellem System B og System C.
  • @DopeGhoti. Ja, du kan ‘ t flytte filer mellem to fjerncomputere. Enten skal kilden eller destinationen være en lokal fil. Men hvis du logger ind på en ekstern maskine med ssh, kan du kopiere filer mellem to eksterne maskiner på den maskine ‘ s kommandolinje.
  • Også en vigtig ting at huske er, at du kun kan scp til en mappe på målmaskinen, som du har tilladelser til. Hvis du prøver at kopiere det til en destination, som målbrugeren ikke har tilladelse til, skal du først kopiere filen til brugeren ‘ s hjemmekatalog eller underkatalog og derefter ssh ind i målmaskine og sudo flyt den over til den endelige destination
  • Husk -r (rekursiv) og -p (bevar systemmetadata): scp -rp < fil1 > < file2 >
  • Ja, brug -P for at specificere TCP-porten på den eksterne vært. Dette fanger mig hver gang, fordi ssh bruger -p.

Svar

Hvis du har brug for en alternativ tilgang.

Installer sshfs. hvis du bruger ubuntu / debian:

sudo apt-get install sshfs 

eller, hvis du bruger centos / rhel:

sudo yum install fuse-sshfs 

eller i macOS

brew install sshfs 

Opret en tom dir

mkdir /home/user/testdir 

“link” eller “monter” de to mapper

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

“fjern linket” til dirs

fusermount -u /home/user/testdir 

For at afmontere filsystemet på BSD og macOS:

umount mountpoint 

eller

diskutil unmount mountpoint 

For mere se her, linuxjournal.com libfuse / sshfs

Kommentarer

  • Spørgsmålet angiver specifikt, at det pågældende operativsystem er CentOS; ikke afledt af Debian. apt-get er en Debianisme; den korrekte pakkehåndtering ville være yum eller, for rigtig gamle smag af CentOS, up2date eller rpm.
  • +1 svaret på dette spørgsmål kan være uden for sammenhængen, men det hjalp mig stadig, og så vidt jeg kan se andre også.
  • Ikke relateret, men det ‘ et svar på en million dollars xD
  • Hvis jeg forstår det rigtigt, giver dette ADGANG til fjernfilerne, men KOPIERER dem ikke?
  • @ Værktøjsmager Gør dig ‘ har helt ret: det opretter en falsk mappe (mount), så du kan bruge alle dine foretrukne værktøjer til at kopiere eller flytte ting: cp, mv, rm, rsync, unison … Kommandoen scp kunne kun kopiere filer.

Svar

Nogle gange skal du få lyst til 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? Sådan delte vi bånddrev. 🙂
  • Kan du fortælle os, hvad dette gør? For eksempel har jeg ingen idé om, hvad ‘ cron ‘ har at gøre med kopiering af fil!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget er individuelle filer, der skal inkluderes i tjærearkivet. Pointen var at illustrere, hvorfor du nogle gange har brug for at få lyst. Denne række kommandoer streamer tjærearkivet over en ssh-forbindelse og fjerner arkiveringen på den anden side. Således skrives der aldrig noget tjærearkiv til disken. Jeg bruger dette nogle gange til at kirsebærplukke filer til at kopiere i en kommando.
  • Ow! Jeg lærte, at den første ‘ / ‘ var kildestien! (Hvad er det?) Så det var et fjollet spørgsmål! Tak. 🙂
  • Tar vil chdir til ” / ” således er alle de følgende stier i forhold til ” / “.

Svar

Hvis du vil holde filerne på begge systemer synkroniserede, skal du kigge på rsync -programmet:

(se vejledning her)

Kommentarer

  • Dette er et rigtigt professionelt værktøj.

Svar

Hvis du har et af de almindelige operativsystemer, kan du installere pigz, der er den samme som gzip, bortset fra at den bruger flere kerner og være hurtigere over et hurtigt netværk. Min kommando er lidt anderledes.

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

eller den anden måde at hente filer på

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

eller sikkerhedskopier rodfs med

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

Kommentarer

Svar

En enklere metode, der fungerer sammen med SSH-kontrollerede NVIDIA Jetson-computere, er at oprette forbindelse til SFTP (SSH File Transfer Protocol).

Antag, at jeg vil flytte dokumentet UFO_blueprint.odt fra NASAs eksterne servere, og flyt det til mine dokumenter.

  1. cd, hvor du vil gemme filen
$ cd Documents 
  1. Opret forbindelse
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Gå til den mappe, der indeholder filen, der skal overføres.
$ cd NASA/secret_files/ 
  1. Overførsel
$ get UFO_blueprint.odt 

For at hente den komplette mappe skal du i stedet bruge

$ get -r secret_files/ 

Kommentarer

  • brug put kommando til upload af filer

Svar

Unix / Linux rekursiv kopi af filer og mapper over en sikker skal ved hjælp af følgende kode:

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

Et komplet eksempel kan se ud:

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

Bemærk, hvis du ikke har en DNS-server til at løse værtsnavne, skal du bruge din IP-adresse i stedet. Eksemplet ovenfor kan se sådan ud

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

Svar

Hvis de kører SCP / SSH på en anden port, skal du sørge for at angive den store -P portindstilling.

Eksempel:

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

Kommentarer

  • Dette spørgsmål er syv år gammelt og har mange svar allerede. Selvom det er sandt, at ssh kan bruge ikke-standardporte, og ssh-klient ‘ s -P er derefter påkrævet, behøver du ikke ‘ t hjælper virkelig med det aktuelle problem. Prøv at fokusere på de seneste spørgsmål.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *