एससीपी का उपयोग करके रिमोट से लोकल में फ़ाइलें स्थानांतरित करना

एससीपी का उपयोग करके रिमोट से लोकल में फ़ाइलें स्थानांतरित करना
Shell

फ़ाइलों को सुरक्षित रूप से कॉपी करना: एससीपी का उपयोग करने के लिए एक गाइड

सिक्योर कॉपी प्रोटोकॉल (एससीपी) रिमोट सर्वर और स्थानीय मशीन के बीच फ़ाइलों और निर्देशिकाओं को सुरक्षित रूप से स्थानांतरित करने के लिए एक शक्तिशाली उपकरण है। यदि आप अपने सर्वर तक पहुंचने के लिए अक्सर एसएसएच का उपयोग करते हैं, तो एससीपी का प्रभावी ढंग से उपयोग करने का तरीका जानना आपके वर्कफ़्लो को सुव्यवस्थित कर सकता है, यह सुनिश्चित करते हुए कि आप अपने दूरस्थ सर्वर से महत्वपूर्ण फ़ाइलों को अपने स्थानीय सिस्टम में जल्दी और सुरक्षित रूप से कॉपी कर सकते हैं।

इस गाइड में, हम आपको "foo" नाम के एक दूरस्थ फ़ोल्डर को /home/user/Desktop पर आपकी स्थानीय निर्देशिका में कॉपी करने के चरणों के बारे में बताएंगे। चाहे आप बैकअप प्रबंधित कर रहे हों, कोड तैनात कर रहे हों, या बस फ़ाइलों को स्थानांतरित करने की आवश्यकता हो, एससीपी कमांड को समझने से आपके कार्य आसान और अधिक कुशल हो जाएंगे।

आज्ञा विवरण
scp -r रिमोट से स्थानीय मशीन तक संपूर्ण निर्देशिकाओं को सुरक्षित रूप से कॉपी करता है।
paramiko.SFTPClient.from_transport() मौजूदा SSH ट्रांसपोर्ट से एक SFTP क्लाइंट बनाता है।
os.makedirs() पुनरावर्ती रूप से एक निर्देशिका बनाता है, यह सुनिश्चित करते हुए कि सभी मध्यवर्ती-स्तरीय निर्देशिकाएँ बनाई गई हैं।
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) स्क्रिप्टिंग के लिए उपयोगी, संकेत दिए बिना स्वचालित रूप से सर्वर की होस्ट कुंजी जोड़ता है।
scp.listdir_attr() पुनरावर्ती प्रतिलिपि कार्यक्षमता को सक्षम करते हुए, निर्देशिका में फ़ाइलों की विशेषताओं को सूचीबद्ध करता है।
paramiko.S_ISDIR() जाँचता है कि क्या दिया गया पथ एक निर्देशिका है, जो पुनरावर्ती प्रतिलिपि बनाने में सहायता करता है।
scp.get() किसी फ़ाइल को दूरस्थ सर्वर से स्थानीय मशीन पर कॉपी करता है।

एससीपी लिपियों की विस्तृत व्याख्या

पहला स्क्रिप्ट उदाहरण इसके उपयोग को दर्शाता है scp -r किसी दूरस्थ निर्देशिका को स्थानीय मशीन पर कॉपी करने का आदेश। scp कमांड, जो सिक्योर कॉपी प्रोटोकॉल के लिए है, एक कमांड-लाइन टूल है जो रिमोट होस्ट और स्थानीय मशीन के बीच फ़ाइलों को सुरक्षित रूप से स्थानांतरित करने के लिए एसएसएच का उपयोग करता है। -r कमांड में फ़्लैग निर्दिष्ट करता है कि ऑपरेशन पुनरावर्ती होना चाहिए, जिसका अर्थ है कि यह निर्दिष्ट निर्देशिका के भीतर सभी फ़ाइलों और निर्देशिकाओं की प्रतिलिपि बनाएगा। कमांड संरचना सीधी है: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. यहाँ, user@remote_host दूरस्थ उपयोगकर्ता और होस्ट को निर्दिष्ट करता है, और /path/to/remote/folder और /home/user/Desktop/ क्रमशः स्रोत और गंतव्य पथ हैं।

दूसरा उदाहरण एक शेल स्क्रिप्ट है जो एससीपी प्रक्रिया को स्वचालित करती है। यह स्क्रिप्ट दूरस्थ उपयोगकर्ता, होस्ट और पथों के लिए चर को परिभाषित करती है, जिससे पुन: उपयोग और संशोधन करना आसान हो जाता है। स्क्रिप्ट का उपयोग करता है scp -r फ़ाइलों को स्थानांतरित करने के लिए बैश स्क्रिप्ट के भीतर, जो उन परिदृश्यों में मदद करता है जहां बार-बार स्थानांतरण की आवश्यकता होती है। इसमें स्थानांतरण पूरा होने पर उपयोगकर्ता को सूचित करने के लिए एक अधिसूचना संदेश भी शामिल है। तीसरा उदाहरण पैरामिको लाइब्रेरी के साथ पायथन का उपयोग करता है, जो विशेष रूप से अधिक जटिल या स्वचालित वर्कफ़्लो के लिए उपयोगी है। स्क्रिप्ट एक SSH क्लाइंट सेट करती है और इसका उपयोग करती है paramiko.SFTPClient.from_transport() एसएफटीपी सत्र बनाने की विधि। इसके बाद यह दूरस्थ सर्वर से स्थानीय निर्देशिका में फ़ाइलों को पुनरावर्ती रूप से कॉपी करने के लिए एक फ़ंक्शन को परिभाषित करता है scp.listdir_attr() और paramiko.S_ISDIR() फ़ाइलों और निर्देशिकाओं के बीच अंतर करना। यह दृष्टिकोण उन लोगों के लिए फायदेमंद है जो पायथन में स्क्रिप्टिंग पसंद करते हैं और फ़ाइल स्थानांतरण कार्यक्षमता को बड़ी स्वचालन स्क्रिप्ट में एकीकृत करने की आवश्यकता है।

दूरस्थ सर्वर से स्थानीय मशीन में फ़ाइलें स्थानांतरित करने के लिए एससीपी का उपयोग करना

एससीपी के लिए शैल स्क्रिप्ट

# 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/

शेल स्क्रिप्ट के साथ एससीपी ट्रांसफर को स्वचालित करना

एससीपी को स्वचालित करने के लिए शेल स्क्रिप्ट

#!/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}"

एससीपी फ़ाइल स्थानांतरण के लिए पायथन स्क्रिप्ट

पैरामिको लाइब्रेरी का उपयोग करते हुए पायथन स्क्रिप्ट

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

उन्नत एससीपी उपयोग: युक्तियाँ और युक्तियाँ

के मूल उपयोग से परे scp फ़ाइलों और निर्देशिकाओं की प्रतिलिपि बनाने के लिए, कई उन्नत तकनीकें और विकल्प हैं जो आपके फ़ाइल स्थानांतरण अनुभव को बढ़ा सकते हैं। एक उपयोगी सुविधा स्थानांतरण के दौरान उपयोग की जाने वाली बैंडविड्थ को सीमित करने की क्षमता है, जो सीमित नेटवर्क संसाधनों के साथ काम करते समय विशेष रूप से सहायक हो सकती है। का उपयोग करके इसे प्राप्त किया जा सकता है -l उदाहरण के लिए किलोबाइट प्रति सेकंड में बैंडविड्थ सीमा के बाद विकल्प, scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. एक अन्य उपयोगी विकल्प है -C ध्वज, जो संपीड़न को सक्षम बनाता है, संभावित रूप से बड़ी फ़ाइलों के स्थानांतरण को तेज़ करता है।

उपयोग करते समय विचार करने के लिए सुरक्षा एक और महत्वपूर्ण पहलू है scp. जबकि scp सुरक्षित स्थानांतरण के लिए स्वाभाविक रूप से SSH का उपयोग करता है, सुरक्षा बढ़ाने के लिए आप अतिरिक्त कदम उठा सकते हैं। उदाहरण के लिए, पासवर्ड के बजाय प्रमाणीकरण के लिए SSH कुंजियों का उपयोग करने से सुरक्षा और सुविधा में काफी सुधार हो सकता है। इसके अतिरिक्त, आप इसका उपयोग करके एक अलग SSH पोर्ट निर्दिष्ट कर सकते हैं -P विकल्प यदि आपका सर्वर डिफ़ॉल्ट पोर्ट 22 का उपयोग नहीं करता है। उदाहरण के लिए, scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ आपको पोर्ट 2222 पर SSH चलाने वाले सर्वर से कनेक्ट करने की अनुमति देता है।

एससीपी के बारे में आम तौर पर पूछे जाने वाले प्रश्न और उत्तर

  1. मैं एससीपी का उपयोग करके किसी फ़ाइल को स्थानीय से दूरस्थ में कैसे कॉपी कर सकता हूँ?
  2. आप उपयोग कर सकते हैं scp local_file user@remote_host:/path/to/remote/directory.
  3. मैं एससीपी हस्तांतरण की प्रगति की जांच कैसे कर सकता हूं?
  4. उपयोग -v वर्बोज़ मोड सक्षम करने का विकल्प: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. क्या मैं एससीपी का उपयोग करते समय फ़ाइल विशेषताओं को संरक्षित कर सकता हूँ?
  6. हाँ, उपयोग करें -p संशोधन समय, पहुंच समय और मोड को संरक्षित करने का विकल्प: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. मैं भिन्न SSH कुंजी के साथ SCP का उपयोग कैसे करूँ?
  8. के साथ SSH कुंजी निर्दिष्ट करें -i विकल्प: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. मैं एससीपी के साथ बड़ी फ़ाइल स्थानांतरण कैसे संभाल सकता हूँ?
  10. उपयोग -C संपीड़न के लिए विकल्प और -l बैंडविड्थ सीमित करने का विकल्प: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. मैं किसी भिन्न SSH पोर्ट के माध्यम से SCP का उपयोग करके फ़ाइलें कैसे स्थानांतरित करूं?
  12. उपयोग -P पोर्ट निर्दिष्ट करने का विकल्प: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. क्या एससीपी प्रतीकात्मक लिंक संभाल सकता है?
  14. हां -r विकल्प प्रतीकात्मक लिंक के साथ-साथ फ़ाइलों और निर्देशिकाओं की भी प्रतिलिपि बनाएगा।
  15. यदि एससीपी स्थानांतरण बाधित हो जाए तो क्या होगा?
  16. पुनः चलाएँ scp स्थानांतरण फिर से शुरू करने का आदेश; यह उन फ़ाइलों को छोड़ देगा जो पहले से ही कॉपी की गई थीं।
  17. मैं किसी स्क्रिप्ट में पासवर्ड के साथ एससीपी का उपयोग कैसे करूँ?
  18. इसके बजाय SSH कुंजियों का उपयोग करने की अनुशंसा की जाती है, लेकिन आप जैसे टूल का उपयोग कर सकते हैं sshpass स्क्रिप्ट में पासवर्ड प्रमाणीकरण के लिए.

एससीपी उपयोग पर अंतिम विचार

किसी दूरस्थ सर्वर से स्थानीय मशीन पर फ़ाइलों और निर्देशिकाओं को स्थानांतरित करने के लिए एससीपी का उपयोग करने का तरीका समझना आपके वर्कफ़्लो दक्षता को काफी बढ़ा सकता है। बुनियादी आदेशों और उन्नत तकनीकों दोनों में महारत हासिल करके, आप सुरक्षित और कुशल डेटा स्थानांतरण सुनिश्चित कर सकते हैं। चाहे आप एकल फ़ाइलों या संपूर्ण निर्देशिकाओं की प्रतिलिपि बना रहे हों, स्क्रिप्ट के साथ कार्यों को स्वचालित कर रहे हों, या अधिक जटिल संचालन के लिए पायथन का उपयोग कर रहे हों, एससीपी आपकी डेटा प्रबंधन आवश्यकताओं के लिए एक बहुमुखी और शक्तिशाली उपकरण बना हुआ है।