Tiedostojen siirtäminen kauko-ohjauksesta paikalliseen SCP:n avulla

Tiedostojen siirtäminen kauko-ohjauksesta paikalliseen SCP:n avulla
Shell

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 scp -r -komento kopioidaksesi etähakemiston paikalliselle koneelle. The scp 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 -r 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ä, user@remote_host määrittää etäkäyttäjän ja isännän, ja /path/to/remote/folder ja /home/user/Desktop/ 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ää scp -r 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ää paramiko.SFTPClient.from_transport() tapa luoda SFTP-istunto. Sitten se määrittää toiminnon tiedostojen rekursiiviseksi kopioimiseksi etäpalvelimelta paikalliseen hakemistoon käyttämällä scp.listdir_attr() 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 scp 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ä -l vaihtoehto, jota seuraa kaistanleveysraja kilobitteinä sekunnissa, esimerkiksi scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. 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ä scp. Sillä aikaa scp 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ä -P 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.

Usein kysyttyjä kysymyksiä ja vastauksia SCP:stä

  1. Kuinka kopioin tiedoston paikallisesta etätilaan SCP:n avulla?
  2. Voit käyttää scp local_file user@remote_host:/path/to/remote/directory.
  3. Kuinka voin tarkistaa SCP-siirron edistymisen?
  4. Käytä -v vaihtoehto ottaa käyttöön monisanainen tila: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Voinko säilyttää tiedostomääritteet SCP:tä käytettäessä?
  6. Kyllä, käytä -p mahdollisuus säilyttää muokkausajat, pääsyajat ja tilat: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Kuinka käytän SCP:tä eri SSH-avaimen kanssa?
  8. Määritä SSH-avain näppäimellä -i vaihtoehto: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Kuinka käsittelen suuria tiedostojen siirtoja SCP:llä?
  10. Käytä -C vaihtoehto pakkaus ja -l mahdollisuus rajoittaa kaistanleveyttä: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Kuinka siirrän tiedostoja SCP:tä käyttämällä toisen SSH-portin kautta?
  12. Käytä -P vaihtoehto määrittää portti: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Voiko SCP käsitellä symbolisia linkkejä?
  14. Kyllä -r vaihtoehto kopioi symboliset linkit sekä tiedostot ja hakemistot.
  15. Mitä tapahtuu, jos SCP-siirto keskeytyy?
  16. Suorita uudelleen scp komento jatkaaksesi siirtoa; se ohittaa tiedostot, jotka on jo kopioitu.
  17. Kuinka käytän SCP:tä salasanalla skriptissä?
  18. Sen sijaan on suositeltavaa käyttää SSH-avaimia, mutta voit käyttää työkaluja, kuten sshpass salasanan todentamiseen skripteissä.

Viimeisiä ajatuksia SCP:n käytöstä

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.