Kopiranje map in datotek z oddaljenega na lokalni z uporabo SCP

Shell

Prenos datotek s SCP: Hitri vodnik

Protokol varnega kopiranja (SCP) je priročno orodje za prenos datotek in imenikov med oddaljenimi in lokalnimi napravami. Če za dostop do svojega strežnika pogosto uporabljate SSH, je znanje o tem, kako učinkovito kopirati mape in datoteke, bistveno za upravljanje vaših podatkov.

V tem priročniku bomo raziskali, kako uporabiti SCP za kopiranje oddaljene mape z imenom foo na vaš lokalni stroj, natančneje na /domov/uporabnik/namizje. Ta vadnica predvideva osnovno razumevanje SSH in terminalskih ukazov.

Ukaz Opis
scp -r Varno rekurzivno kopira imenik in njegovo vsebino z oddaljenega gostitelja na lokalni stroj.
paramiko.SSHClient() Ustvari primerek odjemalca SSH v Pythonu za olajšanje operacij SSH.
scp.get() Uporablja odjemalca SCP v Pythonu za pridobivanje datotek ali imenikov z oddaljenega gostitelja na lokalno pot.
ansible.builtin.fetch Ansible modul za pridobivanje datotek z oddaljenih računalnikov na lokalni stroj.
flat: no Možnost v modulu pridobivanja Ansible za ohranjanje strukture imenika med kopiranjem.
validate_checksum: yes Zagotavlja celovitost kopiranih datotek s preverjanjem njihovih kontrolnih vsot.

Razumevanje SCP za prenose datotek

Priloženi lupinski skript prikazuje uporabo za kopiranje mape z oddaljenega strežnika na lokalni računalnik. Najprej definira spremenljivke za oddaljeno uporabniško ime, gostitelja in imenik ter lokalni imenik. Skript nato izvede ukaz, ki pomeni "varna kopija" in omogoča rekurzivno kopiranje imenikov. Sintaksa določa izvorno pot, medtem ko ${LOCAL_DIR} določa ciljno pot na lokalnem računalniku. Skript se zaključi z odmevom sporočila o uspehu.

Skript Python doseže isti cilj, vendar uporablja knjižnico za upravljanje povezav SSH in knjižnico za izvedbo varne kopije. Po uvozu potrebnih knjižnic nastavi spremenljivke za oddaljene in lokalne imenike. Skript ustvari primerek odjemalca SSH z uporabo in se poveže z oddaljenim strežnikom z connect metoda. Nato ustvari primerek odjemalca SCP z in uporablja način za kopiranje oddaljenega imenika v lokalni računalnik. Na koncu skript zapre odjemalca SCP.

Avtomatizacija prenosov datotek z Ansible

Ansible playbook je še ena metoda za kopiranje datotek z oddaljenega strežnika na lokalni računalnik. Ansible za definiranje nalog uporablja konfiguracijo, ki temelji na YAML. Priročnik se začne s poimenovanjem naloge in določitvijo gostiteljev, ki so v tem primeru lokalni gostitelji. Nato definira nalogo za pridobivanje oddaljene mape z uporabo modul. The atribut določa oddaljeni imenik, medtem ko atribut atribut določa lokalni cilj. The flat: no možnost zagotavlja, da se struktura imenika ohrani med kopiranjem.

The zagotavlja, da priročnik ne bo uspel, če izvorni imenik ne obstaja, kar zagotavlja dodatno plast obravnave napak. Poleg tega je možnost preveri celovitost kopiranih datotek tako, da preveri njihove kontrolne vsote in tako zagotovi, da so bile datoteke prenesene pravilno in brez poškodb. Ta pristop je še posebej uporaben za avtomatizacijo ponavljajočih se nalog prenosa datotek na dosleden in zanesljiv način.

Uporaba SCP za prenos datotek z oddaljenega na lokalni

Skript lupine za prenos datotek 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}"

Avtomatizacija prenosov datotek SCP s Pythonom

Skript Python za avtomatiziran prenos SCP

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

Uporaba Ansible za upravljanje prenosov datotek SCP

Ansible Playbook za prenos datotek 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

Napredne SCP tehnike in premisleki

Poleg osnovnih prenosov datotek SCP ponuja več naprednih funkcij in možnosti, ki so lahko neprecenljive za zahtevnejše naloge. Ena taka funkcija je možnost uporabe nadomestnih znakov za določanje več datotek ali imenikov. Na primer, z uporabo kopira vse datoteke .txt iz oddaljenega imenika v lokalni imenik. To lahko prihrani čas in poenostavi potek dela pri delu s številnimi datotekami.

Druga uporabna funkcija je možnost, ki vam omogoča, da določite številko vrat za povezavo SCP. To je še posebej priročno, če vaša storitev SSH deluje na nestandardnih vratih. Na primer z uporabo se bo povezal z oddaljenim gostiteljem na vratih 2222. Poleg tega se bo možnost lahko uporabite za stiskanje podatkov med prenosom, kar lahko znatno skrajša čas prenosa velikih datotek. To dosežemo z dodajanjem -C na ukaz SCP, kot je in .

  1. Kako kopiram celoten imenik z uporabo SCP?
  2. Uporabite ukaz za rekurzivno kopiranje imenika.
  3. Ali lahko kopiram datoteke iz določenih vrat z uporabo SCP?
  4. Da, vrata lahko določite z .
  5. Kako lahko kopiram več datotek s pomočjo SCP?
  6. Uporabite nadomestne znake, kot je za kopiranje več datotek.
  7. Ali je mogoče stisniti datoteke med prenosom SCP?
  8. Da, dodajte možnost vašega ukaza SCP, kot npr .
  9. Kako upravljam velike prenose datotek s SCP?
  10. Uporabi možnost stiskanja datotek in zagotavljanje stabilne povezave za preprečevanje prekinitev.
  11. Ali je SCP mogoče avtomatizirati s skripti?
  12. Da, za avtomatizacijo prenosov datotek SCP lahko uporabite lupinske skripte, skripte Python ali priročnike Ansible.
  13. Kaj naj storim, če prenos SCP ne uspe?
  14. Preverite omrežno povezljivost, zagotovite pravilno pot in dovoljenja ter preverite konfiguracijo SSH.
  15. Ali lahko SCP nadaljuje prekinjen prenos?
  16. Ne, SCP ne podpira nadaljevanja prenosov. Razmislite o uporabi rsync za ponovne prenose.
  17. Kako lahko zagotovim celovitost datoteke med prenosom SCP?
  18. Uporabi možnost v Ansible ali ročno preverite kontrolne vsote po prenosu.

Obvladovanje uporabe SCP za prenos datotek med oddaljenimi in lokalnimi stroji je bistvena veščina za učinkovito upravljanje strežnika. Z uporabo lupinskih skriptov, skriptov Python in knjig Ansible lahko te naloge avtomatizirate in poenostavite, s čimer prihranite čas in zmanjšate število napak. Napredne možnosti, kot so rekurzivno kopiranje, specifikacija vrat in stiskanje podatkov, dodatno povečajo vsestranskost SCP. Ne glede na to, ali gre za vsakodnevne operacije ali obsežne selitve podatkov, razumevanje teh tehnik zagotavlja varne in zanesljive prenose datotek.