โอนไฟล์ระหว่างเครื่องด้วย scp และ sftp
ถ้าเข้าเซิร์ฟเวอร์ผ่าน SSH ได้ คุณโอนไฟล์ผ่านช่องทางเดียวกันได้ทันทีโดยไม่ต้องเปิด FTP เพิ่ม เครื่องมือหลักมี 2 ตัว คือ scp สำหรับคัดลอกไฟล์ในคำสั่งเดียว เหมาะกับงานที่รู้แน่ชัดว่าจะส่งไฟล์อะไรไปไหน และ sftp ซึ่งเป็นโหมดโต้ตอบคล้าย FTP ใช้เดินดูโฟลเดอร์ก่อนแล้วค่อยเลือกไฟล์ ทั้งสองเข้ารหัสข้อมูลตลอดทางและใช้ผู้ใช้ รหัสผ่าน หรือ SSH Key ชุดเดียวกับ SSH
คำสั่งในบทความนี้ใช้ได้บน Linux, macOS และ Windows 10/11 ซึ่งมี OpenSSH Client ติดตั้งมาแล้ว (เปิดผ่าน PowerShell หรือ Command Prompt) ส่วนผู้ที่ถนัดโปรแกรมแบบกราฟิก สามารถใช้ WinSCP หรือ FileZilla ที่เชื่อมต่อแบบ SFTP ได้เช่นกัน
สิ่งที่ต้องเตรียม
- ชื่อผู้ใช้ IP หรือโดเมนของเซิร์ฟเวอร์ และพอร์ต SSH (ค่าเริ่มต้นคือ 22) ในบทความใช้
[email protected]เป็นตัวอย่าง - เข้า SSH ได้สำเร็จแล้วอย่างน้อยหนึ่งครั้ง ถ้าใช้ SSH Key ดู ตั้งค่า SSH Key และปิดการเข้าสู่ระบบด้วยรหัสผ่านบน Linux
- ผู้ใช้บนเซิร์ฟเวอร์ต้องมีสิทธิ์เขียนโฟลเดอร์ปลายทาง
ขั้นตอนที่ 1: อัปโหลดไฟล์ด้วย scp
รูปแบบคือ scp ต้นทาง ปลายทาง ฝั่งที่เป็นเซิร์ฟเวอร์เขียนเป็น ผู้ใช้@โฮสต์:Path
scp backup.sql [email protected]:/home/admin/
ผลที่คาดหวังคือแถบความคืบหน้า เช่น backup.sql 100% 245MB 11.2MB/s 00:21 ถ้าไม่ระบุ Path หลังเครื่องหมาย : ไฟล์จะไปอยู่ในโฮมของผู้ใช้
อัปโหลดทั้งโฟลเดอร์ให้ใส่ -r
scp -r ./website [email protected]:/var/www/example.com/
บน Windows PowerShell ใช้ Path แบบ Windows ได้ตามปกติ เช่น
scp C:\Users\somchai\Downloads\backup.sql [email protected]:/home/admin/
ขั้นตอนที่ 2: ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์
สลับตำแหน่งต้นทางและปลายทาง จุด . หมายถึงโฟลเดอร์ปัจจุบันบนเครื่องของคุณ
scp [email protected]:/var/log/nginx/error.log .
scp -r [email protected]:/home/admin/backups ./server-backups
ถ้า Path มีช่องว่าง ให้ครอบทั้ง Path ฝั่งเซิร์ฟเวอร์ด้วยเครื่องหมายคำพูด เช่น "[email protected]:/home/admin/my files/report.pdf"
ขั้นตอนที่ 3: ระบุพอร์ตและ SSH Key
ถ้าเปลี่ยนพอร์ต SSH แล้ว (ดู วิธีเปลี่ยน SSH Port บน Linux Server) ต้องระบุพอร์ต ข้อที่คนสับสนบ่อยคือ scp ใช้ตัว -P ใหญ่ ส่วน ssh ใช้ -p เล็ก
scp -P 2222 -i ~/.ssh/id_ed25519 backup.sql [email protected]:/home/admin/
| Option ของ scp | ความหมาย |
|---|---|
-P 2222 | พอร์ต SSH ของเซิร์ฟเวอร์ |
-i ไฟล์Key | ใช้ Private Key ที่ระบุ |
-r | คัดลอกทั้งโฟลเดอร์ |
-p (เล็ก) | รักษาวันที่แก้ไขและสิทธิ์ของไฟล์ |
-C | บีบอัดระหว่างส่ง ช่วยได้กับไฟล์ข้อความ แต่ไม่ช่วยกับไฟล์ที่บีบอัดแล้ว |
-l 8192 | จำกัดความเร็วเป็น Kbit/s (ตัวอย่างนี้ประมาณ 1 MB/s) เพื่อไม่ให้แย่ง Bandwidth ของเว็บ |
ถ้าต้องพิมพ์พอร์ตและ Key ซ้ำบ่อย ให้บันทึกไว้ในไฟล์ ~/.ssh/config แล้วใช้ชื่อย่อแทน เช่น scp backup.sql web1: ดู ใช้ไฟล์ ~/.ssh/config ให้ SSH เข้าเซิร์ฟเวอร์ได้สะดวกขึ้น
ขั้นตอนที่ 4: ใช้ sftp แบบโต้ตอบ
sftp [email protected]
sftp -P 2222 [email protected]
เมื่อเชื่อมต่อสำเร็จจะเห็น Prompt sftp> คำสั่งที่ใช้บ่อยมีดังนี้ คำสั่งที่ขึ้นต้นด้วย l (local) ทำงานกับเครื่องของคุณ
| คำสั่ง | ผล |
|---|---|
pwd / lpwd | แสดงโฟลเดอร์ปัจจุบันบนเซิร์ฟเวอร์ / บนเครื่องของคุณ |
ls / lls | แสดงรายการไฟล์ |
cd / lcd | เปลี่ยนโฟลเดอร์ |
put ไฟล์ | อัปโหลด |
put -r โฟลเดอร์ | อัปโหลดทั้งโฟลเดอร์ |
get ไฟล์ / get -r โฟลเดอร์ | ดาวน์โหลด |
reget / reput | ต่อการดาวน์โหลดหรืออัปโหลดที่ขาดไปกลางทาง |
mkdir, rm, rename | สร้างโฟลเดอร์ ลบไฟล์ เปลี่ยนชื่อบนเซิร์ฟเวอร์ |
bye | ออก |
ตัวอย่างการทำงานจริง ดาวน์โหลดไฟล์ Backup ล่าสุดลงโฟลเดอร์ Downloads
sftp> cd /home/admin/backups
sftp> ls -l
sftp> lcd ~/Downloads
sftp> get db-2026-09-18.sql.gz
sftp> bye
ขั้นตอนที่ 5: คัดลอกระหว่างเซิร์ฟเวอร์สองเครื่อง
ถ้าเซิร์ฟเวอร์ต้นทางเข้าถึงปลายทางได้ ให้ SSH เข้าเครื่องต้นทางแล้วรัน scp ไปยังปลายทางโดยตรง วิธีนี้เร็วที่สุดเพราะข้อมูลไม่ต้องผ่านเครื่องของคุณ ถ้าเข้าได้เฉพาะจากเครื่องของคุณ ใช้ -3 ให้ข้อมูลส่งผ่านเครื่องของคุณแทน
scp -3 [email protected]:/home/admin/site.tar.gz [email protected]:/home/admin/
สำหรับโฟลเดอร์ใหญ่ที่ต้องซิงก์ซ้ำเป็นประจำ ใช้ rsync จะเหมาะกว่า เพราะส่งเฉพาะส่วนที่เปลี่ยน ดู สำรองข้อมูลไปยังเซิร์ฟเวอร์อื่นด้วย rsync และ Cronjob และถ้าไฟล์ใหญ่มากจนกลัว SSH หลุดระหว่างทาง ให้รันคำสั่งใน tmux
ตรวจสอบผลลัพธ์
เปรียบเทียบ Checksum ของไฟล์ทั้งสองฝั่งเพื่อยืนยันว่าไฟล์ครบและไม่เสียหาย
# บนเครื่อง Linux หรือเซิร์ฟเวอร์
sha256sum backup.sql
# บน macOS
shasum -a 256 backup.sql
# บน Windows PowerShell
Get-FileHash .\backup.sql -Algorithm SHA256
ค่าที่ได้จากทั้งสองฝั่งต้องตรงกันทุกตัวอักษร
ปัญหาที่พบบ่อย
Permission denied ขณะเขียนไฟล์
ผู้ใช้ที่ใช้เชื่อมต่อไม่มีสิทธิ์เขียนโฟลเดอร์ปลายทาง เช่น /var/www ที่เป็นของ root ทางที่ปลอดภัยคืออัปโหลดเข้าโฮมก่อน แล้ว SSH เข้าไปย้ายด้วย sudo mv และปรับเจ้าของไฟล์ให้ถูกต้อง scp และ sftp ใช้ sudo ไม่ได้
Connection refused หรือ Connection timed out
พอร์ตไม่ถูกต้องหรือถูก Firewall บล็อก ตรวจว่าใส่ -P ตรงกับพอร์ต SSH จริง และทดสอบด้วย ssh -p พอร์ต ผู้ใช้@โฮสต์ ก่อน หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ตนั้นเพิ่มด้วย
scp ไม่ยอมใช้ Path ที่มี ~ หรือ Wildcard ฝั่งเซิร์ฟเวอร์
ตั้งแต่ OpenSSH 9.0 คำสั่ง scp ใช้โปรโตคอล SFTP เป็นค่าเริ่มต้น การตีความ Path บางแบบจึงต่างจากเดิมเล็กน้อย ส่วนใหญ่ยังใช้ได้ตามปกติ ถ้าเชื่อมต่อกับเซิร์ฟเวอร์รุ่นเก่ามากที่ไม่มี SFTP Subsystem ให้เพิ่ม -O เพื่อใช้โปรโตคอลแบบเดิม
Received message too long หรือเชื่อมต่อแล้วหลุดทันที
ไฟล์เริ่มต้นของ Shell บนเซิร์ฟเวอร์ (เช่น ~/.bashrc) พิมพ์ข้อความออกมาตอน Login ซึ่งรบกวนโปรโตคอล SFTP ให้ย้ายคำสั่ง echo หรือข้อความต้อนรับออก หรือครอบไว้ให้ทำงานเฉพาะ Shell แบบโต้ตอบ
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อเซิร์ฟเวอร์ ระบบปฏิบัติการ คำสั่งที่ใช้ และข้อความ Error ที่พบ เพื่อให้ตรวจสอบได้รวดเร็วขึ้น
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


