Kopiere mapper og filer fra ekstern til lokal ved hjelp av SCP

Shell

Overføre filer med SCP: En hurtigveiledning

Secure Copy Protocol (SCP) er et hendig verktøy for å overføre filer og kataloger mellom eksterne og lokale maskiner. Hvis du ofte bruker SSH for å få tilgang til serveren din, er det viktig å vite hvordan du kopierer mapper og filer effektivt for å administrere dataene dine.

I denne veiledningen vil vi utforske hvordan du bruker SCP til å kopiere den navngitte eksterne mappen foo til din lokale maskin, spesielt til /home/bruker/Desktop. Denne opplæringen forutsetter en grunnleggende forståelse av SSH og terminalkommandoer.

Kommando Beskrivelse
scp -r Kopierer sikkert en katalog og dens innhold fra en ekstern vert til en lokal maskin rekursivt.
paramiko.SSHClient() Oppretter en SSH-klientforekomst i Python for å lette SSH-operasjoner.
scp.get() Bruker SCP-klienten i Python til å hente filer eller kataloger fra en ekstern vert til en lokal bane.
ansible.builtin.fetch Ansible modul for å hente filer fra eksterne maskiner til den lokale maskinen.
flat: no Alternativ i Ansible hente-modulen for å opprettholde katalogstrukturen mens du kopierer.
validate_checksum: yes Sikrer integriteten til kopierte filer ved å validere kontrollsummene deres.

Forstå SCP for filoverføringer

Skallskriptet som følger med demonstrerer hvordan du bruker for å kopiere en mappe fra en ekstern server til en lokal maskin. Først definerer den variabler for det eksterne brukernavnet, verten og katalogen, så vel som den lokale katalogen. Skriptet kjører deretter kommando, som står for "sikker kopi" og tillater rekursiv kopiering av kataloger. Syntaksen spesifiserer kildebanen, mens ${LOCAL_DIR} angir destinasjonsbanen på den lokale maskinen. Manuset avsluttes med et ekko av en suksessmelding.

Python-skriptet oppnår det samme målet, men bruker bibliotek for å håndtere SSH-tilkoblinger og biblioteket for å utføre den sikre kopien. Etter å ha importert de nødvendige bibliotekene, setter den variabler for de eksterne og lokale katalogene. Skriptet oppretter en SSH-klientforekomst ved hjelp av og kobler til den eksterne serveren med connect metode. Den oppretter deretter en SCP-klientforekomst med og bruker metode for å kopiere den eksterne katalogen til den lokale maskinen. Til slutt lukker skriptet SCP-klienten.

Automatisering av filoverføringer med Ansible

Ansible-spilleboken er en annen metode for å kopiere filer fra en ekstern server til en lokal maskin. Ansible bruker en YAML-basert konfigurasjon for å definere oppgaver. Spilleboken starter med å navngi oppgaven og spesifisere vertene, som i dette tilfellet er lokalvert. Den definerer deretter en oppgave for å hente en ekstern mappe ved hjelp av modul. De attributt spesifiserer den eksterne katalogen, mens attributt angir den lokale destinasjonen. De 1. 3 alternativet sikrer at katalogstrukturen opprettholdes under kopieringen.

De alternativet sikrer at spilleboken mislykkes hvis kildekatalogen ikke eksisterer, noe som gir et ekstra lag med feilhåndtering. I tillegg har alternativet verifiserer integriteten til de kopierte filene ved å sjekke sjekksummene deres, for å sikre at filene er overført riktig og uten korrupsjon. Denne tilnærmingen er spesielt nyttig for å automatisere repeterende filoverføringsoppgaver på en konsistent og pålitelig måte.

Bruke SCP for å overføre filer fra ekstern til lokal

Shell-skript for SCP-filoverføring

# Copying a remote folder to local directory using SCP
#!/bin/bash
# Define variables
REMOTE_USER="your_username"
REMOTE_HOST="your_server_address"
REMOTE_DIR="/path/to/remote/folder"
LOCAL_DIR="/home/user/Desktop"
# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} ${LOCAL_DIR}
echo "Folder copied successfully to ${LOCAL_DIR}"

Automatisering av SCP-filoverføringer med Python

Python-skript for automatisert SCP-overføring

import paramiko
from scp import SCPClient
# Define variables
remote_user = "your_username"
remote_host = "your_server_address"
remote_dir = "/path/to/remote/folder"
local_dir = "/home/user/Desktop"
# Create SSH client and connect
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(remote_host, username=remote_user)
# Create SCP client and transfer files
scp = SCPClient(ssh.get_transport())
scp.get(remote_dir, local_dir, recursive=True)
scp.close()

Bruke Ansible til å administrere SCP-filoverføringer

Ansible Playbook for SCP-filoverføring

--- 
- name: Copy folder from remote to local
  hosts: localhost
  tasks:
    - name: Copy remote folder to local directory
      ansible.builtin.fetch:
        src: "/path/to/remote/folder"
        dest: "/home/user/Desktop"
        flat: no
        fail_on_missing: yes
        validate_checksum: yes

Avanserte SCP-teknikker og vurderinger

Utover grunnleggende filoverføringer tilbyr SCP flere avanserte funksjoner og alternativer som kan være uvurderlige for mer komplekse oppgaver. En slik funksjon er muligheten til å bruke jokertegn for å spesifisere flere filer eller kataloger. For eksempel å bruke kopierer alle .txt-filer fra den eksterne katalogen til den lokale katalogen. Dette kan spare tid og strømlinjeforme arbeidsflyter når du håndterer mange filer.

En annen nyttig funksjon er alternativet, som lar deg spesifisere et portnummer for SCP-tilkoblingen. Dette er spesielt nyttig hvis SSH-tjenesten din kjører på en ikke-standard port. For eksempel ved å bruke vil koble til den eksterne verten på port 2222. I tillegg kan alternativet kan brukes til å komprimere data under overføring, noe som kan redusere overføringstiden betydelig for store filer. Dette oppnås ved å legge til -C til SCP-kommandoen, for eksempel i .

  1. Hvordan kopierer jeg en hel katalog med SCP?
  2. Bruk kommandoen å kopiere en katalog rekursivt.
  3. Kan jeg kopiere filer fra en bestemt port ved å bruke SCP?
  4. Ja, du kan spesifisere porten med .
  5. Hvordan kan jeg kopiere flere filer ved hjelp av SCP?
  6. Bruk jokertegn som for å kopiere flere filer.
  7. Er det mulig å komprimere filer under SCP-overføring?
  8. Ja, legg til alternativet til SCP-kommandoen din, for eksempel .
  9. Hvordan håndterer jeg store filoverføringer med SCP?
  10. Bruke mulighet for å komprimere filer, og sikre en stabil tilkobling for å forhindre avbrudd.
  11. Kan SCP automatiseres med skript?
  12. Ja, du kan bruke skallskript, Python-skript eller Ansible-spillebøker for å automatisere SCP-filoverføringer.
  13. Hva bør jeg gjøre hvis en SCP-overføring mislykkes?
  14. Sjekk nettverkstilkoblingen, sørg for riktig bane og tillatelser, og bekreft SSH-konfigurasjonen.
  15. Kan SCP gjenoppta en avbrutt overføring?
  16. Nei, SCP støtter ikke gjenopptagelse av overføringer. Vurder å bruke rsync for gjenopptasbare overføringer.
  17. Hvordan kan jeg sikre filintegritet under SCP-overføring?
  18. Bruke alternativet i Ansible eller verifiser sjekksummer manuelt etter overføring.

Å mestre bruken av SCP for filoverføringer mellom eksterne og lokale maskiner er en essensiell ferdighet for effektiv serveradministrasjon. Ved å bruke skallskript, Python-skript og Ansible-spillebøker, kan du automatisere og forenkle disse oppgavene, spare tid og redusere feil. Avanserte alternativer som rekursiv kopiering, portspesifikasjoner og datakomprimering forbedrer SCPs allsidighet ytterligere. Enten for daglig drift eller storskala datamigrasjoner, sikrer forståelse av disse teknikkene sikre og pålitelige filoverføringer.