Kuinka kopioida tiedostoja koneelta toiselle käyttämällä ssh

Olen Linux (centos) -koneella, olen jo yhteydessä toiseen järjestelmään käyttämällä ssh. Kysymykseni kuuluu nyt, kuinka voin kopioida tiedostoja järjestelmästä toiseen?

Oletetaan, että ympäristössäni on kaksi järjestelmää, kuten System A ja System B. Minä” käytän konetta System A ja jotakin muuta System B kone.

Kuinka voin kopioida tiedoston tiedostosta System B tiedostoon System A? Ja kopioi tiedosto tiedostosta System A tiedostoon System B?

Kommentit

  • Minusta scp on usein kuurakivi. Jos se sopii tarpeisiisi, kokeile tätä linuxjournal.com/article/8904 . Se asentaa etätiedostojärjestelmän paikallisesti.
  • @Alan Mielestäni tarkoitat ” hankalaa ”? Cumber Stone on Magic -kortti;)
  • jonkin verran liittyvä: tee salattu arkisto paikallisen dir/ etäkoneella käyttämällä ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Jos sinulla on pääsy etäpalvelimen ftp: hen, voimme myös käyttää wget -sovellusta lataamaan esimerkiksi $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Viite1 Viite2
  • Ei kaksoiskappale, linkitetty kysymys pyytää nimenomaan olemaan käyttämättä scp; tälle yhdelle scp on hieno ja helpoin tapa vastata, joten poista moduulit kaksoiskappale, ikään kuin joku menisi toiseen, hyödyllisin vastaus jää väliin.

Vastaa

Syntaksi:

scp <source> <destination> 

kopioi tiedosto tiedostosta B tiedostoon A, kun olet kirjautuneena B:

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

Tiedoston kopioiminen tiedostosta B tiedostoon A kirjautuneena sisään A:

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

kommentit

  • Selvennykseksi yleensä älä ’ käytä scp -toimintoa kopioidaksesi tiedosto paikalliselle koneellesi tai paikalliselle koneellesi (järjestelmä A), kun olet kirjautunut etäpalvelimeen (järjestelmä B) ssh -merkillä. scp kirjaa sinut etäpalvelimeen, kopioi tiedoston ja kirjaa sinut sitten ulos yhdessä prosessissa, joten suorita se vain paikallisen koneesi kuoresta. Tästä huolimatta voit käyttää scp -toimintoa, jos ’ kirjaudut uudelleen järjestelmään B SSH: n kautta ja haluat kopioida tiedostoja järjestelmän B ja järjestelmän välillä. C.
  • @DopeGhoti. Kyllä, et voi ’ t siirtää tiedostoja kahden etätietokoneen välillä. Joko lähteen tai kohteen on oltava paikallinen tiedosto. Jos kuitenkin kirjaudut etäkoneeseen ssh: llä, voit kopioida tiedostoja kahden etäkoneen välillä kyseisen koneen ’ s komentorivillä.
  • Lisäksi tärkeä asia on muistaa, että voit skp: n vain kohdekoneen kansioon, johon sinulla on käyttöoikeudet. Jos yrität kopioida sitä kohteeseen, johon kohdekäyttäjällä ei ole lupaa, kopioi tiedosto ensin käyttäjän ’ käyttäjän kotihakemistoon tai alihakemistoon ja sitten ssh kohdekone ja sudo siirtävät sen lopulliseen määränpäähän
  • Muista -r (rekursiivinen) ja -p (säilytä järjestelmän metatiedot): scp -rp < tiedosto1 > < file2 >
  • Kyllä, käytä -P määrittää etäisännän TCP-portti. Tämä saa minut kiinni joka kerta, koska ssh käyttää -p.

Vastaa

Jos tarvitset vaihtoehtoista lähestymistapaa.

Asenna sshfs. jos käytät ubuntu / debian:

sudo apt-get install sshfs 

tai jos käytät centos / rhel:

sudo yum install fuse-sshfs 

tai macOSissa

brew install sshfs 

Luo tyhjä hakemisto

mkdir /home/user/testdir 

”linkitä” tai ”liitä” molemmat hakemistot

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

”poista linkitys” dir-tiedostoista

fusermount -u /home/user/testdir 

BSD: llä ja macOS: lla tiedostojärjestelmän irrottaminen:

umount mountpoint 

tai

diskutil unmount mountpoint 

Lisätietoja on täällä: linuxjournal.com libfuse / sshfs

Kommentit

  • Kysymyksessä todetaan nimenomaisesti, että kyseinen käyttöjärjestelmä on CentOS; ei Debian-johdettu. apt-get on debianismi; oikea paketinhallinta olisi yum tai CentOS: n todella vanhojen makujen tapauksessa up2date tai rpm.
  • +1 tähän kysymykseen annettu vastaus saattaa olla poissa kontekstista, mutta se auttoi silti minua, ja sikäli kuin näen, myös muita.
  • Ei sukua, mutta se ’ miljoonan dollarin vastaus xD
  • Jos ymmärrän oikein, tämä antaa etätiedostoille pääsyn, mutta ei kopioi niitä?
  • @ ToolmakerSteve olet ’ täysin oikeassa: se luo väärennetyn hakemiston (kiinnityksen), jotta voit kopioida tai siirtää asioita haluamallasi työkalulla: cp, mv, rm, rsync, unisonscp -komento pystyy vain kopioimaan tiedostoja.

Vastaa

Joskus sinun täytyy saada fantasia tervan kanssa:

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 - 

kommentit

  • Luovuus? Näin käytimme nauha-asemien jakamista. 🙂
  • Voitteko kertoa meille, mitä tämä tekee? Esimerkiksi minulla ei ole aavistustakaan mitä ’ cron ’ on tekemisissä tiedoston kopioinnin kanssa!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget ovat yksittäisiä tiedostoja, jotka lisätään tar-arkistoon. Tarkoituksena oli havainnollistaa, miksi sinun täytyy joskus saada fancy. Tämä komentosarja lähettää tar-arkiston ssh-yhteyden kautta ja purkaa sen arkiston toisella puolella. Tar-arkistoa ei siis koskaan kirjoiteta levylle. Käytän tätä joskus kirsikan poimintatiedostoihin, jotka haluat kopioida yhdellä komennolla.
  • Ow! Opetin, että ensimmäinen ’ / ’ oli lähdepolku! (Mikä se on?) Joten se oli typerä kysymys! Kiitos. 🙂
  • Terva hakeutuu osoitteeseen ” / ”, joten kaikki seuraavat polut ovat suhteessa ryhmään ” / ”.

vastaus

Jos haluat pitää molempien järjestelmien tiedostot synkronoituna, katso rsync -ohjelmaa:

(katso opas täältä)

Kommentit

  • Tämä on todellinen ammattityökalu.

Vastaa

Jos sinulla on jokin yleisimmistä käyttöjärjestelmistä, voit asentaa pigz-version, joka on sama kuin gzip, paitsi että se käyttää useita ytimiä ja ole nopeampi nopeassa verkossa. Komentoni on hieman erilainen.

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

tai muu tapa saada tiedostoja

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

tai varmuuskopioi juurihakemistot

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

Kommentit

Vastaa

Yksinkertaisempi menetelmä, joka toimii SSH-ohjattujen NVIDIA Jetson -tietokoneiden kautta, on muodostaa yhteys SFTP: hen (SSH File Transfer Protocol).

Oletetaan, että haluan siirtää asiakirjan UFO_blueprint.odt NASA: n etäpalvelimista ja siirrä se omiin asiakirjoihini.

  1. cd mihin haluat tallentaa tiedoston
$ cd Documents 
  1. Yhdistä
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Siirry hakemistoon, joka sisältää siirrettävän tiedoston.
$ cd NASA/secret_files/ 
  1. Siirrä
$ get UFO_blueprint.odt 

Saadaksesi koko hakemiston, käytä sen sijaan

$ get -r secret_files/ 

Kommentit

  • käytä put -komento tiedostojen lataamista varten

Vastaus

Rekursiivinen Unix / Linux-kopio tiedostoista ja kansioista suojatun kuoren päällä käyttämällä seuraavaa koodia:

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

Koko esimerkki saattaa näyttää tältä:

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

Huomaa, että jos sinulla ei ole DNS-palvelinta isäntänimien selvittämiseen, käytä sen sijaan IP-osoitettasi. Yllä oleva esimerkki saattaa näyttää tältä

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

Vastaa

Jos he ovat käynnissä SCP / SSH eri portissa, varmista, että olet määrittänyt isojen kirjainten -P porttiasetuksen.

Esimerkki:

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

kommentit

  • Tämä kysymys on seitsemän vuotta vanha ja siihen on paljon vastauksia jo. Vaikka on totta, että ssh voi käyttää muita kuin oletusportteja ja ssh-asiakas ’ s -P -vaihtoehto vaaditaan, et ’ ei todellakaan auta käsillä olevaa ongelmaa. Yritä keskittyä viimeaikaisiin kysymyksiin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *