नेटवर्क पर फ़ाइलें ट्रांसफर करने की आवश्यकता अक्सर उत्पन्न होती है। GNU/Linux सिस्टम ऐसा करने के लिए कई प्रोटोकॉल और टूल्स का समर्थन करते हैं, जिनमें से कुछ स्थायी फ़ाइल शेयरिंग के लिए डिज़ाइन किए गए हैं (जैसे SMB, AFP, और NFS), जबकि अन्य जैसे सिक्योर कॉपी (SCP) का उपयोग त्वरित मैन्युअल और स्क्रिप्टेड फ़ाइल ट्रांसफर के लिए किया जाता है। इनमें हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) शामिल है, वह बहुमुखी और सर्वव्यापी प्रोटोकॉल जिस पर वर्ल्ड वाइड वेब निर्भर करता है।
पायथन (Python), जो अधिकांश लिनक्स डिस्ट्रीब्यूशन में डिफ़ॉल्ट रूप से शामिल है, "SimpleHTTPServer" और "http.server" मॉड्यूल के माध्यम से सरल HTTP सर्वर प्रदान करता है। पूर्व पायथन 2 स्टैंडर्ड लाइब्रेरी में पाया जाता है, जबकि बाद वाला पायथन 3 में शामिल है। इन हल्के HTTP सर्वरों को अलग इंस्टॉलेशन की आवश्यकता नहीं होती है और एक ही कमांड से तुरंत शुरू किया जा सकता है।
पायथन इंस्टॉल करना
आपके सिस्टम में सबसे अधिक संभावना है कि कम से कम एक पायथन संस्करण शामिल हो, लेकिन यदि ऐसा नहीं है, तो अपने नेटिव पैकेज मैनेजर का उपयोग करके पायथन 3 इंस्टॉल करें।
उदाहरण के लिए, डेबियन और उबंटू पर:
sudo apt update sudo apt install -y python3
HTTP सर्वर शुरू करना
भेजने वाली मशीन द्वारा उपयोग किए जाने वाले IP एड्रेस को नोट करें।
ip a s

निम्न कमांड से पता करें कि कौन सा पायथन संस्करण इंस्टॉल है:
python --version python3 --version
उसी मशीन पर, अपनी वर्किंग डायरेक्टरी को उसमें बदलें जिसमें आप ट्रांसफर की जाने वाली फ़ाइलें हैं। इस तथ्य से अवगत रहें कि जब पायथन HTTP सर्वर चल रहा हो, तो आपकी वर्तमान वर्किंग डायरेक्टरी की पूरी सामग्री आपके नेटवर्क पर किसी के लिए भी (या इंटरनेट पर यदि भेजने वाली मशीन का पब्लिक IP एड्रेस है) एक्सेसिबल हो सकती है।
cd /path/to/files/
उदाहरण के लिए:
cd /home/user/Documents/
अब आप HTTP सर्वर शुरू कर सकते हैं। पायथन 2.x के लिए, SimpleHTTPServer मॉड्यूल का उपयोग करें:
python -m SimpleHTTPServer
या पायथन 3.x के मामले में http.server:
python3 -m http.server
दोनों विविधताएं डिफ़ॉल्ट रूप से पोर्ट 8000 पर सुनती हैं, हालांकि आप मॉड्यूल नाम के बाद स्पष्ट रूप से एक अलग पोर्ट नंबर निर्दिष्ट कर सकते हैं।
python -m SimpleHTTPServer [port] python3 -m http.server [port]
नोट: यदि आप 1024 से कम पोर्ट चुनते हैं तो रूट विशेषाधिकार आवश्यक हैं।
अपनी फ़ाइलें डाउनलोड करना
प्राप्त करने वाली मशीन पर, आप अपनी फ़ाइलें डाउनलोड करने के लिए किसी भी HTTP क्लाइंट का उपयोग कर सकते हैं। यदि आप ग्राफिकल वातावरण का उपयोग कर रहे हैं, तो ब्राउज़र अक्सर कमांड लाइन यूटिलिटीज़ की तुलना में अधिक सुविधाजनक होता है। बस https://IP_ADDRESS:8000 पर ब्राउज़ करें, जहां "IP_ADDRESS" भेजने वाले कंप्यूटर का IP एड्रेस है, और डाउनलोड करने के लिए वांछित फ़ाइलों पर क्लिक करें।

वैकल्पिक रूप से, आप अपनी फ़ाइलें लाने के लिए Wget या cURL का उपयोग कर सकते हैं। आपके पास उनमें से एक या दोनों पहले से इंस्टॉल होने चाहिए। यदि कोई भी नहीं है, तो हम Wget इंस्टॉल करने का सुझाव देते हैं, क्योंकि यह अधिक उपयोगकर्ता के अनुकूल है और संपूर्ण डायरेक्टरीज़ डाउनलोड करने का समर्थन करता है।
डेबियन और उबंटू के लिए:
sudo apt install wget
RHEL और CentOS 6/7 के लिए:
sudo yum install wget
फेडोरा और RHEL/CentOS 8 के लिए:
sudo dnf install wget
Wget का उपयोग करना
Wget के साथ एक फ़ाइल डाउनलोड करने के लिए, बस Wget को उस फ़ाइल के URL के साथ चलाएं जिसे आप डाउनलोड करना चाहते हैं।
wget https://IP_ADDRESS:8000/filename

आप कमांड-लाइन फ्लैग -r जोड़कर Wget का उपयोग संपूर्ण डायरेक्टरी को रिकर्सिवली डाउनलोड करने के लिए भी कर सकते हैं।
wget -r https://IP_ADDRESS:8000/

cURL का उपयोग करना
डिफ़ॉल्ट रूप से, curl फ़ाइल सामग्री को आपके टर्मिनल पर प्रिंट करने का प्रयास करता है। इसलिए फ़ाइल को सेव करने के लिए, -o फ्लैग के साथ एक फ़ाइलनाम निर्दिष्ट करें।
curl https://IP_ADDRESS:8000/filename -o filename

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