Mappen en bestanden kopiëren van extern naar lokaal met behulp van SCP

Mappen en bestanden kopiëren van extern naar lokaal met behulp van SCP
Shell

Bestanden overbrengen met SCP: een korte handleiding

Secure Copy Protocol (SCP) is een handig hulpmiddel voor het overbrengen van bestanden en mappen tussen externe en lokale machines. Als u regelmatig SSH gebruikt om toegang te krijgen tot uw server, is het essentieel om te weten hoe u mappen en bestanden efficiënt kunt kopiëren voor het beheren van uw gegevens.

In deze handleiding onderzoeken we hoe u SCP kunt gebruiken om de externe map met de naam te kopiëren foe naar uw lokale machine, specifiek naar /home/gebruiker/Bureaublad. Deze tutorial gaat uit van een basiskennis van SSH- en terminalopdrachten.

Commando Beschrijving
scp -r Kopieert veilig recursief een map en de inhoud ervan van een externe host naar een lokale machine.
paramiko.SSHClient() Creëert een SSH-clientinstantie in Python om SSH-bewerkingen te vergemakkelijken.
scp.get() Gebruikt de SCP-client in Python om bestanden of mappen op te halen van een externe host naar een lokaal pad.
ansible.builtin.fetch Ansible-module om bestanden van externe machines naar de lokale machine op te halen.
flat: no Optie in Ansible ophaalmodule om de directorystructuur te behouden tijdens het kopiëren.
validate_checksum: yes Garandeert de integriteit van gekopieerde bestanden door hun controlesommen te valideren.

Inzicht in SCP voor bestandsoverdrachten

Het meegeleverde shellscript demonstreert hoe u het kunt gebruiken scp om een ​​map van een externe server naar een lokale machine te kopiëren. Ten eerste definieert het variabelen voor de externe gebruikersnaam, host en map, evenals de lokale map. Het script voert vervolgens de scp -r commando, wat staat voor "secure copy" en het recursief kopiëren van mappen mogelijk maakt. De syntaxis ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} specificeert het bronpad, while ${LOCAL_DIR} specificeert het bestemmingspad op de lokale computer. Het script wordt afgesloten met een echo van een succesbericht.

Het Python-script bereikt hetzelfde doel, maar gebruikt de paramiko bibliotheek voor het afhandelen van SSH-verbindingen en de scp bibliotheek om de beveiligde kopie uit te voeren. Na het importeren van de benodigde bibliotheken worden variabelen ingesteld voor de externe en lokale mappen. Het script maakt een SSH-clientinstantie met behulp van paramiko.SSHClient() en maakt verbinding met de externe server met de connect methode. Vervolgens wordt er een SCP-clientinstantie gemaakt met SCPClient(ssh.get_transport()) en gebruikt de scp.get methode om de externe map naar de lokale machine te kopiëren. Ten slotte sluit het script de SCP-client.

Bestandsoverdrachten automatiseren met Ansible

Het Ansible-playbook is een andere methode voor het kopiëren van bestanden van een externe server naar een lokale machine. Ansible gebruikt een op YAML gebaseerde configuratie om taken te definiëren. Het draaiboek begint met het benoemen van de taak en het specificeren van de hosts, in dit geval localhost. Vervolgens wordt een taak gedefinieerd om een ​​externe map op te halen met behulp van de ansible.builtin.fetch module. De src attribuut specificeert de externe map, terwijl het dest attribuut specificeert de lokale bestemming. De flat: no optie zorgt ervoor dat de directorystructuur tijdens het kopiëren behouden blijft.

De fail_on_missing: yes Deze optie zorgt ervoor dat het playbook mislukt als de bronmap niet bestaat, wat een extra laag voor foutafhandeling oplevert. Bovendien is de validate_checksum: yes optie verifieert de integriteit van de gekopieerde bestanden door hun controlesommen te controleren, en zorgt ervoor dat de bestanden correct en zonder corruptie zijn overgedragen. Deze aanpak is met name handig voor het op een consistente en betrouwbare manier automatiseren van repetitieve taken voor bestandsoverdracht.

SCP gebruiken om bestanden over te zetten van extern naar lokaal

Shell-script voor SCP-bestandsoverdracht

# 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 van SCP-bestandsoverdrachten met Python

Python-script voor geautomatiseerde SCP-overdracht

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()

Ansible gebruiken om SCP-bestandsoverdrachten te beheren

Ansible Playbook voor SCP-bestandsoverdracht

--- 
- 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

Geavanceerde SCP-technieken en overwegingen

Naast standaard bestandsoverdrachten biedt SCP verschillende geavanceerde functies en opties die van onschatbare waarde kunnen zijn voor complexere taken. Eén zo'n functie is de mogelijkheid om jokertekens te gebruiken om meerdere bestanden of mappen op te geven. Gebruiken bijvoorbeeld scp user@remote_host:/path/to/files/*.txt /local/path/ kopieert alle .txt-bestanden van de externe map naar de lokale map. Dit kan tijd besparen en de workflows stroomlijnen bij het verwerken van talloze bestanden.

Een andere handige functie is de -P optie, waarmee u een poortnummer voor de SCP-verbinding kunt opgeven. Dit is vooral handig als uw SSH-service op een niet-standaard poort draait. Gebruik bijvoorbeeld scp -P 2222 user@remote_host:/path/to/file /local/path/ maakt verbinding met de externe host op poort 2222. Bovendien maakt de -C optie kan worden gebruikt om de gegevens tijdens de overdracht te comprimeren, wat de overdrachtstijd voor grote bestanden aanzienlijk kan verkorten. Dit wordt bereikt door toevoeging -C naar het SCP-commando, zoals in scp -C user@remote_host:/path/to/largefile /local/path/.

Veelgestelde vragen over SCP-bestandsoverdrachten

  1. Hoe kopieer ik een volledige map met SCP?
  2. Gebruik de opdracht scp -r user@remote_host:/path/to/remote/dir /local/path/ om een ​​map recursief te kopiëren.
  3. Kan ik bestanden van een specifieke poort kopiëren met behulp van SCP?
  4. Ja, u kunt de poort opgeven met scp -P port_number user@remote_host:/path/to/file /local/path/.
  5. Hoe kan ik meerdere bestanden kopiëren met SCP?
  6. Gebruik jokertekens, zoals scp user@remote_host:/path/to/files/*.txt /local/path/ om meerdere bestanden te kopiëren.
  7. Is het mogelijk om bestanden te comprimeren tijdens SCP-overdracht?
  8. Ja, voeg de -C optie toe aan uw SCP-opdracht, zoals scp -C user@remote_host:/path/to/file /local/path/.
  9. Hoe ga ik om met grote bestandsoverdrachten met SCP?
  10. Gebruik de -C optie om bestanden te comprimeren en een stabiele verbinding te garanderen om onderbrekingen te voorkomen.
  11. Kan SCP worden geautomatiseerd met scripts?
  12. Ja, u kunt shellscripts, Python-scripts of Ansible-playbooks gebruiken om de overdracht van SCP-bestanden te automatiseren.
  13. Wat moet ik doen als een SCP-overdracht mislukt?
  14. Controleer de netwerkconnectiviteit, zorg voor het juiste pad en de juiste machtigingen en verifieer de SSH-configuratie.
  15. Kan SCP een onderbroken overdracht hervatten?
  16. Nee, SCP ondersteunt het hervatten van overdrachten niet. Overweeg het gebruik van rsync voor hervatbare overdrachten.
  17. Hoe kan ik de bestandsintegriteit garanderen tijdens de SCP-overdracht?
  18. Gebruik de validate_checksum optie in Ansible of controleer de controlesommen handmatig na de overdracht.

Laatste gedachten over SCP-overdrachten:

Het beheersen van het gebruik van SCP voor bestandsoverdracht tussen externe en lokale machines is een essentiële vaardigheid voor efficiënt serverbeheer. Door shellscripts, Python-scripts en Ansible-playbooks te gebruiken, kunt u deze taken automatiseren en vereenvoudigen, waardoor u tijd bespaart en fouten vermindert. Geavanceerde opties zoals recursief kopiëren, poortspecificatie en datacompressie vergroten de veelzijdigheid van SCP nog verder. Of het nu gaat om dagelijkse werkzaamheden of grootschalige datamigraties, het begrijpen van deze technieken zorgt voor veilige en betrouwbare bestandsoverdrachten.