Overføre filer fra ekstern til lokal ved hjelp av SCP

Overføre filer fra ekstern til lokal ved hjelp av SCP
Shell

Kopiering av filer på en sikker måte: En veiledning til bruk av SCP

Secure Copy Protocol (SCP) er et kraftig verktøy for sikker overføring av filer og kataloger mellom en ekstern server og en lokal maskin. Hvis du ofte bruker SSH for å få tilgang til serveren din, kan det å vite hvordan du effektivt bruker SCP effektivisere arbeidsflyten din, og sikre at du raskt og trygt kan kopiere viktige filer fra den eksterne serveren til ditt lokale system.

I denne guiden vil vi lede deg gjennom trinnene for å kopiere en ekstern mappe kalt "foo" til din lokale katalog på /home/user/Desktop. Enten du administrerer sikkerhetskopier, distribuerer kode eller bare trenger å flytte filer, vil forståelse av SCP-kommandoer gjøre oppgavene dine enklere og mer effektive.

Kommando Beskrivelse
scp -r Kopierer sikkert hele kataloger fra ekstern til lokal maskin.
paramiko.SFTPClient.from_transport() Oppretter en SFTP-klient fra en eksisterende SSH-transport.
os.makedirs() Oppretter en katalog rekursivt, og sikrer at alle kataloger på mellomnivå opprettes.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Legger automatisk til serverens vertsnøkkel uten å spørre, nyttig for skripting.
scp.listdir_attr() Viser attributtene til filene i en katalog, og muliggjør rekursiv kopieringsfunksjonalitet.
paramiko.S_ISDIR() Sjekker om en gitt bane er en katalog, og hjelper til med rekursiv kopiering.
scp.get() Kopierer en fil fra den eksterne serveren til den lokale maskinen.

Detaljert forklaring av SCP-skript

Det første skripteksemplet viser bruken av scp -r kommando for å kopiere en ekstern katalog til en lokal maskin. De scp command, som står for Secure Copy Protocol, er et kommandolinjeverktøy som bruker SSH til å overføre filer sikkert mellom en ekstern vert og en lokal maskin. De -r flagget i kommandoen spesifiserer at operasjonen skal være rekursiv, noe som betyr at den vil kopiere alle filer og kataloger i den angitte katalogen. Kommandostrukturen er enkel: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Her, user@remote_host spesifiserer den eksterne brukeren og verten, og /path/to/remote/folder og /home/user/Desktop/ er henholdsvis kilde- og destinasjonsstier.

Det andre eksemplet er et skallskript som automatiserer SCP-prosessen. Dette skriptet definerer variabler for den eksterne brukeren, verten og stier, noe som gjør det enkelt å gjenbruke og endre. Manuset bruker scp -r i et Bash-skript for å overføre filer, noe som hjelper i scenarier der repeterende overføringer kreves. Den inkluderer også en varselmelding for å informere brukeren når overføringen er fullført. Det tredje eksemplet bruker Python med Paramiko-biblioteket, som er spesielt nyttig for mer komplekse eller automatiserte arbeidsflyter. Skriptet setter opp en SSH-klient og bruker paramiko.SFTPClient.from_transport() metode for å opprette en SFTP-økt. Den definerer deretter en funksjon for å rekursivt kopiere filer fra den eksterne serveren til den lokale katalogen ved hjelp av scp.listdir_attr() og paramiko.S_ISDIR() å skille mellom filer og kataloger. Denne tilnærmingen er gunstig for de som foretrekker skripting i Python og trenger å integrere filoverføringsfunksjonalitet i større automatiseringsskript.

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

Shell Script for SCP

# Basic SCP command to copy a remote folder to a local directory
scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/

# Breakdown of the command:
# scp: invokes the SCP program
# -r: recursively copies entire directories
# user@remote_host:/path/to/remote/folder: specifies the user and path to the remote folder
# /home/user/Desktop/: specifies the local destination directory

# Example usage with real values:
scp -r user@example.com:/var/www/foo /home/user/Desktop/

Automatisering av SCP-overføring med et Shell-skript

Shell-skript for automatisering av SCP

#!/bin/bash
# This script automates the SCP process

# Variables
REMOTE_USER="user"
REMOTE_HOST="remote_host"
REMOTE_PATH="/path/to/remote/folder"
LOCAL_PATH="/home/user/Desktop/"

# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} ${LOCAL_PATH}

# Notify user of completion
echo "Files have been copied successfully from ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} to ${LOCAL_PATH}"

Python-skript for SCP-filoverføring

Python-skript som bruker Paramiko-biblioteket

import paramiko
import os

# Establish SSH client
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='user', password='password')

# SCP command
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# Define remote and local paths
remote_path = '/path/to/remote/folder'
local_path = '/home/user/Desktop/'

# Function to recursively copy files
def recursive_copy(remote_path, local_path):
    os.makedirs(local_path, exist_ok=True)
    for item in scp.listdir_attr(remote_path):
        remote_item = remote_path + '/' + item.filename
        local_item = os.path.join(local_path, item.filename)
        if paramiko.S_ISDIR(item.st_mode):
            recursive_copy(remote_item, local_item)
        else:
            scp.get(remote_item, local_item)

# Start copy process
recursive_copy(remote_path, local_path)

# Close connections
scp.close()
ssh.close()
print(f"Files have been copied successfully from {remote_path} to {local_path}")

Avansert SCP-bruk: Tips og triks

Utover den grunnleggende bruken av scp for kopiering av filer og kataloger er det flere avanserte teknikker og alternativer som kan forbedre filoverføringsopplevelsen. En nyttig funksjon er muligheten til å begrense båndbredden som brukes under overføringen, noe som kan være spesielt nyttig når du arbeider med begrensede nettverksressurser. Dette kan oppnås ved hjelp av -l alternativet etterfulgt av båndbreddegrensen i kilobits per sekund, for eksempel, 1. 3. Et annet nyttig alternativ er -C flagg, som muliggjør komprimering, og potensielt øke hastigheten på overføringen av store filer.

Sikkerhet er et annet kritisk aspekt å vurdere når du bruker scp. Samtidig som scp iboende bruker SSH for sikre overføringer, er det flere trinn du kan ta for å forbedre sikkerheten. For eksempel kan bruk av SSH-nøkler for autentisering i stedet for passord forbedre sikkerheten og brukervennligheten betydelig. I tillegg kan du spesifisere en annen SSH-port ved å bruke -P alternativet hvis serveren din ikke bruker standardport 22. For eksempel, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ lar deg koble til en server som kjører SSH på port 2222.

Vanlige spørsmål og svar om SCP

  1. Hvordan kopierer jeg en fil fra lokal til ekstern ved hjelp av SCP?
  2. Du kan bruke scp local_file user@remote_host:/path/to/remote/directory.
  3. Hvordan kan jeg sjekke fremdriften til SCP-overføringen?
  4. Bruke -v alternativ for å aktivere detaljert modus: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Kan jeg bevare filattributter mens jeg bruker SCP?
  6. Ja, bruk -p alternativ for å bevare endringstider, tilgangstider og moduser: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Hvordan bruker jeg SCP med en annen SSH-nøkkel?
  8. Spesifiser SSH-nøkkelen med -i alternativ: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Hvordan håndterer jeg store filoverføringer med SCP?
  10. Bruke -C mulighet for komprimering og -l alternativ for å begrense båndbredde: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Hvordan overfører jeg filer med SCP gjennom en annen SSH-port?
  12. Bruke -P alternativ for å spesifisere porten: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Kan SCP håndtere symbolske lenker?
  14. Ja, det -r alternativet vil kopiere symbolske lenker samt filer og kataloger.
  15. Hva skjer hvis en SCP-overføring avbrytes?
  16. Kjør på nytt scp kommando for å gjenoppta overføringen; den vil hoppe over filer som allerede er kopiert.
  17. Hvordan bruker jeg SCP med et passord i et skript?
  18. Det anbefales å bruke SSH-nøkler i stedet, men du kan bruke verktøy som sshpass for passordautentisering i skript.

Siste tanker om SCP-bruk

Å forstå hvordan du bruker SCP til å overføre filer og kataloger fra en ekstern server til en lokal maskin kan forbedre arbeidsflyteffektiviteten betraktelig. Ved å mestre både grunnleggende kommandoer og avanserte teknikker kan du sikre sikre og effektive dataoverføringer. Enten du kopierer enkeltfiler eller hele kataloger, automatiserer oppgaver med skript eller bruker Python for mer komplekse operasjoner, forblir SCP et allsidig og kraftig verktøy for dine databehandlingsbehov.