Jeg bruker Linux (centos) maskin, jeg har allerede koblet til det andre systemet ved hjelp av ssh
. Nå er spørsmålet mitt hvordan jeg kan kopiere filer fra ett system til et annet system?
Anta at jeg i mitt miljø har to systemer som System A
og System B
. Jeg bruker System A
maskin og noen andre bruker System B
maskin.
Hvordan kan jeg kopiere en fil fra System B
til System A
? Og kopier en fil fra System A
til System B
?
Kommentarer
- Jeg synes
scp
er ofte en tungestein. Hvis det kan imøtekomme dine behov, kan du prøve dette linuxjournal.com/article/8904 Det monteres det eksterne filsystemet lokalt. - @Alan Jeg tror du mener » tungvint «? Cumber Stone er et Magic -kort;)
- noe i slekt: lag et kryptert arkiv av lokal
dir/
på ekstern maskin ved bruk avssh
:tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
- Hvis du har tilgang til ftp til den eksterne serveren, kan vi også bruke wget til å laste ned som
$wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to
Referanse1 Referanse2 - Ikke duplikat, koblet spørsmål ber spesifikt om ikke å bruke
scp
; for den enescp
er den fineste og enkleste måten å svare på, så mods, vennligst fjern duplikatflagget som om noen vil gå til et annet, det mest nyttige svaret blir savnet.
Svar
Syntaks:
scp <source> <destination>
Til kopier en fil fra B
til A
mens du er logget på B
:
scp /path/to/file username@a:/path/to/destination
For å kopiere en fil fra B
til A
mens du er logget på A
:
scp username@b:/path/to/file /path/to/destination
Kommentarer
Svar
Hvis du trenger en alternativ tilnærming.
Installer sshfs. hvis du bruker ubuntu / debian:
sudo apt-get install sshfs
eller, hvis du bruker centos / rhel:
sudo yum install fuse-sshfs
eller i macOS
brew install sshfs
Opprett en tom dir
mkdir /home/user/testdir
«lenke» eller «monter» de to katalogene
sshfs [email protected]:/remote/dir /home/user/testdir
«koble fra» dirs
fusermount -u /home/user/testdir
For å demontere filsystemet på BSD og macOS:
umount mountpoint
eller
diskutil unmount mountpoint
For mer se her, linuxjournal.com libfuse / sshfs
Kommentarer
- Spørsmålet sier spesifikt at det aktuelle operativsystemet er CentOS; ikke Debian-avledet.
apt-get
er en Debianisme; den riktige pakkehåndtereren ville væreyum
eller, for virkelig gamle smaker av CentOS,up2date
ellerrpm
. - +1 svaret på dette spørsmålet kan være utenfor sammenheng, men det hjalp meg fortsatt, og så vidt jeg kan se andre også.
- Ikke relatert, men det ‘ et svar på en million dollar xD
- Hvis jeg forstår riktig, gir dette tilgang til de eksterne filene, men KOPIERER de ikke?
- @ ToolmakerSteve deg ‘ har helt rett: den oppretter en falsk katalog (mount), slik at du kan bruke alle dine foretrukne verktøy til å kopiere eller flytte ting:
cp
,mv
,rm
,rsync
,unison
…scp
kommandoen vil bare kunne kopiere filer.
Svar
Noen ganger trenger du å bli fancy med 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? Slik delte vi båndstasjoner. 🙂
- Kan du fortelle oss hva dette gjør? Jeg aner for eksempel ikke hva ‘ cron ‘ har å gjøre med å kopiere fil!
- @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget er individuelle filer som skal inkluderes i tararkivet. Poenget var å illustrere hvorfor du noen ganger trenger å bli fancy. Denne serien av kommandoer streamer tjærearkivet over en ssh-forbindelse og fjerner arkivet på den andre siden. Dermed blir det aldri skrevet noe tjærearkiv til disken. Jeg bruker dette noen ganger for å kirsebærplukke filer for å kopiere i en kommando.
- Ow! Jeg lærte at den første ‘ / ‘ var kildestien! (Hva er det?) Så det var et dumt spørsmål! Takk. 🙂
- Tar vil chdir til » / » og dermed er alle følgende baner i forhold til » / «.
Svar
Hvis du vil ha filene på begge systemene synkronisert, kan du ta en titt på rsync
-programmet:
Kommentarer
- Dette er et virkelig profesjonelt verktøy.
Svar
Hvis du har et av de vanlige operativsystemene, kan du installere pigz som er det samme som gzip bortsett fra at det vil bruke flere kjerner og være raskere over et raskt nettverk. Kommandoen min er litt annerledes.
tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"
eller den andre måten å hente filer på
ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S
eller ta sikkerhetskopi av roten fs med
ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz
Kommentarer
Svar
En enklere metode som fungerer med via SSH-kontrollerte NVIDIA Jetson-datamaskiner er å koble til SFTP (SSH File Transfer Protocol).
Anta at jeg ønsker å flytte dokumentet UFO_blueprint.odt
fra NASAs eksterne servere og flytt den til dokumentene mine.
-
cd
dit du vil at filen skal lagres
$ cd Documents
- Koble til
$ sftp sammy@your_server_ip_or_remote_hostname
- Gå til katalogen som inneholder filen som skal overføres.
$ cd NASA/secret_files/
- Overføring
$ get UFO_blueprint.odt
For å få den komplette katalogen, bruk i stedet
$ get -r secret_files/
Kommentarer
- bruk
put
kommando for opplasting av filer
Svar
Unix / Linux rekursiv kopi av filer og mapper over et sikkert skall med koden som følger:
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>
Et fullstendig eksempel kan se ut:
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Merk at hvis du ikke har en DNS-server for å løse vertsnavn, bruk IP-adressen din i stedet. Eksemplet ovenfor kan se slik ut
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects
Svar
Hvis de kjører SCP / SSH på en annen port, sørg for at du angir store -P
portalternativer.
Eksempel:
scp -P 7121 /users/admin/downloads/* [email protected]:/home/
Kommentarer
- Dette spørsmålet er syv år gammelt og har mange svar allerede. Selv om det er sant at ssh kan bruke ikke-standardporter, og ssh-klientens ‘ s
-P
-alternativet kreves, trenger du ikke ‘ hjelper ikke virkelig problemet. Prøv å fokusere på nylige spørsmål.
scp
for å kopiere en fil til eller fra din lokale maskin (System A) mens du er logget på en ekstern server (System B) medssh
.scp
logger deg på den eksterne serveren, kopierer filen og logger deg ut igjen i en prosess, så bare kjør den fra et skall på din lokale maskin. Når det er sagt, kan du brukescp
hvis du ‘ er logget på System B via SSH og vil kopiere filer mellom System B og System C.-P
for å spesifisere TCP-porten på den eksterne verten. Dette fanger meg hver gang, fordissh
bruker-p
.