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 afssh
: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 enescp
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
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æreyum
eller, for rigtig gamle smag af CentOS,up2date
ellerrpm
. - +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
… Kommandoenscp
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:
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.
-
cd
, hvor du vil gemme filen
$ cd Documents
- Opret forbindelse
$ sftp sammy@your_server_ip_or_remote_hostname
- Gå til den mappe, der indeholder filen, der skal overføres.
$ cd NASA/secret_files/
- 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.
scp
til at kopiere en fil til eller fra din lokale maskine (System A), mens du er logget på en ekstern server (System B) medssh
.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 brugescp
hvis du ‘ er logget ind på System B via SSH og vil kopiere filer mellem System B og System C.-P
for at specificere TCP-porten på den eksterne vært. Dette fanger mig hver gang, fordissh
bruger-p
.