Copierea folderelor și fișierelor de la distanță în local folosind SCP

Shell

Transferarea fișierelor cu SCP: un ghid rapid

Secure Copy Protocol (SCP) este un instrument la îndemână pentru transferul de fișiere și directoare între mașini la distanță și locale. Dacă utilizați frecvent SSH pentru a vă accesa serverul, este esențial să știți cum să copiați eficient folderele și fișierele pentru gestionarea datelor.

În acest ghid, vom explora cum să folosiți SCP pentru a copia folderul de la distanță numit foo la mașina dvs. locală, în special la /home/user/Desktop. Acest tutorial presupune o înțelegere de bază a SSH și a comenzilor terminale.

Comanda Descriere
scp -r Copiază în siguranță un director și conținutul acestuia de la o gazdă la distanță pe o mașină locală în mod recursiv.
paramiko.SSHClient() Creează o instanță client SSH în Python pentru a facilita operațiunile SSH.
scp.get() Utilizează clientul SCP în Python pentru a prelua fișiere sau directoare de la o gazdă la distanță la o cale locală.
ansible.builtin.fetch Modul Ansible pentru a prelua fișiere de la mașini la distanță pe mașina locală.
flat: no Opțiune în modulul de preluare Ansible pentru a menține structura directorului în timpul copierii.
validate_checksum: yes Asigură integritatea fișierelor copiate prin validarea sumelor de control ale acestora.

Înțelegerea SCP pentru transferuri de fișiere

Scriptul shell furnizat demonstrează cum se utilizează pentru a copia un folder de pe un server la distanță pe o mașină locală. În primul rând, definește variabile pentru numele de utilizator, gazdă și director la distanță, precum și pentru directorul local. Apoi scriptul execută comanda, care înseamnă „copiere sigură” și permite copierea recursivă a directoarelor. Sintaxa specifică calea sursei, while ${LOCAL_DIR} specifică calea de destinație pe mașina locală. Scenariul se încheie prin ecou a unui mesaj de succes.

Scriptul Python atinge același scop, dar folosește bibliotecă pentru a gestiona conexiunile SSH și bibliotecă pentru a efectua copia securizată. După importarea bibliotecilor necesare, setează variabile pentru directoarele locale și la distanță. Scriptul creează o instanță client SSH folosind și se conectează la serverul de la distanță cu connect metodă. Apoi creează o instanță client SCP cu și folosește metoda de a copia directorul de la distanță pe mașina locală. În cele din urmă, scriptul închide clientul SCP.

Automatizarea transferurilor de fișiere cu Ansible

Registrul de joc Ansible este o altă metodă de copiere a fișierelor de pe un server la distanță pe o mașină locală. Ansible folosește o configurație bazată pe YAML pentru a defini sarcini. Manualul începe prin denumirea sarcinii și specificarea gazdelor, care în acest caz este localhost. Apoi definește o sarcină pentru a prelua un folder de la distanță folosind modul. The atributul specifică directorul de la distanță, în timp ce atributul specifică destinația locală. The flat: no opțiunea asigură menținerea structurii directoarelor în timpul copierii.

The opțiunea asigură că playbook-ul va eșua dacă directorul sursă nu există, oferind un nivel suplimentar de gestionare a erorilor. În plus, cel opțiunea verifică integritatea fișierelor copiate prin verificarea sumelor de control, asigurându-se că fișierele au fost transferate corect și fără corupție. Această abordare este deosebit de utilă pentru automatizarea sarcinilor repetitive de transfer de fișiere într-o manieră consistentă și fiabilă.

Utilizarea SCP pentru a transfera fișiere de la distanță la local

Script Shell pentru transferul de fișiere SCP

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

Automatizarea transferurilor de fișiere SCP cu Python

Script Python pentru transfer SCP automat

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

Utilizarea Ansible pentru a gestiona transferurile de fișiere SCP

Ansible Playbook pentru transferul de fișiere SCP

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

Tehnici SCP avansate și considerații

Dincolo de transferurile de fișiere de bază, SCP oferă mai multe caracteristici și opțiuni avansate care pot fi de neprețuit pentru sarcini mai complexe. O astfel de caracteristică este abilitatea de a folosi caractere joker pentru a specifica mai multe fișiere sau directoare. De exemplu, folosind va copia toate fișierele .txt din directorul de la distanță în directorul local. Acest lucru poate economisi timp și eficientiza fluxurile de lucru atunci când aveți de-a face cu numeroase fișiere.

O altă caracteristică utilă este opțiunea, care vă permite să specificați un număr de port pentru conexiunea SCP. Acest lucru este deosebit de util dacă serviciul dvs. SSH rulează pe un port non-standard. De exemplu, folosind se va conecta la gazda de la distanță pe portul 2222. În plus, opțiunea poate fi utilizată pentru a comprima datele în timpul transferului, ceea ce poate reduce semnificativ timpul de transfer pentru fișiere mari. Acest lucru se realizează prin adăugare -C la comanda SCP, cum ar fi în .

  1. Cum copiez un întreg director folosind SCP?
  2. Utilizați comanda pentru a copia recursiv un director.
  3. Pot copia fișiere dintr-un anumit port folosind SCP?
  4. Da, puteți specifica portul cu .
  5. Cum pot copia mai multe fișiere folosind SCP?
  6. Folosiți caractere wildcard cum ar fi pentru a copia mai multe fișiere.
  7. Este posibil să comprimați fișierele în timpul transferului SCP?
  8. Da, adaugă opțiune la comanda SCP, cum ar fi .
  9. Cum gestionez transferurile mari de fișiere cu SCP?
  10. Folosește opțiunea de a comprima fișierele și de a asigura o conexiune stabilă pentru a preveni întreruperile.
  11. SCP poate fi automatizat cu scripturi?
  12. Da, puteți utiliza scripturi shell, scripturi Python sau manuale Ansible pentru a automatiza transferurile de fișiere SCP.
  13. Ce ar trebui să fac dacă un transfer SCP eșuează?
  14. Verificați conectivitatea la rețea, asigurați-vă căile și permisiunile corecte și verificați configurația SSH.
  15. Poate SCP să reia un transfer întrerupt?
  16. Nu, SCP nu acceptă reluarea transferurilor. Luați în considerare utilizarea rsync pentru transferuri reluabile.
  17. Cum pot asigura integritatea fișierului în timpul transferului SCP?
  18. Folosește opțiunea în Ansible sau verificați manual sumele de control după transfer.

Stăpânirea utilizării SCP pentru transferurile de fișiere între mașini la distanță și locale este o abilitate esențială pentru gestionarea eficientă a serverului. Folosind scripturi shell, scripturi Python și manuale Ansible, puteți automatiza și simplifica aceste sarcini, economisind timp și reducând erorile. Opțiuni avansate precum copierea recursivă, specificarea portului și compresia datelor sporesc și mai mult versatilitatea SCP. Fie pentru operațiuni zilnice sau pentru migrarea datelor la scară largă, înțelegerea acestor tehnici asigură transferuri de fișiere sigure și fiabile.