Tiedostojen turvallinen kopioiminen: opas SCP:n käyttöön
Secure Copy Protocol (SCP) on tehokas työkalu tiedostojen ja hakemistojen turvalliseen siirtämiseen etäpalvelimen ja paikallisen koneen välillä. Jos käytät usein SSH:ta palvelimesi käyttämiseen, SCP:n tehokkaan käytön tunteminen voi virtaviivaistaa työnkulkua ja varmistaa, että voit kopioida tärkeitä tiedostoja etäpalvelimeltasi paikalliseen järjestelmääsi nopeasti ja turvallisesti.
Tässä oppaassa opastamme sinua kopioimaan "foo"-nimisen etäkansion paikalliseen hakemistoosi osoitteessa /home/user/Desktop. Hallitsetpa varmuuskopioita, otat koodin käyttöön tai haluat vain siirtää tiedostoja, SCP-komentojen ymmärtäminen tekee tehtävistäsi helpompaa ja tehokkaampaa.
Komento | Kuvaus |
---|---|
scp -r | Kopioi turvallisesti kokonaisia hakemistoja etäältä paikalliselle koneelle. |
paramiko.SFTPClient.from_transport() | Luo SFTP-asiakkaan olemassa olevasta SSH-siirrosta. |
os.makedirs() | Luo hakemiston rekursiivisesti varmistaen, että kaikki keskitason hakemistot luodaan. |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) | Lisää automaattisesti palvelimen isäntäavaimen ilman kehotusta, hyödyllinen komentosarjoille. |
scp.listdir_attr() | Luetteloi tiedostojen attribuutit hakemistossa, mikä mahdollistaa rekursiivisen kopiointitoiminnon. |
paramiko.S_ISDIR() | Tarkistaa, onko tietty polku hakemisto, mikä auttaa rekursiivisessa kopioinnissa. |
scp.get() | Kopioi tiedoston etäpalvelimelta paikalliselle koneelle. |
Yksityiskohtainen selitys SCP-skripteistä
Ensimmäinen komentosarjaesimerkki osoittaa -komento kopioidaksesi etähakemiston paikalliselle koneelle. The komento, joka tulee sanoista Secure Copy Protocol, on komentorivityökalu, joka käyttää SSH:ta tiedostojen siirtämiseen turvallisesti etäisännän ja paikallisen koneen välillä. The lippu komennossa määrittää, että toiminnon tulee olla rekursiivinen, mikä tarkoittaa, että se kopioi kaikki määritetyn hakemiston tiedostot ja hakemistot. Komentorakenne on yksinkertainen: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Tässä, määrittää etäkäyttäjän ja isännän, ja ja ovat lähde- ja kohdepolut, vastaavasti.
Toinen esimerkki on shell-skripti, joka automatisoi SCP-prosessin. Tämä komentosarja määrittää muuttujat etäkäyttäjälle, isännälle ja poluille, mikä tekee siitä helpon uudelleenkäytön ja muokkaamisen. Käsikirjoitus käyttää Bash-skriptin sisällä tiedostojen siirtämiseen, mikä auttaa tilanteissa, joissa tarvitaan toistuvia siirtoja. Se sisältää myös ilmoitusviestin, joka ilmoittaa käyttäjälle, kun siirto on valmis. Kolmas esimerkki käyttää Pythonia Paramiko-kirjaston kanssa, joka on erityisen hyödyllinen monimutkaisemmissa tai automatisoiduissa työnkulkuissa. Skripti määrittää SSH-asiakkaan ja käyttää tapa luoda SFTP-istunto. Sitten se määrittää toiminnon tiedostojen rekursiiviseksi kopioimiseksi etäpalvelimelta paikalliseen hakemistoon käyttämällä ja paramiko.S_ISDIR() tiedostojen ja hakemistojen erottamiseksi toisistaan. Tämä lähestymistapa on hyödyllinen niille, jotka pitävät komentosarjoista Pythonissa ja joiden on integroitava tiedostonsiirtotoiminto suurempiin automaatiokomentokirjoihin.
SCP:n käyttäminen tiedostojen siirtämiseen etäpalvelimelta paikalliselle koneelle
Shell Script SCP:lle
# Basic SCP command to copy a remote folder to a local directory
scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/
# Breakdown of the command:
# scp: invokes the SCP program
# -r: recursively copies entire directories
# user@remote_host:/path/to/remote/folder: specifies the user and path to the remote folder
# /home/user/Desktop/: specifies the local destination directory
# Example usage with real values:
scp -r user@example.com:/var/www/foo /home/user/Desktop/
SCP-siirron automatisointi Shell-skriptillä
Shell-skripti SCP:n automatisointiin
#!/bin/bash
# This script automates the SCP process
# Variables
REMOTE_USER="user"
REMOTE_HOST="remote_host"
REMOTE_PATH="/path/to/remote/folder"
LOCAL_PATH="/home/user/Desktop/"
# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} ${LOCAL_PATH}
# Notify user of completion
echo "Files have been copied successfully from ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} to ${LOCAL_PATH}"
Python-skripti SCP-tiedostonsiirtoon
Python-skripti Paramiko-kirjaston avulla
import paramiko
import os
# Establish SSH client
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='user', password='password')
# SCP command
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())
# Define remote and local paths
remote_path = '/path/to/remote/folder'
local_path = '/home/user/Desktop/'
# Function to recursively copy files
def recursive_copy(remote_path, local_path):
os.makedirs(local_path, exist_ok=True)
for item in scp.listdir_attr(remote_path):
remote_item = remote_path + '/' + item.filename
local_item = os.path.join(local_path, item.filename)
if paramiko.S_ISDIR(item.st_mode):
recursive_copy(remote_item, local_item)
else:
scp.get(remote_item, local_item)
# Start copy process
recursive_copy(remote_path, local_path)
# Close connections
scp.close()
ssh.close()
print(f"Files have been copied successfully from {remote_path} to {local_path}")
Kehittynyt SCP-käyttö: vinkkejä ja temppuja
Peruskäytön lisäksi Tiedostojen ja hakemistojen kopioimiseen on olemassa useita kehittyneitä tekniikoita ja vaihtoehtoja, jotka voivat parantaa tiedostonsiirtokokemustasi. Yksi hyödyllinen ominaisuus on kyky rajoittaa siirron aikana käytettävää kaistanleveyttä, mikä voi olla erityisen hyödyllistä käytettäessä rajoitettuja verkkoresursseja. Tämä voidaan saavuttaa käyttämällä vaihtoehto, jota seuraa kaistanleveysraja kilobitteinä sekunnissa, esimerkiksi . Toinen hyödyllinen vaihtoehto on -C lippu, joka mahdollistaa pakkaamisen, mikä saattaa nopeuttaa suurten tiedostojen siirtoa.
Turvallisuus on toinen kriittinen näkökohta, joka on otettava huomioon käytettäessä . Sillä aikaa käyttää luonnostaan SSH:ta turvallisiin siirtoihin, voit parantaa turvallisuutta lisätoimilla. Esimerkiksi SSH-avaimien käyttäminen todentamiseen salasanojen sijaan voi parantaa merkittävästi turvallisuutta ja käyttömukavuutta. Lisäksi voit määrittää toisen SSH-portin käyttämällä vaihtoehto, jos palvelimesi ei käytä oletusporttia 22. Esimerkiksi scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ mahdollistaa yhteyden muodostamisen palvelimeen, jossa on SSH portissa 2222.
- Kuinka kopioin tiedoston paikallisesta etätilaan SCP:n avulla?
- Voit käyttää .
- Kuinka voin tarkistaa SCP-siirron edistymisen?
- Käytä vaihtoehto ottaa käyttöön monisanainen tila: .
- Voinko säilyttää tiedostomääritteet SCP:tä käytettäessä?
- Kyllä, käytä mahdollisuus säilyttää muokkausajat, pääsyajat ja tilat: .
- Kuinka käytän SCP:tä eri SSH-avaimen kanssa?
- Määritä SSH-avain näppäimellä vaihtoehto: .
- Kuinka käsittelen suuria tiedostojen siirtoja SCP:llä?
- Käytä vaihtoehto pakkaus ja mahdollisuus rajoittaa kaistanleveyttä: .
- Kuinka siirrän tiedostoja SCP:tä käyttämällä toisen SSH-portin kautta?
- Käytä vaihtoehto määrittää portti: .
- Voiko SCP käsitellä symbolisia linkkejä?
- Kyllä vaihtoehto kopioi symboliset linkit sekä tiedostot ja hakemistot.
- Mitä tapahtuu, jos SCP-siirto keskeytyy?
- Suorita uudelleen komento jatkaaksesi siirtoa; se ohittaa tiedostot, jotka on jo kopioitu.
- Kuinka käytän SCP:tä salasanalla skriptissä?
- Sen sijaan on suositeltavaa käyttää SSH-avaimia, mutta voit käyttää työkaluja, kuten salasanan todentamiseen skripteissä.
SCP:n käyttäminen tiedostojen ja hakemistojen siirtämiseen etäpalvelimelta paikalliselle koneelle voi parantaa huomattavasti työnkulkusi tehokkuutta. Hallitsemalla sekä peruskomentoja että edistyneitä tekniikoita voit varmistaa turvallisen ja tehokkaan tiedonsiirron. Kopioitpa yksittäisiä tiedostoja tai kokonaisia hakemistoja, automatisoit tehtäviä komentosarjoilla tai käytät Pythonia monimutkaisempiin toimintoihin, SCP on edelleen monipuolinen ja tehokas työkalu tiedonhallintatarpeisiisi.