Aplankų ir failų kopijavimas iš nuotolinio į vietinį naudojant SCP

Aplankų ir failų kopijavimas iš nuotolinio į vietinį naudojant SCP
Shell

Failų perkėlimas naudojant SCP: trumpas vadovas

Secure Copy Protocol (SCP) yra patogus įrankis failams ir katalogams perkelti iš nuotolinio ir vietinio kompiuterio. Jei serveriui pasiekti dažnai naudojate SSH, norint tvarkyti duomenis būtina žinoti, kaip efektyviai kopijuoti aplankus ir failus.

Šiame vadove mes išnagrinėsime, kaip naudoti SCP nukopijuoti nuotolinį aplanką pavadinimu foo vietiniam įrenginiui, konkrečiai /home/user/Desktop. Šioje pamokoje pateikiamas pagrindinis SSH ir terminalo komandų supratimas.

komandą apibūdinimas
scp -r Saugiai rekursyviai kopijuoja katalogą ir jo turinį iš nuotolinio pagrindinio kompiuterio į vietinį kompiuterį.
paramiko.SSHClient() Sukuria SSH kliento egzempliorių Python, kad palengvintų SSH operacijas.
scp.get() Naudoja SCP klientą Python, kad nuskaitytų failus arba katalogus iš nuotolinio pagrindinio kompiuterio į vietinį kelią.
ansible.builtin.fetch Galimas modulis rinkti failus iš nuotolinių mašinų į vietinį kompiuterį.
flat: no Ansible fetch modulio parinktis, skirta išlaikyti katalogo struktūrą kopijavimo metu.
validate_checksum: yes Užtikrina nukopijuotų failų vientisumą, patvirtindamas jų kontrolines sumas.

Suprasti SCP failų perkėlimui

Pateiktas apvalkalo scenarijus parodo, kaip naudoti scp nukopijuoti aplanką iš nuotolinio serverio į vietinį kompiuterį. Pirma, jis apibrėžia nuotolinio vartotojo vardo, pagrindinio kompiuterio ir katalogo, taip pat vietinio katalogo kintamuosius. Tada scenarijus vykdo scp -r komanda, kuri reiškia „saugią kopiją“ ir leidžia rekursyviai kopijuoti katalogus. Sintaksė ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} nurodo šaltinio kelią, while ${LOCAL_DIR} nurodo paskirties kelią vietiniame kompiuteryje. Scenarijus baigiamas atkartojant sėkmės pranešimą.

Python scenarijus pasiekia tą patį tikslą, bet naudoja paramiko biblioteka, skirta tvarkyti SSH ryšius ir scp biblioteką, kad būtų galima saugiai kopijuoti. Importavęs reikiamas bibliotekas, jis nustato nuotolinio ir vietinio katalogų kintamuosius. Scenarijus sukuria SSH kliento egzempliorių naudodamas paramiko.SSHClient() ir prisijungia prie nuotolinio serverio su connect metodas. Tada jis sukuria SCP kliento egzempliorių su SCPClient(ssh.get_transport()) ir naudoja scp.get būdas nukopijuoti nuotolinį katalogą į vietinį kompiuterį. Galiausiai scenarijus uždaro SCP klientą.

Failų perkėlimo automatizavimas naudojant Ansible

Ansible grotuvas yra dar vienas būdas kopijuoti failus iš nuotolinio serverio į vietinį kompiuterį. Ansible naudoja YAML pagrįstą konfigūraciją užduotims apibrėžti. Žaidimo knyga pradedama įvardijant užduotį ir nurodant pagrindinius kompiuterius, kurie šiuo atveju yra localhost. Tada jis apibrėžia užduotį gauti nuotolinį aplanką naudojant ansible.builtin.fetch modulis. The src atributas nurodo nuotolinį katalogą, o dest atributas nurodo vietinę paskirties vietą. The flat: no parinktis užtikrina, kad kopijavimo metu būtų išlaikyta katalogo struktūra.

The fail_on_missing: yes Parinktis užtikrina, kad planas suges, jei šaltinio katalogas neegzistuoja, o tai suteikia papildomą klaidų tvarkymo lygmenį. Be to, validate_checksum: yes parinktis patikrina nukopijuotų failų vientisumą, patikrindama jų kontrolines sumas, užtikrindama, kad failai būtų perkelti teisingai ir nesugadinti. Šis metodas ypač naudingas norint nuosekliai ir patikimai automatizuoti pasikartojančias failų perdavimo užduotis.

SCP naudojimas failams perkelti iš nuotolinio į vietinį

Shell scenarijus SCP failų perkėlimui

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

SCP failų perkėlimo automatizavimas naudojant Python

Python scenarijus, skirtas automatizuotam SCP perkėlimui

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 naudojimas SCP failų perkėlimui valdyti

Galimas SCP failų perkėlimo vadovas

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

Pažangūs SCP metodai ir svarstymai

Be pagrindinių failų perkėlimo, SCP siūlo keletą pažangių funkcijų ir parinkčių, kurios gali būti neįkainojamos atliekant sudėtingesnes užduotis. Viena iš tokių funkcijų yra galimybė naudoti pakaitos simbolius, norint nurodyti kelis failus ar katalogus. Pavyzdžiui, naudojant scp user@remote_host:/path/to/files/*.txt /local/path/ nukopijuos visus .txt failus iš nuotolinio katalogo į vietinį katalogą. Tai gali sutaupyti laiko ir supaprastinti darbo eigą dirbant su daugybe failų.

Kita naudinga funkcija yra -P parinktis, leidžianti nurodyti SCP ryšio prievado numerį. Tai ypač patogu, jei jūsų SSH paslauga veikia nestandartiniame prievade. Pavyzdžiui, naudojant scp -P 2222 user@remote_host:/path/to/file /local/path/ prisijungs prie nuotolinio pagrindinio kompiuterio per 2222 prievadą. Be to, -C parinktis gali būti naudojama duomenims suspausti perdavimo metu, o tai gali žymiai sutrumpinti didelių failų perdavimo laiką. Tai pasiekiama pridedant -C į SCP komandą, pvz., in scp -C user@remote_host:/path/to/largefile /local/path/.

Dažni klausimai apie SCP failų perkėlimą

  1. Kaip nukopijuoti visą katalogą naudojant SCP?
  2. Naudokite komandą scp -r user@remote_host:/path/to/remote/dir /local/path/ norėdami rekursyviai nukopijuoti katalogą.
  3. Ar galiu nukopijuoti failus iš konkretaus prievado naudodamas SCP?
  4. Taip, galite nurodyti prievadą su scp -P port_number user@remote_host:/path/to/file /local/path/.
  5. Kaip nukopijuoti kelis failus naudojant SCP?
  6. Naudokite pakaitos simbolius, pvz scp user@remote_host:/path/to/files/*.txt /local/path/ norėdami nukopijuoti kelis failus.
  7. Ar galima suspausti failus SCP perdavimo metu?
  8. Taip, pridėkite -C parinktis savo SCP komandai, pvz., scp -C user@remote_host:/path/to/file /local/path/.
  9. Kaip tvarkyti didelius failų perkėlimus naudojant SCP?
  10. Naudoti -C galimybė suspausti failus ir užtikrinti stabilų ryšį, kad būtų išvengta trikdžių.
  11. Ar SCP galima automatizuoti naudojant scenarijus?
  12. Taip, norėdami automatizuoti SCP failų perkėlimą, galite naudoti apvalkalo scenarijus, Python scenarijus arba Ansible grojaraščius.
  13. Ką daryti, jei SCP perkėlimas nepavyksta?
  14. Patikrinkite tinklo ryšį, užtikrinkite teisingą kelią ir leidimus bei patikrinkite SSH konfigūraciją.
  15. Ar SCP gali atnaujinti pertrauktą perdavimą?
  16. Ne, SCP nepalaiko perkėlimų atnaujinimo. Apsvarstykite galimybę naudoti rsync atnaujinamiems perkėlimams.
  17. Kaip galiu užtikrinti failo vientisumą SCP perdavimo metu?
  18. Naudoti validate_checksum parinktį Ansible arba patikrinkite kontrolines sumas rankiniu būdu po perkėlimo.

Paskutinės mintys apie SCP perkėlimą:

Įvaldyti SCP naudojimą failų perdavimui tarp nuotolinio ir vietinio kompiuterio yra esminis efektyvaus serverio valdymo įgūdis. Naudodami apvalkalo scenarijus, Python scenarijus ir Ansible žaidimų knygas galite automatizuoti ir supaprastinti šias užduotis, sutaupydami laiko ir sumažindami klaidų. Išplėstinės parinktys, tokios kaip rekursinis kopijavimas, prievado specifikacija ir duomenų glaudinimas, dar labiau padidina SCP universalumą. Nesvarbu, ar tai yra kasdienė veikla, ar didelio masto duomenų perkėlimas, šių metodų supratimas užtikrina saugų ir patikimą failų perdavimą.