Hogyan másolhatok fájlokat egyik gépről a másikra az ssh használatával

Linux (centos) gépet használok, már csatlakoztam a másik rendszerhez a ssh. Most az a kérdésem, hogy hogyan tudok másolni fájlokat egyik rendszerből egy másik rendszerbe?

Tegyük fel, hogy a környezetemben két olyan rendszerem van, mint például System A és System B. Én az System A gépet használom, és másokat a System B gép.

Hogyan másolhatok egy fájlt a System B fájlból a System A fájlba? És másoljon egy fájlt a System A fájlból a System B fájlba?

Megjegyzések

  • Úgy találom, hogy a scp gyakran nehézkő. Ha megfelelne az Ön igényeinek, próbálja ki ezt: linuxjournal.com/article/8904 Helyileg szereli fel a távoli fájlrendszert.
  • @Alan Szerintem ” nehézkes ” -re gondolsz? Cumber Stone egy varázslat kártya;)
  • némileg kapcsolódó: titkosított archívumot készít helyi dir/ a távoli gépen a ssh használatával: tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Ha hozzáfér a távoli kiszolgáló ftp-jéhez, akkor a wget használatával letölthetjük például a $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Reference1 Reference2
  • Nem duplikált, összekapcsolt kérdés kifejezetten arra kéri, hogy ne használja a scp; erre az egyik scp remek és legkönnyebb válaszként válaszolni, ezért kérjük, hogy a modok távolítsák el az ismétlődő jelzőt, mintha valaki máshoz menne, a leghasznosabb válasz kimarad.

Válasz

Szintaxis:

scp <source> <destination> 

másoljon egy fájlt a B fájlból a A fájlba, miközben be van jelentkezve a B:

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

Fájl másolása a B fájlból a A fájlba, miközben be van jelentkezve a A:

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

Megjegyzések

  • A pontosítás érdekében általában ne ‘ ne használja a scp fájlt másolni egy helyi gépre vagy onnan (A rendszer), miközben be van jelentkezve egy távoli szerverre (rendszer B) a ssh gombbal. A scp bejelentkezik a távoli kiszolgálóra, átmásolja a fájlt, majd egy folyamat során újra kijelentkezteti Önt, ezért csak futtassa a helyi gép shelljéből. Ennek ellenére használhatja a scp alkalmazást, ha ‘ újból bejelentkezett a B rendszerbe SSH-n keresztül, és fájlokat szeretne másolni a B rendszer és a System között. C.
  • @DopeGhoti. Igen, nem lehet ‘ fájlokat két távoli számítógép között mozgatni. A forrásnak vagy a célnak helyi fájlnak kell lennie. Ha azonban távoli gépre jelentkezik be ssh-vel, akkor másolhat fájlokat két távoli gép között az adott gép ‘ s parancssorán.
  • Emellett Fontos megjegyezni, hogy csak a célgépen lévő mappába tud scp-t olvasni, amelyhez engedélyei vannak. Ha azt a célállomást próbálja másolni, amelyre a célfelhasználónak nincs engedélye, akkor először másolja a fájlt a felhasználó ‘ felhasználó saját könyvtárába vagy alkönyvtárába, majd ssh a célgép és a sudo helyezze át a végső rendeltetési helyre
  • Ne feledje a -r (rekurzív) és a -p (a rendszer metaadatainak megőrzése): scp -rp < file1 > < file2 >
  • Igen, használja a -P a távoli gazdagép TCP-portjának megadásához. Ez minden alkalommal megfog, mert ssh a -p szót használja.

Válasz

Abban az esetben, ha alternatív megközelítésre van szüksége.

Telepítse az sshf-eket. ha ubuntu / debian-t használ:

sudo apt-get install sshfs 

vagy ha centos / rhel-t használ:

sudo yum install fuse-sshfs 

vagy a macOS-ban

brew install sshfs 

Hozzon létre egy üres rendszert

mkdir /home/user/testdir 

“link” vagy “csatolja” a két könyvtárat

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

“leválasztja” az irányelveket

fusermount -u /home/user/testdir 

BSD és macOS rendszeren a fájlrendszer leválasztásához:

umount mountpoint 

vagy

diskutil unmount mountpoint 

További információt itt talál: linuxjournal.com libfuse / sshfs

Megjegyzések

  • A kérdés kifejezetten kimondja, hogy a kérdéses operációs rendszer CentOS; nem Debian-eredetű. A apt-get egy debianizmus; a helyes csomagkezelő a következő lenne: yum, vagy a CentOS valóban régi ízei esetén up2date vagy rpm.
  • +1 erre a kérdésre adott válasz nem lehet összefüggésben, de ez még mindig segített nekem, és amennyire látom, mások is.
  • Nem kapcsolódik, de ‘ egymillió dolláros válasz xD
  • Ha jól értem, ez hozzáférést biztosít a távoli fájlokhoz, de nem MÁSOLJA őket?
  • @ A Toolmaker Steve ‘ teljesen igaza van: hamis könyvtárat hoz létre (mount), hogy az összes előnyben részesített eszközt felhasználhassa a dolgok másolásához vagy áthelyezéséhez:

,mv,rm,rsync,unison… Ascpparancs csak fájlokat tud másolni.

Válasz

Néha szükséged van a tar-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 - 

Megjegyzések

  • Kreativitás? Így szoktuk megosztani a szalagos meghajtókat. 🙂
  • Meg tudnád mondani, mit csinál ez? Például fogalmam sincs, mi köze van a ‘ cron ‘ fájl másolásához!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget are egyedi fájlok, amelyeket fel kell venni a tar archívumba. A lényeg az volt, hogy szemléltesse, miért kell néha divatba jönnie. Ez a parancssor ssh kapcsolaton keresztül továbbítja a kátrányarchívumot, és archiválja a másik oldalon. Így soha semmilyen tar-archívumot nem írnak lemezre. Ezt néha fájlok cseresznyeválogatására használom, hogy egy parancsba másoljam őket.
  • Ow! Megtanítottam, hogy az első ‘ / ‘ volt a forrásút! (Mi ez?) Szóval ez buta kérdés volt! Köszönöm. 🙂
  • Tar a következő címre fog irányulni: ” / “, így az összes következő út a ” / “.

Válasz

Ha mindkét rendszer fájljait szinkronban kívánja tartani, akkor nézze meg a rsync programot:

(lásd a bemutatót itt)

Megjegyzések

  • Ez egy igazi szakmai eszköz.

Válasz

Ha rendelkezik a közös operációs rendszerekkel, telepítheti a pigz-t, amely megegyezik a gzip-vel, azzal a különbséggel, hogy több magot fog használni és gyorsabb legyen egy gyors hálózaton keresztül. A parancsom egy kicsit más.

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

vagy a fájlok másik megszerzésének módja

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

vagy készítsen biztonsági másolatot a gyökérfs-ről

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

Megjegyzések

Válasz

Egy egyszerűbb módszer, amely SSH-vezérlésű NVIDIA Jetson számítógépeken keresztül működik, az SFTP-hez (SSH File Transfer Protocol) való csatlakozás.

Tegyük fel, hogy áthelyezem a dokumentumot / div> a NASA távoli szervereiről, és helyezze át a Dokumentumomba.

  1. cd oda, ahová a fájlt szeretné menteni
$ cd Documents 
  1. Csatlakozás
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Keresse meg az átvinni kívánt fájlt tartalmazó könyvtárat.
$ cd NASA/secret_files/ 
  1. Átvitel
$ get UFO_blueprint.odt 

A teljes könyvtár megszerzéséhez használja a következőt:

$ get -r secret_files/ 

Megjegyzések

  • használja a put parancs fájlok feltöltésére

Válasz

A fájlok és mappák Unix / Linux rekurzív másolata egy biztonságos shell fölött a következő kód használatával:

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

Egy teljes példa a következőképpen nézhet ki:

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

Ne feledje, hogy ha nincs DNS-kiszolgáló a hosztnevek feloldására, akkor inkább az IP-címét használja. A fenti példa így nézhet ki

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

Válasz

Ha futnak SCP / SSH egy másik porton, győződjön meg róla, hogy megadta a nagybetűs -P port opciót.

Példa:

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

Megjegyzések

  • Ez a kérdés hétéves, és sok választ tartalmaz már. Bár igaz, hogy az ssh nem alapértelmezett portokat használhat, és az ssh kliens ‘ s -P opcióra van szükség, akkor nem kell ‘ nem igazán segít a problémán. Próbáljon a legújabb kérdésekre összpontosítani.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük