ความจำเป็นในการถ่ายโอนไฟล์ผ่านเครือข่ายเป็นสิ่งที่เกิดขึ้นบ่อย ระบบ GNU/Linux รองรับโปรโตคอลและเครื่องมือหลายอย่างสำหรับการทำเช่นนั้น บางอย่างถูกออกแบบสำหรับการแชร์ไฟล์ที่ค่อนข้างถาวร (เช่น SMB, AFP และ NFS) ในขณะที่บางอย่าง เช่น Secure Copy (SCP) ใช้สำหรับการถ่ายโอนไฟล์ด้วยตนเองและสคริปต์ที่รวดเร็ว ระหว่างนั้นคือ HyperText Transfer Protocol (HTTP) โปรโตคอลที่หลากหลายและทุกที่ซึ่ง World Wide Web พึ่งพา
Python ซึ่งรวมอยู่ใน Linux Distributions ส่วนใหญ่โดยค่าเริ่มต้น จัดเตรียม HTTP Servers เรียบง่ายผ่านโมดูล "SimpleHTTPServer" และ "http.server" โมดูลแรกพบใน Python 2 Standard Library ในขณะที่โมดูลที่สองรวมอยู่ใน Python 3 HTTP Servers เบาเหล่านี้ไม่ต้องการการติดตั้งแยกต่างหาก และสามารถเริ่มต้นได้ทันทีด้วยคำสั่งเดียว
การติดตั้ง Python
ระบบของคุณน่าจะรวม Python อย่างน้อยหนึ่งเวอร์ชัน แต่ถ้าไม่ใช่ ให้ติดตั้ง Python 3 โดยใช้ Native Package Manager ของคุณ
ตัวอย่างเช่น บน Debian และ Ubuntu:
sudo apt update sudo apt install -y python3
การเริ่มต้น HTTP Server
จดบันทึกที่อยู่ IP ที่ใช้โดยเครื่องส่ง
ip a s

ค้นหาว่า Python เวอร์ชันไหนติดตั้งอยู่ด้วยคำสั่งต่อไปนี้:
python --version python3 --version
บนเครื่องเดียวกัน เปลี่ยน Working Directory ไปยังไดเรกทอรีที่มีไฟล์ที่คุณกำลังถ่ายโอน โปรดระวังว่ารวมทั้งเนื้อหาทั้งหมดของ Working Directory ปัจจุบันของคุณอาจเข้าถึงได้โดยใครก็ตามบนเครือข่ายของคุณ (หรืออินเทอร์เน็ต หากเครื่องส่งมี Public IP Address) ขณะที่ Python HTTP Server กำลังทำงาน
cd /path/to/files/
ตัวอย่างเช่น:
cd /home/user/Documents/
ตอนนี้คุณสามารถเริ่ม HTTP Server ได้ สำหรับ Python 2.x ใช้โมดูล SimpleHTTPServer:
python -m SimpleHTTPServer
หรือ http.server ในกรณีของ Python 3.x:
python3 -m http.server
ทั้งสองรูปแบบฟังที่ Port 8000 โดยค่าเริ่มต้น แม้คุณสามารถระบุหมายเลข Port ที่แตกต่างกันได้อย่างชัดเจนหลังชื่อโมดูล
python -m SimpleHTTPServer [port] python3 -m http.server [port]
หมายเหตุ: ต้องการ Root Privileges หากคุณเลือก Port ต่ำกว่า 1024
การดาวน์โหลดไฟล์ของคุณ
บนเครื่องรับ คุณสามารถใช้ HTTP Client ใดๆ เพื่อดาวน์โหลดไฟล์ของคุณ หากคุณใช้ Graphical Environment Browser มักสะดวกกว่า Command Line Utilities เพียงแค่ Browse ไปที่ https://IP_ADDRESS:8000 โดยที่ "IP_ADDRESS" คือที่อยู่ IP ของคอมพิวเตอร์ส่ง และคลิกที่ไฟล์ที่ต้องการเพื่อดาวน์โหลด

ทางเลือกอื่น คุณสามารถใช้ Wget หรือ cURL เพื่อดึงไฟล์ของคุณ คุณควรจะมีหนึ่งหรือทั้งสองตัวติดตั้งอยู่แล้ว หากไม่มีทั้งคู่ เราแนะนำให้ติดตั้ง Wget เนื่องจากมัน User-friendly กว่าและรองรับการดาวน์โหลดทั้งโฟลเดอร์
สำหรับ 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 เพื่อดาวน์โหลดทั้งโฟลเดอร์แบบ Recursive โดยเพิ่ม Flag -r บรรทัดคำสั่ง
wget -r https://IP_ADDRESS:8000/

การใช้งาน cURL
โดยค่าเริ่มต้น curl พยายามพิมพ์เนื้อหาไฟล์ไปยังเทอร์มินัลของคุณ ดังนั้นเพื่อบันทึกไฟล์แทน ให้ระบุชื่อไฟล์ด้วย Flag -o
curl https://IP_ADDRESS:8000/filename -o filename

สรุป
ฟังก์ชัน HTTP ใน Standard Library ของ Python จัดเตรียมวิธีการถ่ายโอนไฟล์ที่พื้นฐาน แต่รวดเร็วและสะดวก เหมาะสำหรับบางสถานการณ์ แต่โปรดจำไว้ว่า เนื่องจากนี่คือ Plain HTTP ที่ไม่มีการเข้ารหัสหรือการตรวจสอบสิทธิ์ คุณควรระวังที่จะไม่เปิดเผยไฟล์ที่ละเอียดอ่อน