Failu pārsūtīšana no attālās uz lokālo, izmantojot SCP

Shell

Droša failu kopēšana: SCP lietošanas ceļvedis

Secure Copy Protocol (SCP) ir spēcīgs rīks drošai failu un direktoriju pārsūtīšanai starp attālo serveri un vietējo iekārtu. Ja bieži izmantojat SSH, lai piekļūtu savam serverim, zinot, kā efektīvi izmantot SCP, var racionalizēt jūsu darbplūsmu, nodrošinot, ka varat ātri un droši kopēt svarīgus failus no attālā servera uz vietējo sistēmu.

Šajā rokasgrāmatā mēs sniegsim jums norādījumus, kā kopēt attālo mapi ar nosaukumu "foo" uz vietējo direktoriju vietnē /home/user/Desktop. Neatkarīgi no tā, vai pārvaldāt dublējumus, izvietojat kodu vai vienkārši jāpārvieto faili, SCP komandu izpratne padarīs jūsu uzdevumus vieglākus un efektīvākus.

Komanda Apraksts
scp -r Droši kopē visus direktorijus no attālās uz vietējo mašīnu.
paramiko.SFTPClient.from_transport() Izveido SFTP klientu no esoša SSH transporta.
os.makedirs() Rekursīvi izveido direktoriju, nodrošinot visu vidēja līmeņa direktoriju izveidi.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Automātiski bez uzvednes pievieno servera resursdatora atslēgu, kas ir noderīga skriptēšanai.
scp.listdir_attr() Uzskaita direktorijā esošo failu atribūtus, nodrošinot rekursīvās kopēšanas funkcionalitāti.
paramiko.S_ISDIR() Pārbauda, ​​vai dotais ceļš ir direktorijs, palīdzot rekursīvai kopēšanai.
scp.get() Kopē failu no attālā servera uz vietējo mašīnu.

Detalizēts SCP skriptu skaidrojums

Pirmais skripta piemērs parāda komandu, lai kopētu attālo direktoriju uz vietējo mašīnu. The komanda, kas apzīmē Secure Copy Protocol, ir komandrindas rīks, kas izmanto SSH, lai droši pārsūtītu failus starp attālo resursdatoru un vietējo mašīnu. The karogs komandā norāda, ka darbībai jābūt rekursīvai, kas nozīmē, ka tā kopēs visus failus un direktorijus norādītajā direktorijā. Komandu struktūra ir vienkārša: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Šeit, norāda attālo lietotāju un resursdatoru, un un ir attiecīgi avota un galamērķa ceļi.

Otrais piemērs ir čaulas skripts, kas automatizē SCP procesu. Šis skripts definē mainīgos lielumus attālajam lietotājam, resursdatoram un ceļiem, padarot to viegli atkārtoti lietojamu un modificējamu. Skripts izmanto Bash skriptā, lai pārsūtītu failus, kas palīdz gadījumos, kad ir nepieciešama atkārtota pārsūtīšana. Tas ietver arī paziņojuma ziņojumu, lai informētu lietotāju, kad pārsūtīšana ir pabeigta. Trešajā piemērā tiek izmantots Python ar Paramiko bibliotēku, kas ir īpaši noderīga sarežģītākām vai automatizētākām darbplūsmām. Skripts iestata SSH klientu un izmanto metode, lai izveidotu SFTP sesiju. Pēc tam tā definē funkciju failu rekursīvai kopēšanai no attālā servera uz vietējo direktoriju, izmantojot un paramiko.S_ISDIR() lai atšķirtu failus un direktorijus. Šī pieeja ir noderīga tiem, kas dod priekšroku skriptiem Python un kuriem ir jāintegrē failu pārsūtīšanas funkcionalitāte lielākos automatizācijas skriptos.

SCP izmantošana, lai pārsūtītu failus no attālā servera uz vietējo mašīnu

Shell skripts 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 pārsūtīšanas automatizācija, izmantojot čaulas skriptu

Shell skripts SCP automatizēšanai

#!/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 skripts SCP failu pārsūtīšanai

Python skripts, izmantojot Paramiko bibliotēku

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

Uzlabota SCP lietošana: padomi un ieteikumi

Papildus pamata lietojumam failu un direktoriju kopēšanai ir vairākas uzlabotas metodes un opcijas, kas var uzlabot failu pārsūtīšanas pieredzi. Viena noderīga funkcija ir iespēja ierobežot pārsūtīšanas laikā izmantoto joslas platumu, kas var būt īpaši noderīga, strādājot ar ierobežotiem tīkla resursiem. To var panākt, izmantojot opcija, kam seko joslas platuma ierobežojums kilobitos sekundē, piemēram, . Vēl viena noderīga iespēja ir -C karodziņš, kas nodrošina saspiešanu, potenciāli paātrinot lielu failu pārsūtīšanu.

Drošība ir vēl viens svarīgs aspekts, kas jāņem vērā, lietojot . Kamēr pēc savas būtības drošiem pārsūtījumiem izmanto SSH, ir papildu darbības, kuras varat veikt, lai uzlabotu drošību. Piemēram, izmantojot SSH atslēgas autentifikācijai paroļu vietā, var ievērojami uzlabot drošību un ērtības. Turklāt varat norādīt citu SSH portu, izmantojot opciju, ja jūsu serveris neizmanto noklusējuma portu 22. Piemēram, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ ļauj izveidot savienojumu ar serveri, kurā darbojas SSH portā 2222.

  1. Kā kopēt failu no lokālā uz attālo, izmantojot SCP?
  2. Tu vari izmantot .
  3. Kā es varu pārbaudīt SCP pārsūtīšanas gaitu?
  4. Izmantojiet iespēja iespējot detalizēto režīmu: .
  5. Vai es varu saglabāt faila atribūtus, izmantojot SCP?
  6. Jā, izmantojiet iespēja saglabāt modifikācijas laikus, piekļuves laikus un režīmus: .
  7. Kā izmantot SCP ar citu SSH atslēgu?
  8. Norādiet SSH atslēgu ar variants: .
  9. Kā rīkoties ar lielu failu pārsūtīšanu, izmantojot SCP?
  10. Izmantojiet saspiešanas iespēja un iespēja ierobežot joslas platumu: .
  11. Kā pārsūtīt failus, izmantojot SCP, izmantojot citu SSH portu?
  12. Izmantojiet iespēja norādīt portu: .
  13. Vai SCP var apstrādāt simboliskas saites?
  14. Jā, opcija kopēs simboliskas saites, kā arī failus un direktorijus.
  15. Kas notiek, ja tiek pārtraukta SCP pārsūtīšana?
  16. Atkārtoti palaidiet komanda, lai atsāktu pārsūtīšanu; tas izlaidīs failus, kas jau ir nokopēti.
  17. Kā skriptā izmantot SCP ar paroli?
  18. Tā vietā ieteicams izmantot SSH atslēgas, taču varat izmantot tādus rīkus kā paroles autentifikācijai skriptos.

Izpratne par to, kā izmantot SCP failu un direktoriju pārsūtīšanai no attālā servera uz vietējo iekārtu, var ievērojami uzlabot darbplūsmas efektivitāti. Apgūstot gan pamata komandas, gan uzlabotas metodes, jūs varat nodrošināt drošu un efektīvu datu pārsūtīšanu. Neatkarīgi no tā, vai kopējat atsevišķus failus vai veselus direktorijus, automatizējat uzdevumus ar skriptiem vai izmantojat Python sarežģītākām darbībām, SCP joprojām ir daudzpusīgs un jaudīgs rīks jūsu datu pārvaldības vajadzībām.