Prenos datotek z oddaljenega na lokalni z uporabo SCP

Prenos datotek z oddaljenega na lokalni z uporabo SCP
Shell

Varno kopiranje datotek: vodnik za uporabo SCP

Protokol varnega kopiranja (SCP) je zmogljivo orodje za varen prenos datotek in imenikov med oddaljenim strežnikom in lokalnim računalnikom. Če za dostop do svojega strežnika pogosto uporabljate SSH, lahko znanje o učinkoviti uporabi SCP poenostavi vaš potek dela in zagotovi, da lahko hitro in varno kopirate pomembne datoteke iz oddaljenega strežnika v lokalni sistem.

V tem priročniku vas bomo vodili skozi korake za kopiranje oddaljene mape z imenom "foo" v vaš lokalni imenik na /home/user/Desktop. Ne glede na to, ali upravljate varnostne kopije, uvajate kodo ali morate samo premakniti datoteke, bodo z razumevanjem ukazov SCP vaša opravila lažja in učinkovitejša.

Ukaz Opis
scp -r Varno kopirajte celoten imenik z oddaljenega na lokalni računalnik.
paramiko.SFTPClient.from_transport() Ustvari odjemalca SFTP iz obstoječega transporta SSH.
os.makedirs() Ustvari imenik rekurzivno, s čimer zagotovi, da so ustvarjeni vsi imeniki na vmesni ravni.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Samodejno doda ključ gostitelja strežnika brez poziva, kar je uporabno za skriptiranje.
scp.listdir_attr() Navede atribute datotek v imeniku, kar omogoča funkcijo rekurzivnega kopiranja.
paramiko.S_ISDIR() Preveri, ali je podana pot imenik, kar pomaga pri rekurzivnem kopiranju.
scp.get() Kopira datoteko z oddaljenega strežnika na lokalni računalnik.

Podrobna razlaga skriptov SCP

Prvi primer skripta prikazuje uporabo scp -r ukaz za kopiranje oddaljenega imenika na lokalni računalnik. The scp ukaz, ki pomeni protokol varnega kopiranja, je orodje ukazne vrstice, ki uporablja SSH za varen prenos datotek med oddaljenim gostiteljem in lokalnim računalnikom. The -r zastavica v ukazu določa, da mora biti operacija rekurzivna, kar pomeni, da bo kopirala vse datoteke in imenike v navedenem imeniku. Struktura ukazov je preprosta: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. tukaj, user@remote_host določa oddaljenega uporabnika in gostitelja ter /path/to/remote/folder in /home/user/Desktop/ sta izvorna in ciljna pot.

Drugi primer je lupinski skript, ki avtomatizira proces SCP. Ta skript definira spremenljivke za oddaljenega uporabnika, gostitelja in poti, kar olajša ponovno uporabo in spreminjanje. Skript uporablja scp -r znotraj skripta Bash za prenos datotek, kar pomaga v scenarijih, kjer so potrebni ponavljajoči se prenosi. Vključuje tudi obvestilo, ki uporabnika obvesti, ko je prenos končan. Tretji primer uporablja Python s knjižnico Paramiko, ki je še posebej uporabna za bolj zapletene ali avtomatizirane poteke dela. Skript nastavi odjemalca SSH in uporablja paramiko.SFTPClient.from_transport() način za ustvarjanje seje SFTP. Nato definira funkcijo za rekurzivno kopiranje datotek z oddaljenega strežnika v lokalni imenik z uporabo scp.listdir_attr() in paramiko.S_ISDIR() za razlikovanje med datotekami in imeniki. Ta pristop je koristen za tiste, ki raje skriptirajo v Pythonu in morajo funkcijo prenosa datotek integrirati v večje skripte za avtomatizacijo.

Uporaba SCP za prenos datotek z oddaljenega strežnika na lokalni računalnik

Lupinski skript za 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/

Avtomatizacija prenosa SCP s skriptom lupine

Lupinski skript za avtomatizacijo 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}"

Skript Python za prenos datotek SCP

Python skript z uporabo knjižnice Paramiko

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

Napredna uporaba SCP: nasveti in triki

Poleg osnovne uporabe scp za kopiranje datotek in imenikov obstaja več naprednih tehnik in možnosti, ki lahko izboljšajo vašo izkušnjo prenosa datotek. Ena uporabna funkcija je možnost omejitve pasovne širine, uporabljene med prenosom, kar je lahko še posebej koristno pri delu z omejenimi omrežnimi viri. To je mogoče doseči z uporabo -l možnost, ki ji sledi omejitev pasovne širine v kilobitih na sekundo, na primer scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. Druga uporabna možnost je -C zastavico, ki omogoča stiskanje in potencialno pospeši prenos velikih datotek.

Varnost je še en pomemben vidik, ki ga je treba upoštevati pri uporabi scp. Medtem scp sam po sebi uporablja SSH za varne prenose, obstajajo dodatni koraki, ki jih lahko naredite za izboljšanje varnosti. Na primer, uporaba ključev SSH za preverjanje pristnosti namesto gesel lahko znatno izboljša varnost in priročnost. Poleg tega lahko določite druga vrata SSH z uporabo -P možnost, če vaš strežnik ne uporablja privzetih vrat 22. Na primer, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ omogoča povezavo s strežnikom, ki izvaja SSH na vratih 2222.

Pogosta vprašanja in odgovori o SCP

  1. Kako kopiram datoteko z lokalnega na oddaljenega z uporabo SCP?
  2. Lahko uporabiš scp local_file user@remote_host:/path/to/remote/directory.
  3. Kako lahko preverim napredek prenosa SCP?
  4. Uporabi -v možnost za omogočanje podrobnega načina: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Ali lahko med uporabo SCP ohranim atribute datoteke?
  6. Da, uporabite -p možnost za ohranitev časov spreminjanja, časov dostopa in načinov: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Kako uporabim SCP z drugim ključem SSH?
  8. Določite ključ SSH z -i možnost: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Kako upravljam velike prenose datotek s SCP?
  10. Uporabi -C možnost stiskanja in -l možnost omejitve pasovne širine: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Kako prenesem datoteke z uporabo SCP prek drugih vrat SSH?
  12. Uporabi -P možnost za določitev vrat: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Ali lahko SCP obravnava simbolne povezave?
  14. Da, -r možnost kopira simbolične povezave ter datoteke in imenike.
  15. Kaj se zgodi, če je prenos SCP prekinjen?
  16. Znova zaženite scp ukaz za nadaljevanje prenosa; preskočil bo datoteke, ki so že bile kopirane.
  17. Kako uporabim SCP z geslom v skriptu?
  18. Priporočljivo je, da namesto tega uporabite ključe SSH, vendar lahko uporabite orodja, kot je sshpass za preverjanje pristnosti gesla v skriptih.

Končne misli o uporabi SCP

Razumevanje, kako uporabljati SCP za prenos datotek in imenikov z oddaljenega strežnika na lokalni stroj, lahko močno poveča vašo učinkovitost poteka dela. Z obvladovanjem osnovnih ukazov in naprednih tehnik lahko zagotovite varen in učinkovit prenos podatkov. Ne glede na to, ali kopirate posamezne datoteke ali celotne imenike, avtomatizirate opravila s skripti ali uporabljate Python za bolj zapletene operacije, SCP ostaja vsestransko in zmogljivo orodje za vaše potrebe upravljanja podatkov.