Jag använder Linux (centos) -maskin, jag har redan anslutit till det andra systemet med ssh
. Nu är min fråga hur kan jag kopiera filer från ett system till ett annat system?
Antag att i min miljö har jag två system som System A
och System B
. Jag använder System A
-maskinen och några andra använder System B
maskin.
Hur kan jag kopiera en fil från System B
till System A
? Och kopiera en fil från System A
till System B
?
Kommentarer
- Jag tycker att
scp
ofta är en cumbersten. Om det skulle kunna passa dina behov kan du prova detta linuxjournal.com/article/8904 Det monterar fjärrfilsystemet lokalt. - @Alan Jag tror att du menar ” besvärlig ”? Cumber Stone är ett Magic -kort;)
- något relaterat: gör ett krypterat arkiv av lokal
dir/
på fjärrmaskin medssh
:tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
- Om du har tillgång till fjärrservern ftp kan vi också använda wget för att ladda ner som
$wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to
Referens1 Referens2 - Inte duplikat, länkad fråga frågar specifikt att inte använda
scp
; för det ärscp
det bästa och enklaste sättet som svar, så mods var god ta bort dubblettflaggan som om någon går till en annan, det mest användbara svaret kommer att missas.
Svar
Syntax:
scp <source> <destination>
Till kopiera en fil från B
till A
medan du är inloggad på B
:
scp /path/to/file username@a:/path/to/destination
För att kopiera en fil från B
till A
medan du är inloggad på A
:
scp username@b:/path/to/file /path/to/destination
Kommentarer
Svar
Om du behöver en alternativ metod.
Installera sshfs. om du använder ubuntu / debian:
sudo apt-get install sshfs
eller, om du använder centos / rhel:
sudo yum install fuse-sshfs
eller, i macOS
brew install sshfs
Skapa en tom dir
mkdir /home/user/testdir
”länk” eller ”montera” de två katalogerna
sshfs [email protected]:/remote/dir /home/user/testdir
”ta bort länken” dirs
fusermount -u /home/user/testdir
På BSD och macOS, för att avmontera filsystemet:
umount mountpoint
eller
diskutil unmount mountpoint
För mer se här, linuxjournal.com libfuse / sshfs
Kommentarer
- Frågan säger specifikt att operativsystemet i fråga är CentOS; inte härrör från Debian.
apt-get
är en Debianism; rätt pakethanterare skulle varayum
eller, för riktigt gamla smaker av CentOS,up2date
ellerrpm
. - +1 svaret på den här frågan kan vara utanför sammanhanget, men det hjälpte mig ändå, och så vitt jag kan se andra också.
- Inte relaterat, men det ’ ett svar på en miljon dollar xD
- Om jag förstår rätt ger detta ACCESS till fjärrfilerna, men KOPIERAR inte dem?
- @ VerktygsmakareStyr dig ’ är helt rätt: den skapar en falsk katalog (mount) så att du kan använda alla dina verktyg för att kopiera eller flytta saker:
cp
,mv
,rm
,rsync
,unison
… Kommandotscp
skulle bara kunna kopiera filer.
Svar
Ibland behöver du tjäna på tjä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 -
Kommentarer
- Kreativitet? Så här brukade vi dela bandstationer. 🙂
- Kan du berätta vad det här gör? Till exempel har jag ingen aning om vad ’ cron ’ har att göra med kopieringsfilen!
- @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget är enskilda filer som ska ingå i tararkivet. Poängen var att illustrera varför du ibland behöver bli snygg. Denna serie av kommandon strömmar tjärarkivet över en ssh-anslutning och tar bort arkivet på andra sidan. Därför skrivs inget tjärarkiv någonsin till hårddisken. Jag använder det ibland för att körsbärsplocka filer för att kopiera i ett kommando.
- Ow! Jag lärde att den första ’ / ’ var källvägen! (Vad är det?) Så det var en dum fråga! Tack. 🙂
- Tar kommer att chdir till ” / ” så att alla följande vägar är relativt ” / ”.
Svar
Om du vill hålla filerna på båda systemen synkroniserade, ta en titt på rsync
-programmet:
Kommentarer
- Detta är ett verkligt professionellt verktyg.
Svar
Om du har ett av de vanliga operativsystemen kan du installera pigz som är samma som gzip förutom att det kommer att använda flera kärnor och vara snabbare över ett snabbt nätverk. Mitt kommando är lite annorlunda.
tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"
eller på annat sätt för att få filer
ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S
eller säkerhetskopiera roten fs med
ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz
Kommentarer
Svar
En enklare metod som fungerar med SSH-kontrollerade NVIDIA Jetson-datorer är att ansluta till SFTP (SSH File Transfer Protocol).
Antag att jag vill flytta dokumentet UFO_blueprint.odt
från NASA: s fjärrservrar och flytta det till mina dokument.
-
cd
dit du vill att filen ska sparas
$ cd Documents
- Anslut
$ sftp sammy@your_server_ip_or_remote_hostname
- Gå till katalogen som innehåller filen som ska överföras.
$ cd NASA/secret_files/
- Överföring
$ get UFO_blueprint.odt
För att få hela katalogen, använd istället
$ get -r secret_files/
Kommentarer
- använd
put
-kommando för överföring av filer
Svar
Unix / Linux rekursiv kopia av filer och mappar över ett säkert skal med koden som följer:
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>
Ett fullständigt exempel kan se ut:
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Obs! Om du inte har en DNS-server för att lösa värdnamn, använd din IP-adress istället. Exemplet ovan kan se ut så här
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Svar
Om de kör SCP / SSH på en annan port, se till att du anger versal -P
portalternativ.
Exempel:
scp -P 7121 /users/admin/downloads/* [email protected]:/home/
Kommentarer
- Den här frågan är sju år gammal och har många svar redan. Även om det är sant att ssh kan använda icke-standardportar och ssh-klient ’ s
-P
krävs då, du behöver inte ’ hjälper verkligen inte problemet. Försök att fokusera på de senaste frågorna.
scp
för att kopiera en fil till eller från din lokala maskin (System A) när du är inloggad på en fjärrserver (System B) medssh
.scp
loggar in dig på fjärrservern, kopierar filen och loggar sedan ut igen i en process, så kör bara från ett skal på din lokala maskin. Med detta sagt kan du användascp
om du ’ är inloggad i System B via SSH och vill kopiera filer mellan System B och System C.-P
för att ange TCP-porten på fjärrvärden. Detta fångar mig varje gång, förssh
använder-p
.