ความจำเป็นในการถ่ายโอนไฟล์ผ่านเครือข่ายเป็นสิ่งที่เกิดขึ้นบ่อยครั้ง ระบบ GNU/Linux รองรับโปรโตคอลและเครื่องมือหลายตัวสำหรับการทำเช่นนั้น ซึ่งบางระบบได้รับการออกแบบมาเพื่อการแชร์ไฟล์ที่ค่อนข้างถาวร (เช่น SMB, AFP และ NFS) ในขณะที่ระบบอื่นๆ เช่น Secure Copy (SCP) ใช้สำหรับคู่มือและสคริปต์อย่างรวดเร็ว การถ่ายโอนไฟล์ กลุ่มเหล่านี้คือ HyperText Transfer Protocol (HTTP) ซึ่งเป็นโปรโตคอลที่หลากหลายและแพร่หลายซึ่งเวิลด์ไวด์เว็บใช้
Python ซึ่งรวมอยู่โดยค่าเริ่มต้นในลีนุกซ์ส่วนใหญ่ มีเซิร์ฟเวอร์ HTTP อย่างง่ายผ่านโมดูล “SimpleHTTPServer” และ “http.server” อดีตมีอยู่ในไลบรารีมาตรฐาน Python 2 ในขณะที่เซิร์ฟเวอร์หลังรวมอยู่ใน Python 3 เซิร์ฟเวอร์ HTTP น้ำหนักเบาเหล่านี้ไม่จำเป็นต้องติดตั้งแยกต่างหาก และสามารถเริ่มต้นได้ทันทีด้วยคำสั่งเดียว
การติดตั้ง Python
ระบบของคุณน่าจะมีเวอร์ชัน Python อย่างน้อยหนึ่งเวอร์ชัน แต่ถ้าไม่ใช่ ให้ติดตั้ง Python 3 โดยใช้ตัวจัดการแพ็คเกจดั้งเดิมของคุณ
ตัวอย่างเช่น บน Debian และ Ubuntu:
sudo apt update sudo apt install -y python3
การเริ่มต้นเซิร์ฟเวอร์ HTTP
จดที่อยู่ IP ที่เครื่องส่งใช้
ip a s
ค้นหาว่า Python เวอร์ชันใดติดตั้งด้วยคำสั่งต่อไปนี้:
python --version python3 --version
ในเครื่องเดียวกัน ให้เปลี่ยนไดเร็กทอรีการทำงานของคุณเป็นไดเร็กทอรีที่มีไฟล์ที่คุณกำลังถ่ายโอน โปรดทราบว่าเนื้อหาทั้งหมดในไดเรกทอรีการทำงานปัจจุบันของคุณอาจเข้าถึงได้โดยทุกคนในเครือข่ายของคุณ (หรืออินเทอร์เน็ตหากเครื่องส่งมีที่อยู่ IP สาธารณะ) ในขณะที่เซิร์ฟเวอร์ Python HTTP กำลังทำงานอยู่
cd /path/to/files/
ตัวอย่างเช่น:
cd /home/user/Documents/
ตอนนี้คุณสามารถเริ่มเซิร์ฟเวอร์ HTTP ได้แล้ว สำหรับ Python 2.x ให้ใช้โมดูล SimpleHTTPServer:
python -m SimpleHTTPServer
หรือ http.server ในกรณีของ Python 3.x:
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 เนื่องจากเป็นมิตรกับผู้ใช้มากกว่าและรองรับการดาวน์โหลดทั้งไดเรกทอรี
สำหรับ Debian และ Ubuntu:
sudo apt install wget
สำหรับ RHEL และ CentOS 6/7:
sudo yum install wget
สำหรับ Fedora และ RHEL/CentOS 8:
sudo dnf install wget
การใช้งาน Wget
หากต้องการดาวน์โหลดไฟล์เดียวด้วย Wget เพียงเรียกใช้ Wget ตามด้วย URL ของไฟล์ที่คุณต้องการดาวน์โหลด
wget https://IP_ADDRESS:8000/filename
คุณยังสามารถใช้ Wget เพื่อดาวน์โหลดทั้งไดเร็กทอรีซ้ำๆ โดยเพิ่ม -r
แฟล็กบรรทัดคำสั่ง
wget -r https://IP_ADDRESS:8000/
การใช้ cURL
ตามค่าเริ่มต้น curl จะพยายามพิมพ์เนื้อหาไฟล์ไปยังเทอร์มินัลของคุณ ดังนั้นหากต้องการบันทึกไฟล์แทน ให้ระบุชื่อไฟล์ด้วย -o
ธง.
curl https://IP_ADDRESS:8000/filename -o filename
บทสรุป
ฟังก์ชัน HTTP ในไลบรารีมาตรฐานของ Python มอบวิธีการถ่ายโอนไฟล์ขั้นพื้นฐาน แต่รวดเร็วและสะดวก เหมาะสำหรับบางสถานการณ์ แต่โปรดทราบว่าเนื่องจากเป็น HTTP ธรรมดาที่ไม่มีการเข้ารหัสหรือการตรวจสอบสิทธิ์ คุณจึงควรระมัดระวังที่จะไม่เปิดเผยไฟล์ที่ละเอียดอ่อน