Bestanden overbrengen van extern naar lokaal met behulp van SCP

Shell

Bestanden veilig kopiëren: een handleiding voor het gebruik van SCP

Secure Copy Protocol (SCP) is een krachtig hulpmiddel voor het veilig overbrengen van bestanden en mappen tussen een externe server en een lokale machine. Als u regelmatig SSH gebruikt om toegang te krijgen tot uw server, kan het weten hoe u SCP effectief kunt gebruiken uw workflow stroomlijnen, zodat u snel en veilig belangrijke bestanden van uw externe server naar uw lokale systeem kunt kopiëren.

In deze handleiding leiden we u door de stappen voor het kopiëren van een externe map met de naam "foo" naar uw lokale map op /home/user/Desktop. Of u nu back-ups beheert, code implementeert of alleen bestanden moet verplaatsen: als u de SCP-opdrachten begrijpt, worden uw taken eenvoudiger en efficiënter.

Commando Beschrijving
scp -r Kopieert veilig volledige mappen van een externe naar een lokale machine.
paramiko.SFTPClient.from_transport() Creëert een SFTP-client van een bestaand SSH-transport.
os.makedirs() Creëert recursief een map, waarbij wordt verzekerd dat alle mappen op tussenliggend niveau worden gemaakt.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Voegt automatisch de hostsleutel van de server toe zonder daarom te vragen, handig voor scripting.
scp.listdir_attr() Geeft een overzicht van de kenmerken van bestanden in een directory, waardoor recursieve kopieerfunctionaliteit mogelijk wordt.
paramiko.S_ISDIR() Controleert of een bepaald pad een map is, wat helpt bij recursief kopiëren.
scp.get() Kopieert een bestand van de externe server naar de lokale machine.

Gedetailleerde uitleg van SCP-scripts

Het eerste scriptvoorbeeld demonstreert het gebruik van de opdracht om een ​​externe map naar een lokale machine te kopiëren. De command, wat staat voor Secure Copy Protocol, is een opdrachtregelprogramma dat SSH gebruikt om bestanden veilig over te dragen tussen een externe host en een lokale machine. De flag in de opdracht geeft aan dat de bewerking recursief moet zijn, wat betekent dat alle bestanden en mappen binnen de opgegeven map worden gekopieerd. De commandostructuur is eenvoudig: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Hier, specificeert de externe gebruiker en host, en En zijn respectievelijk de bron- en bestemmingspaden.

Het tweede voorbeeld is een shellscript dat het SCP-proces automatiseert. Dit script definieert variabelen voor de externe gebruiker, host en paden, waardoor deze gemakkelijk opnieuw kunnen worden gebruikt en aangepast. Het script gebruikt binnen een Bash-script om bestanden over te dragen, wat helpt in scenario's waarin herhaalde overdrachten vereist zijn. Het bevat ook een meldingsbericht om de gebruiker te informeren wanneer de overdracht is voltooid. In het derde voorbeeld wordt Python gebruikt met de Paramiko-bibliotheek, wat vooral handig is voor complexere of geautomatiseerde workflows. Het script stelt een SSH-client in en gebruikt de methode om een ​​SFTP-sessie te maken. Vervolgens definieert het een functie om bestanden recursief van de externe server naar de lokale map te kopiëren met behulp van En paramiko.S_ISDIR() om onderscheid te maken tussen bestanden en mappen. Deze aanpak is gunstig voor degenen die de voorkeur geven aan scripting in Python en de functionaliteit voor bestandsoverdracht moeten integreren in grotere automatiseringsscripts.

SCP gebruiken om bestanden over te zetten van een externe server naar een lokale machine

Shell-script voor 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/

SCP-overdracht automatiseren met een Shell-script

Shell-script voor het automatiseren van 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-script voor SCP-bestandsoverdracht

Python-script met behulp van de Paramiko-bibliotheek

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}")

Geavanceerd SCP-gebruik: tips en trucs

Voorbij het basisgebruik van voor het kopiëren van bestanden en mappen zijn er verschillende geavanceerde technieken en opties die uw ervaring met bestandsoverdracht kunnen verbeteren. Een handige functie is de mogelijkheid om de bandbreedte die tijdens de overdracht wordt gebruikt te beperken, wat vooral handig kan zijn als u met beperkte netwerkbronnen werkt. Dit kan worden bereikt met behulp van de optie gevolgd door de bandbreedtelimiet in kilobits per seconde, bijvoorbeeld . Een andere handige optie is de -C flag, die compressie mogelijk maakt, waardoor de overdracht van grote bestanden mogelijk wordt versneld.

Beveiliging is een ander cruciaal aspect waarmee u rekening moet houden bij het gebruik . Terwijl maakt inherent gebruik van SSH voor veilige overdrachten. Er zijn aanvullende stappen die u kunt nemen om de beveiliging te verbeteren. Het gebruik van SSH-sleutels voor authenticatie in plaats van wachtwoorden kan bijvoorbeeld de veiligheid en het gemak aanzienlijk verbeteren. Bovendien kunt u een andere SSH-poort opgeven met behulp van de optie als uw server de standaardpoort 22 niet gebruikt. Bijvoorbeeld scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ Hiermee kunt u verbinding maken met een server waarop SSH draait op poort 2222.

  1. Hoe kopieer ik een bestand van lokaal naar extern met behulp van SCP?
  2. Je kunt gebruiken .
  3. Hoe kan ik de voortgang van de SCP-overdracht controleren?
  4. Gebruik de optie om de uitgebreide modus in te schakelen: .
  5. Kan ik bestandskenmerken behouden tijdens het gebruik van SCP?
  6. Ja, gebruik de optie om wijzigingstijden, toegangstijden en modi te behouden: .
  7. Hoe gebruik ik SCP met een andere SSH-sleutel?
  8. Geef de SSH-sleutel op met de keuze: .
  9. Hoe ga ik om met grote bestandsoverdrachten met SCP?
  10. Gebruik de optie voor compressie en de optie om bandbreedte te beperken: .
  11. Hoe breng ik bestanden over met behulp van SCP via een andere SSH-poort?
  12. Gebruik de optie om de poort op te geven: .
  13. Kan SCP symbolische links verwerken?
  14. Ja de optie kopieert zowel symbolische links als bestanden en mappen.
  15. Wat gebeurt er als een SCP-overdracht wordt onderbroken?
  16. Voer de opnieuw uit opdracht om de overdracht te hervatten; het slaat bestanden over die al zijn gekopieerd.
  17. Hoe gebruik ik SCP met een wachtwoord in een script?
  18. Het wordt aanbevolen om in plaats daarvan SSH-sleutels te gebruiken, maar u kunt ook tools gebruiken zoals voor wachtwoordverificatie in scripts.

Als u begrijpt hoe u SCP kunt gebruiken om bestanden en mappen van een externe server naar een lokale machine over te brengen, kunt u de efficiëntie van uw workflow aanzienlijk verbeteren. Door zowel basisopdrachten als geavanceerde technieken onder de knie te krijgen, kunt u veilige en efficiënte gegevensoverdracht garanderen. Of u nu afzonderlijke bestanden of hele mappen kopieert, taken automatiseert met scripts of Python gebruikt voor complexere bewerkingen, SCP blijft een veelzijdige en krachtige tool voor uw gegevensbeheerbehoeften.