Tiedostojen siirtäminen SCP:llä: Pikaopas
Secure Copy Protocol (SCP) on kätevä työkalu tiedostojen ja hakemistojen siirtämiseen etä- ja paikallisten koneiden välillä. Jos käytät usein SSH:ta palvelimellesi pääsyyn, kansioiden ja tiedostojen tehokkaan kopioimisen tunteminen on välttämätöntä tietojesi hallinnassa.
Tässä oppaassa tutkimme, kuinka SCP:tä käytetään kopioimaan nimetty etäkansio foo paikalliseen koneeseen, erityisesti /home/user/Desktop. Tämä opetusohjelma edellyttää SSH:n ja päätekomentojen perusymmärrystä.
Komento | Kuvaus |
---|---|
scp -r | Kopioi hakemiston ja sen sisällön turvallisesti etäisännästä paikalliselle koneelle rekursiivisesti. |
paramiko.SSHClient() | Luo SSH-asiakasesiintymän Pythonissa helpottaakseen SSH-toimintoja. |
scp.get() | Käyttää Pythonin SCP-asiakasohjelmaa tiedostojen tai hakemistojen hakemiseen etäisännästä paikalliseen polkuun. |
ansible.builtin.fetch | Soveltuva moduuli tiedostojen hakemiseen etäkoneista paikalliselle koneelle. |
flat: no | Vaihtoehto Ansible fetch -moduulissa hakemistorakenteen ylläpitämiseksi kopioinnin aikana. |
validate_checksum: yes | Varmistaa kopioitujen tiedostojen eheyden vahvistamalla niiden tarkistussummat. |
SCP:n ymmärtäminen tiedostonsiirtoa varten
Mukana toimitettu shell-skripti näyttää, kuinka sitä käytetään kopioidaksesi kansion etäpalvelimelta paikalliselle koneelle. Ensinnäkin se määrittää muuttujat etäkäyttäjänimelle, isännälle ja hakemistolle sekä paikalliselle hakemistolle. Skripti suorittaa sitten komento, joka tarkoittaa "suojattua kopiota" ja mahdollistaa hakemistojen rekursiivisen kopioinnin. Syntaksi määrittää lähdepolun, while ${LOCAL_DIR} määrittää kohdepolun paikallisessa koneessa. Käsikirjoitus päättyy toistamalla menestysviesti.
Python-skripti saavuttaa saman tavoitteen, mutta käyttää kirjasto käsittelemään SSH-yhteyksiä ja kirjasto suorittaaksesi suojatun kopioinnin. Kun tarvittavat kirjastot on tuotu, se asettaa muuttujat etä- ja paikallishakemistoille. Skripti luo SSH-asiakasesiintymän käyttämällä ja muodostaa yhteyden etäpalvelimeen connect menetelmä. Sitten se luo SCP-asiakasesiintymän kanssa ja käyttää tapa kopioida etähakemisto paikalliselle koneelle. Lopuksi komentosarja sulkee SCP-asiakkaan.
Tiedostonsiirron automatisointi Ansiblella
Ansible playbook on toinen tapa kopioida tiedostoja etäpalvelimelta paikalliselle koneelle. Ansible käyttää YAML-pohjaista kokoonpanoa tehtävien määrittämiseen. Pelikirja alkaa nimeämällä tehtävä ja määrittämällä isännät, joka tässä tapauksessa on localhost. Sitten se määrittää tehtävän noutaa etäkansio käyttämällä moduuli. The attribuutti määrittää etähakemiston, kun taas attribuutti määrittää paikallisen määränpään. The flat: no -vaihtoehto varmistaa, että hakemistorakenne säilyy kopioinnin aikana.
The -vaihtoehto varmistaa, että pelikirja epäonnistuu, jos lähdehakemistoa ei ole olemassa, mikä tarjoaa lisätason virheiden käsittelyä. Lisäksi, -vaihtoehto varmistaa kopioitujen tiedostojen eheyden tarkistamalla niiden tarkistussummat ja varmistaa, että tiedostot on siirretty oikein ja vioittumatta. Tämä lähestymistapa on erityisen hyödyllinen automatisoitaessa toistuvia tiedostonsiirtotehtäviä johdonmukaisella ja luotettavalla tavalla.
SCP:n käyttäminen tiedostojen siirtämiseen kauko-ohjauksesta paikalliseen
Shell Script SCP-tiedostonsiirtoon
# 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-tiedostonsiirtojen automatisointi Pythonilla
Python-skripti automaattiseen SCP-siirtoon
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()
Ansiblen käyttö SCP-tiedostonsiirtojen hallintaan
Mahdollinen ohjekirja SCP-tiedostonsiirrolle
---
- 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
Kehittyneet SCP-tekniikat ja huomioita
Perustiedostonsiirtojen lisäksi SCP tarjoaa useita edistyneitä ominaisuuksia ja vaihtoehtoja, jotka voivat olla korvaamattomia monimutkaisemmissa tehtävissä. Yksi tällainen ominaisuus on kyky käyttää yleismerkkejä useiden tiedostojen tai hakemistojen määrittämiseen. Esimerkiksi käyttämällä kopioi kaikki .txt-tiedostot etähakemistosta paikalliseen hakemistoon. Tämä voi säästää aikaa ja virtaviivaistaa työnkulkua lukuisten tiedostojen käsittelyssä.
Toinen hyödyllinen ominaisuus on -vaihtoehto, jonka avulla voit määrittää SCP-yhteyden portin numeron. Tämä on erityisen kätevää, jos SSH-palvelusi toimii ei-standardissa portissa. Esimerkiksi käyttämällä muodostaa yhteyden etäisäntään portissa 2222. Lisäksi -vaihtoehtoa voidaan käyttää tietojen pakkaamiseen siirron aikana, mikä voi merkittävästi lyhentää suurten tiedostojen siirtoaikoja. Tämä saavutetaan lisäämällä -C SCP-komentoon, kuten sisään .
- Kuinka kopioin koko hakemiston SCP:llä?
- Käytä komentoa kopioidaksesi hakemiston rekursiivisesti.
- Voinko kopioida tiedostoja tietystä portista SCP:n avulla?
- Kyllä, voit määrittää portin .
- Kuinka voin kopioida useita tiedostoja SCP:n avulla?
- Käytä yleismerkkejä, kuten kopioida useita tiedostoja.
- Onko mahdollista pakata tiedostoja SCP-siirron aikana?
- Kyllä, lisää vaihtoehto SCP-komentoasi, kuten .
- Kuinka käsittelen suuria tiedostojen siirtoja SCP:llä?
- Käytä mahdollisuus pakata tiedostoja ja varmistaa vakaa yhteys keskeytysten estämiseksi.
- Voidaanko SCP automatisoida skripteillä?
- Kyllä, voit käyttää shell-skriptejä, Python-komentosarjoja tai Ansible-pelikirjoja automatisoidaksesi SCP-tiedostojen siirrot.
- Mitä minun pitäisi tehdä, jos SCP-siirto epäonnistuu?
- Tarkista verkkoyhteydet, varmista oikea polku ja käyttöoikeudet sekä SSH-asetukset.
- Voiko SCP jatkaa keskeytettyä siirtoa?
- Ei, SCP ei tue siirtojen jatkamista. Harkitse rsyncin käyttöä jatkuviin siirtoihin.
- Kuinka voin varmistaa tiedostojen eheyden SCP-siirron aikana?
- Käytä Vaihtoehto kohdassa Ansible tai tarkista tarkistussummat manuaalisesti siirron jälkeen.
SCP:n käytön hallinta etä- ja paikallisten koneiden välisessä tiedostonsiirrossa on tehokkaan palvelimen hallinnan olennainen taito. Käyttämällä shell-skriptejä, Python-skriptejä ja Ansible-pelikirjoja voit automatisoida ja yksinkertaistaa näitä tehtäviä, mikä säästää aikaa ja vähentää virheitä. Kehittyneet vaihtoehdot, kuten rekursiivinen kopiointi, porttimääritykset ja tietojen pakkaus, lisäävät entisestään SCP:n monipuolisuutta. Olipa kyseessä päivittäiset toiminnot tai suuret tiedonsiirrot, näiden tekniikoiden ymmärtäminen varmistaa turvallisen ja luotettavan tiedostosiirron.