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

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 scp -r komandu, lai kopētu attālo direktoriju uz vietējo mašīnu. The scp 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 -r 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, user@remote_host norāda attālo lietotāju un resursdatoru, un /path/to/remote/folder un /home/user/Desktop/ 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 scp -r 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 paramiko.SFTPClient.from_transport() 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 scp.listdir_attr() 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 scp 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 -l opcija, kam seko joslas platuma ierobežojums kilobitos sekundē, piemēram, scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. 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 scp. Kamēr scp 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 -P 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.

Bieži uzdotie jautājumi un atbildes par SCP

  1. Kā kopēt failu no lokālā uz attālo, izmantojot SCP?
  2. Tu vari izmantot scp local_file user@remote_host:/path/to/remote/directory.
  3. Kā es varu pārbaudīt SCP pārsūtīšanas gaitu?
  4. Izmantojiet -v iespēja iespējot detalizēto režīmu: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Vai es varu saglabāt faila atribūtus, izmantojot SCP?
  6. Jā, izmantojiet -p iespēja saglabāt modifikācijas laikus, piekļuves laikus un režīmus: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Kā izmantot SCP ar citu SSH atslēgu?
  8. Norādiet SSH atslēgu ar -i variants: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Kā rīkoties ar lielu failu pārsūtīšanu, izmantojot SCP?
  10. Izmantojiet -C saspiešanas iespēja un -l iespēja ierobežot joslas platumu: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Kā pārsūtīt failus, izmantojot SCP, izmantojot citu SSH portu?
  12. Izmantojiet -P iespēja norādīt portu: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. Vai SCP var apstrādāt simboliskas saites?
  14. Jā, -r 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 scp 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ā sshpass paroles autentifikācijai skriptos.

Pēdējās domas par SCP lietošanu

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.