Failų perkėlimas iš nuotolinio į vietinį naudojant SCP

Failų perkėlimas iš nuotolinio į vietinį naudojant SCP
Shell

Saugus failų kopijavimas: SCP naudojimo vadovas

Secure Copy Protocol (SCP) yra galingas įrankis, leidžiantis saugiai perkelti failus ir katalogus tarp nuotolinio serverio ir vietinio kompiuterio. Jei dažnai naudojate SSH serveriui pasiekti, žinodami, kaip efektyviai naudoti SCP, galite supaprastinti darbo eigą ir užtikrinti, kad galėsite greitai ir saugiai kopijuoti svarbius failus iš nuotolinio serverio į vietinę sistemą.

Šiame vadove paaiškinsime, kaip nukopijuoti nuotolinį aplanką pavadinimu „foo“ į vietinį katalogą /home/user/Desktop. Nesvarbu, ar tvarkote atsargines kopijas, diegiate kodą ar tiesiog norite perkelti failus, supratę SCP komandas užduotys bus lengvesnės ir efektyvesnės.

komandą apibūdinimas
scp -r Saugiai nukopijuokite visą katalogą iš nuotolinio į vietinį kompiuterį.
paramiko.SFTPClient.from_transport() Sukuria SFTP klientą iš esamo SSH transportavimo.
os.makedirs() Rekursyviai sukuria katalogą, užtikrinant, kad būtų sukurti visi vidutinio lygio katalogai.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Automatiškai prideda serverio pagrindinį raktą be raginimo, naudinga kuriant scenarijus.
scp.listdir_attr() Išvardija failų atributus kataloge, įgalindama rekursinio kopijavimo funkciją.
paramiko.S_ISDIR() Patikrina, ar nurodytas kelias yra katalogas, padedantis rekursyviai kopijuoti.
scp.get() Nukopijuoja failą iš nuotolinio serverio į vietinį kompiuterį.

Išsamus SCP scenarijų paaiškinimas

Pirmasis scenarijaus pavyzdys parodo, kaip naudojamas scp -r komanda nukopijuoti nuotolinį katalogą į vietinį kompiuterį. The scp komanda, kuri reiškia saugaus kopijavimo protokolą, yra komandų eilutės įrankis, kuris naudoja SSH saugiam failų perkėlimui tarp nuotolinio pagrindinio kompiuterio ir vietinio kompiuterio. The -r vėliavėlė komandoje nurodo, kad operacija turi būti rekursinė, tai reiškia, kad ji nukopijuos visus failus ir katalogus nurodytame kataloge. Komandų struktūra yra paprasta: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Čia user@remote_host nurodo nuotolinį vartotoją ir pagrindinį kompiuterį, ir /path/to/remote/folder ir /home/user/Desktop/ yra atitinkamai šaltinio ir paskirties keliai.

Antrasis pavyzdys yra apvalkalo scenarijus, kuris automatizuoja SCP procesą. Šis scenarijus apibrėžia nuotolinio vartotojo, pagrindinio kompiuterio ir kelių kintamuosius, todėl jį lengva pakartotinai naudoti ir modifikuoti. Scenarijus naudoja scp -r „Bash“ scenarijuje, kad galėtumėte perkelti failus, o tai padeda scenarijuose, kai reikia pakartotinai perkelti. Jame taip pat yra pranešimo žinutė, informuojanti vartotoją, kai perkėlimas baigtas. Trečiame pavyzdyje naudojamas Python su Paramiko biblioteka, kuri ypač naudinga sudėtingesnėms arba automatizuotoms darbo eigoms. Scenarijus nustato SSH klientą ir naudoja paramiko.SFTPClient.from_transport() būdas sukurti SFTP seansą. Tada ji apibrėžia funkciją rekursyviai kopijuoti failus iš nuotolinio serverio į vietinį katalogą naudojant scp.listdir_attr() ir paramiko.S_ISDIR() norėdami atskirti failus ir katalogus. Šis metodas yra naudingas tiems, kurie renkasi scenarijus Python ir turi integruoti failų perdavimo funkciją į didesnius automatizavimo scenarijus.

SCP naudojimas failams perkelti iš nuotolinio serverio į vietinį įrenginį

Shell scenarijus, skirtas SCP

# 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 perdavimo automatizavimas naudojant apvalkalo scenarijų

Shell scenarijus, skirtas automatizuoti SCP

#!/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 scenarijus, skirtas SCP failų perkėlimui

Python scenarijus naudojant Paramiko biblioteką

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}")

Išplėstinis SCP naudojimas: patarimai ir gudrybės

Be pagrindinio naudojimo scp Norėdami kopijuoti failus ir katalogus, yra keletas pažangių metodų ir parinkčių, kurios gali pagerinti failų perdavimo patirtį. Viena naudinga funkcija yra galimybė apriboti perdavimo metu naudojamą pralaidumą, o tai gali būti ypač naudinga dirbant su ribotais tinklo ištekliais. Tai galima pasiekti naudojant -l parinktis, po kurios nurodomas pralaidumo limitas kilobitais per sekundę, pavyzdžiui, scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. Kitas naudingas pasirinkimas yra -C vėliavėlė, kuri leidžia suspausti, o tai gali pagreitinti didelių failų perdavimą.

Saugumas yra dar vienas svarbus aspektas, į kurį reikia atsižvelgti naudojant scp. Nors scp iš esmės naudoja SSH saugiam perkėlimui, yra papildomų veiksmų, kurių galite imtis, kad padidintumėte saugumą. Pavyzdžiui, SSH raktų naudojimas autentifikavimui vietoj slaptažodžių gali žymiai pagerinti saugumą ir patogumą. Be to, galite nurodyti kitą SSH prievadą naudodami -P parinktis, jei jūsų serveris nenaudoja numatytojo 22 prievado. Pavyzdžiui, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ leidžia prisijungti prie serverio, kuriame veikia SSH 2222 prievade.

Dažniausiai užduodami klausimai ir atsakymai apie SCP

  1. Kaip nukopijuoti failą iš vietinio į nuotolinį naudojant SCP?
  2. Tu gali naudoti scp local_file user@remote_host:/path/to/remote/directory.
  3. Kaip galiu patikrinti SCP perdavimo eigą?
  4. Naudoti -v galimybė įjungti daugiažodį režimą: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Ar galiu išsaugoti failo atributus naudojant SCP?
  6. Taip, naudokite -p galimybė išsaugoti modifikavimo laiką, prieigos laiką ir režimus: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Kaip naudoti SCP su kitu SSH raktu?
  8. Nurodykite SSH raktą naudodami -i variantas: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Kaip tvarkyti didelius failų perkėlimus naudojant SCP?
  10. Naudoti -C galimybė suspausti ir -l galimybė apriboti pralaidumą: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Kaip perkelti failus naudojant SCP per kitą SSH prievadą?
  12. Naudoti -P galimybė nurodyti prievadą: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Ar SCP gali tvarkyti simbolines nuorodas?
  14. Taip, -r parinktis nukopijuos simbolines nuorodas, taip pat failus ir katalogus.
  15. Kas atsitiks, jei SCP perdavimas nutrūksta?
  16. Iš naujo paleiskite scp komanda atnaujinti perdavimą; jis praleis failus, kurie jau buvo nukopijuoti.
  17. Kaip scenarijuje naudoti SCP su slaptažodžiu?
  18. Vietoj to rekomenduojama naudoti SSH raktus, tačiau galite naudoti tokius įrankius kaip sshpass slaptažodžio autentifikavimui scenarijuose.

Paskutinės mintys apie SCP naudojimą

Supratimas, kaip naudoti SCP failams ir katalogams perkelti iš nuotolinio serverio į vietinį įrenginį, gali labai padidinti darbo eigos efektyvumą. Įvaldę pagrindines komandas ir pažangias technologijas, galite užtikrinti saugų ir efektyvų duomenų perdavimą. Nesvarbu, ar kopijuojate pavienius failus ar ištisus katalogus, automatizuojate užduotis naudodami scenarijus, ar naudojate Python sudėtingesnėms operacijoms, SCP išlieka universalus ir galingas įrankis jūsų duomenų valdymo poreikiams tenkinti.