Mapju un failu kopēšana no attālās uz lokālo, izmantojot SCP

Mapju un failu kopēšana no attālās uz lokālo, izmantojot SCP
Shell

Failu pārsūtīšana, izmantojot SCP: īsa rokasgrāmata

Secure Copy Protocol (SCP) ir ērts rīks failu un direktoriju pārsūtīšanai starp attālām un vietējām iekārtām. Ja bieži izmantojat SSH, lai piekļūtu savam serverim, datu pārvaldībai ir svarīgi zināt, kā efektīvi kopēt mapes un failus.

Šajā rokasgrāmatā mēs izpētīsim, kā izmantot SCP, lai kopētu attālo mapi ar nosaukumu foo vietējai iekārtai, īpaši /home/user/Desktop. Šajā apmācībā tiek pieņemta pamata izpratne par SSH un termināļa komandām.

Komanda Apraksts
scp -r Droši kopē direktoriju un tā saturu no attālā resursdatora uz vietējo mašīnu rekursīvi.
paramiko.SSHClient() Izveido SSH klienta gadījumu Python, lai atvieglotu SSH darbības.
scp.get() Izmanto Python SCP klientu, lai izgūtu failus vai direktorijus no attālā resursdatora uz vietējo ceļu.
ansible.builtin.fetch Iespējamais modulis failu ielādei no attālām mašīnām uz vietējo mašīnu.
flat: no Iespēja Ansible ielādes modulī saglabāt direktoriju struktūru kopēšanas laikā.
validate_checksum: yes Nodrošina kopēto failu integritāti, apstiprinot to kontrolsummas.

Izpratne par SCP failu pārsūtīšanai

Piedāvātais čaulas skripts parāda, kā lietot scp lai kopētu mapi no attālā servera uz vietējo mašīnu. Pirmkārt, tas definē mainīgos attālajam lietotājvārdam, resursdatoram un direktorijam, kā arī lokālajam direktorijam. Pēc tam skripts izpilda scp -r komanda, kas apzīmē "drošu kopiju" un ļauj rekursīvi kopēt direktorijus. Sintakse ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} norāda avota ceļu, while ${LOCAL_DIR} norāda galamērķa ceļu vietējā mašīnā. Skripts noslēdzas, atkārtojot veiksmes ziņojumu.

Python skripts sasniedz to pašu mērķi, bet izmanto paramiko bibliotēka, lai apstrādātu SSH savienojumus un scp bibliotēka, lai veiktu drošo kopēšanu. Pēc nepieciešamo bibliotēku importēšanas tas iestata mainīgos attālajiem un vietējiem direktorijiem. Skripts izveido SSH klienta gadījumu, izmantojot paramiko.SSHClient() un izveido savienojumu ar attālo serveri, izmantojot connect metodi. Pēc tam tiek izveidota SCP klienta instance ar SCPClient(ssh.get_transport()) un izmanto scp.get metode, lai kopētu attālo direktoriju uz vietējo mašīnu. Visbeidzot, skripts aizver SCP klientu.

Failu pārsūtīšanas automatizācija, izmantojot Ansible

Ansible rokasgrāmata ir vēl viena metode failu kopēšanai no attālā servera uz vietējo mašīnu. Ansible izmanto uz YAML balstītu konfigurāciju, lai definētu uzdevumus. Rokasgrāmata sākas, nosaucot uzdevumu un norādot saimniekdatorus, kas šajā gadījumā ir localhost. Pēc tam tas definē uzdevumu, lai iegūtu attālo mapi, izmantojot ansible.builtin.fetch modulis. The src atribūts norāda attālo direktoriju, savukārt dest atribūts norāda vietējo galamērķi. The flat: no opcija nodrošina, ka kopēšanas laikā tiek saglabāta direktoriju struktūra.

The fail_on_missing: yes opcija nodrošina, ka rokasgrāmata neizdosies, ja avota direktorija nepastāv, nodrošinot papildu kļūdu apstrādes līmeni. Turklāt, validate_checksum: yes opcija pārbauda kopēto failu integritāti, pārbaudot to kontrolsummas, pārliecinoties, ka faili ir pārsūtīti pareizi un bez bojājumiem. Šī pieeja ir īpaši noderīga, lai konsekventi un uzticami automatizētu atkārtotu failu pārsūtīšanas uzdevumus.

SCP izmantošana failu pārsūtīšanai no attālās uz lokālo

Shell skripts SCP failu pārsūtīšanai

# 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 failu pārsūtīšanas automatizācija, izmantojot Python

Python skripts automatizētai SCP pārsūtīšanai

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

Izmantojot iespēju pārvaldīt SCP failu pārsūtīšanu

Iespējamā rokasgrāmata SCP failu pārsūtīšanai

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

Uzlabotas SCP metodes un apsvērumi

Papildus pamata failu pārsūtīšanai SCP piedāvā vairākas uzlabotas funkcijas un opcijas, kas var būt nenovērtējamas sarežģītākiem uzdevumiem. Viena no šādām funkcijām ir iespēja izmantot aizstājējzīmes, lai norādītu vairākus failus vai direktorijus. Piemēram, izmantojot scp user@remote_host:/path/to/files/*.txt /local/path/ kopēs visus .txt failus no attālā direktorija uz vietējo direktoriju. Tas var ietaupīt laiku un racionalizēt darbplūsmas, strādājot ar daudziem failiem.

Vēl viena noderīga funkcija ir -P opcija, kas ļauj norādīt SCP savienojuma porta numuru. Tas ir īpaši ērti, ja jūsu SSH pakalpojums darbojas nestandarta portā. Piemēram, izmantojot scp -P 2222 user@remote_host:/path/to/file /local/path/ izveidos savienojumu ar attālo saimniekdatoru portā 2222. Turklāt -C opciju var izmantot, lai saspiestu datus pārsūtīšanas laikā, kas var ievērojami samazināt lielu failu pārsūtīšanas laiku. Tas tiek panākts, pievienojot -C uz SCP komandu, piemēram, in scp -C user@remote_host:/path/to/largefile /local/path/.

Bieži uzdotie jautājumi par SCP failu pārsūtīšanu

  1. Kā kopēt visu direktoriju, izmantojot SCP?
  2. Izmantojiet komandu scp -r user@remote_host:/path/to/remote/dir /local/path/ lai rekursīvi kopētu direktoriju.
  3. Vai es varu kopēt failus no noteikta porta, izmantojot SCP?
  4. Jā, jūs varat norādīt portu ar scp -P port_number user@remote_host:/path/to/file /local/path/.
  5. Kā es varu kopēt vairākus failus, izmantojot SCP?
  6. Izmantojiet aizstājējzīmes, piemēram, scp user@remote_host:/path/to/files/*.txt /local/path/ lai kopētu vairākus failus.
  7. Vai SCP pārsūtīšanas laikā ir iespējams saspiest failus?
  8. Jā, pievienojiet -C opcija jūsu SCP komandai, piemēram, scp -C user@remote_host:/path/to/file /local/path/.
  9. Kā rīkoties ar lielu failu pārsūtīšanu, izmantojot SCP?
  10. Izmantojiet -C iespēju saspiest failus un nodrošināt stabilu savienojumu, lai novērstu pārtraukumus.
  11. Vai SCP var automatizēt ar skriptiem?
  12. Jā, varat izmantot čaulas skriptus, Python skriptus vai Ansible rokasgrāmatas, lai automatizētu SCP failu pārsūtīšanu.
  13. Kas man jādara, ja SCP pārsūtīšana neizdodas?
  14. Pārbaudiet tīkla savienojumu, nodrošiniet pareizo ceļu un atļaujas un pārbaudiet SSH konfigurāciju.
  15. Vai SCP var atsākt pārtrauktu pārsūtīšanu?
  16. Nē, SCP neatbalsta pārsūtīšanas atsākšanu. Apsveriet iespēju izmantot rsync, lai turpinātu pārsūtīšanu.
  17. Kā es varu nodrošināt faila integritāti SCP pārsūtīšanas laikā?
  18. Izmantojiet validate_checksum opciju Ansible vai pārbaudiet kontrolsummas manuāli pēc pārsūtīšanas.

Pēdējās domas par SCP pārskaitījumiem:

SCP izmantošanas apguve failu pārsūtīšanai starp attālām un vietējām iekārtām ir būtiska efektīva servera pārvaldības prasme. Izmantojot čaulas skriptus, Python skriptus un Ansible rokasgrāmatas, varat automatizēt un vienkāršot šos uzdevumus, ietaupot laiku un samazinot kļūdu skaitu. Papildu opcijas, piemēram, rekursīvā kopēšana, portu specifikācijas un datu saspiešana, vēl vairāk uzlabo SCP daudzpusību. Neatkarīgi no tā, vai runa ir par ikdienas darbībām vai liela mēroga datu migrāciju, šo metožu izpratne nodrošina drošu un uzticamu failu pārsūtīšanu.