Hoe bestanden van de ene machine naar de andere te kopiëren met ssh

Ik gebruik een Linux (centos) machine, ik heb al verbinding met het andere systeem gemaakt met ssh. Nu is mijn vraag: hoe kan ik bestanden kopiëren van het ene systeem naar het andere?

Stel dat ik in mijn omgeving twee systemen heb, zoals System A en System B. Ik” gebruik een System A machine en een ander gebruik System B machine.

Hoe kan ik een bestand kopiëren van System B naar System A? En kopieer een bestand van System A naar System B?

Reacties

  • Ik vind scp vaak een lastige steen. Als het aan uw behoeften zou kunnen voldoen, probeer dit dan eens linuxjournal.com/article/8904 Het koppelt het externe bestandssysteem lokaal aan.
  • @Alan Ik denk dat je ” omslachtig ” bedoelt? Cumber Stone is een Magic -kaart;)
  • enigszins verwant: maak een versleuteld archief van lokale dir/ op externe machine met ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Als u toegang heeft tot de ftp van de externe server, kunnen we ook wget gebruiken om te downloaden zoals $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referentie1 Referentie2
  • Geen dubbele, gekoppelde vraag vraagt specifiek om ; voor die ene scp is prima en de gemakkelijkste manier als antwoord, dus verwijder alsjeblieft de dubbele vlag alsof iemand naar een andere gaat, het meest bruikbare antwoord zal worden gemist.

Antwoord

Syntaxis:

scp <source> <destination> 

Aan kopieer een bestand van B naar A terwijl u bent aangemeld bij B:

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

Om een bestand van B naar A te kopiëren terwijl u bent aangemeld bij A:

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

Opmerkingen

  • Om te verduidelijken: gebruik ‘ t scp om een bestand van of naar uw lokale computer (systeem A) te kopiëren terwijl u bent aangemeld bij een externe server (systeem B) met ssh. scp logt u in op de externe server, kopieert het bestand en logt u vervolgens weer uit in één proces, dus voer het gewoon uit vanuit een shell op uw lokale computer. Dat gezegd hebbende, kunt u scp gebruiken als u ‘ opnieuw bent aangemeld bij Systeem B via SSH en bestanden wilt kopiëren tussen Systeem B en Systeem C.
  • @DopeGhoti. Ja, u kunt ‘ geen bestanden verplaatsen tussen twee externe computers. De bron of het doel moet een lokaal bestand zijn. Als u zich echter aanmeldt op een externe machine met ssh, kunt u bestanden kopiëren tussen twee externe machines op die machine ‘ s opdrachtregel.
  • Ook, een belangrijk ding om te onthouden is dat u alleen naar een map op de doelcomputer kunt scpen waarvoor u machtigingen heeft. Als u het probeert te kopiëren naar een bestemming waar de doelgebruiker geen toestemming voor heeft, kopieer het bestand dan eerst naar de homedirectory of subdirectory van de gebruiker ‘ en ssh vervolgens naar de doelmachine en sudo verplaats het naar de eindbestemming
  • Onthoud -r (recursief) en -p (bewaar systeemmetadata): scp -rp < file1 > < file2 >
  • Ja, gebruik -P om de TCP-poort op de externe host op te geven. Dit valt me elke keer op, omdat ssh -p gebruikt.

Antwoord

Voor het geval je een alternatieve benadering nodig hebt.

Installeer sshfs. als u ubuntu / debian gebruikt:

sudo apt-get install sshfs 

of, als u centos / rhel gebruikt:

sudo yum install fuse-sshfs 

of, in macOS

brew install sshfs 

Maak een lege map

mkdir /home/user/testdir 

“link” of “mount” de twee mappen

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

“unlink” de mappen

fusermount -u /home/user/testdir 

Op BSD en macOS, om het bestandssysteem te ontkoppelen:

umount mountpoint 

of

diskutil unmount mountpoint 

Kijk hier voor meer, linuxjournal.com libfuse / sshfs

Opmerkingen

  • De vraag stelt specifiek dat het betreffende besturingssysteem CentOS is; niet van Debian afgeleid. apt-get is een Debianisme; de juiste pakketbeheerder is yum of, voor echt oude smaken van CentOS, up2date of rpm.
  • Geef het antwoord op deze vraag een +1, maar het heeft mij nog steeds geholpen, en voor zover ik kan zien ook anderen.
  • Niet gerelateerd, maar het is ‘ is een antwoord van een miljoen dollar xD
  • Als ik het goed begrijp, geeft dit TOEGANG tot de externe bestanden, maar worden ze niet KOPIE?
  • @ ToolmakerSteve je ‘ hebt helemaal gelijk: het maakt een nep-directory (mount), zodat je al je favoriete tools kunt gebruiken om dingen te kopiëren of te verplaatsen: cp, mv, rm, rsync, unison … Het scp commando zou alleen bestanden kunnen kopiëren.

Antwoord

Soms moet je met tar gaan omgaan:

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 - 

Reacties

  • Creativiteit? Dit is hoe we vroeger tapedrives deelden. 🙂
  • Kunt u ons vertellen wat dit doet? Ik heb bijvoorbeeld geen idee wat ‘ cron ‘ te maken heeft met het kopiëren van bestanden!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget zijn individuele bestanden die in het tar-archief moeten worden opgenomen. Het punt was om te illustreren waarom je soms zin moet krijgen. Deze reeks commandos streamt het tar-archief via een ssh-verbinding en unarchiveert het aan de andere kant. Er wordt dus nooit een tar-archief naar schijf geschreven. Ik gebruik dit soms om bestanden te selecteren om in één opdracht te kopiëren.
  • Ow! Ik heb geleerd dat het eerste ‘ / ‘ het bronpad was! (Wat is het?) Dus dat was een domme vraag! Bedankt. 🙂
  • Tar zal chdiren naar ” / ” dus alle volgende paden zijn relatief aan ” / “.

Antwoord

Als je de bestanden op beide systemen gesynchroniseerd wilt houden, kijk dan eens naar het rsync programma:

(zie tutorial hier)

Reacties

  • Dit is een echte professionele tool.

Answer

Als je een van de algemene besturingssystemen hebt, kun je pigz installeren dat hetzelfde is als gzip, behalve dat het meerdere cores gebruikt en ben sneller over een snel netwerk. Mijn commando is een beetje anders.

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

of andersom om bestanden op te halen

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

of maak een backup van de root fs met

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

Reacties

Antwoord

Een eenvoudigere methode die werkt met via SSH gestuurde NVIDIA Jetson-computers is om verbinding te maken met SFTP (SSH File Transfer Protocol).

Stel dat ik het document UFO_blueprint.odt van de externe servers van NASA en verplaats het naar mijn documenten.

  1. cd naar waar u het bestand wilt opslaan
$ cd Documents 
  1. Verbinden
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Ga naar de directory die het bestand bevat dat moet worden overgedragen.
$ cd NASA/secret_files/ 
  1. Overzetten
$ get UFO_blueprint.odt 

Gebruik in plaats daarvan

$ get -r secret_files/ 

Reacties

  • gebruik commando voor het uploaden van bestanden

Antwoord

Unix / Linux recursieve kopie van bestanden en mappen via een beveiligde shell met behulp van de volgende code:

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

Een volledig voorbeeld kan er als volgt uitzien:

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

Let op: als u geen DNS-server heeft om hostnamen om te zetten, gebruik dan uw IP-adres. Het bovenstaande voorbeeld zou er zo uit kunnen zien.

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

Antwoord

Als ze actief zijn SCP / SSH op een andere poort, zorg ervoor dat u de hoofdletter -P poortoptie opgeeft.

Voorbeeld:

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

Reacties

  • Deze vraag is zeven jaar oud en heeft veel antwoorden nu al. Hoewel het waar is dat ssh niet-standaardpoorten kan gebruiken en de ssh-client ‘ s -P optie is dan vereist, hoeft u ‘ Het helpt niet echt met het huidige probleem. Probeer je te concentreren op recente vragen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *