คำสั่ง scp: วิธีใช้และตัวเลือก การคัดลอกโฟลเดอร์และการระบุพอร์ต
scp คือเครื่องมือคัดลอกที่ใช้รับส่งไฟล์กับเซิร์ฟเวอร์ที่คุณเชื่อมต่อผ่าน SSH เมื่อส่งไฟล์ด้วยคำสั่ง scp คุณจะเขียนต้นทางไว้ก่อนและปลายทางไว้หลัง เช่นเดียวกับ cp เมื่อเราส่งไฟล์และโฟลเดอร์จากเซิร์ฟเวอร์ AlmaLinux 9 ไปยังเซิร์ฟเวอร์ Debian 12 แล้วดึงกลับมา การถ่ายโอนใช้โปรโตคอล SFTP และไฟล์ขนาด 20MB ไปถึงภายใน 1 วินาที
เอาต์พุตด้านล่างทั้งหมดคือผลลัพธ์จริงจาก scp ของ OpenSSH 9.9 ที่รันด้วยบัญชี root ฝั่งส่ง โดยเปลี่ยนเฉพาะที่อยู่เซิร์ฟเวอร์และชื่อบัญชีเป็นค่าตัวอย่าง
1️⃣ วิธีใช้ scp และพาธระยะไกล
หน้าพาธบนเซิร์ฟเวอร์ระยะไกลให้ใส่ [บัญชี@ที่อยู่เซิร์ฟเวอร์:] พาธที่ไม่มีเครื่องหมายทวิภาคจะถือเป็นพาธบนเซิร์ฟเวอร์ที่รันคำสั่ง ดังนั้นฝั่งที่มีเครื่องหมายทวิภาคจะเป็นตัวกำหนดว่าเป็นการส่งหรือการรับ
ส่ง report.txt จากโฟลเดอร์ปัจจุบันไปยังโฟลเดอร์ scp-test ใต้โฮมของเซิร์ฟเวอร์ระยะไกล
scp report.txt user@203.0.113.10:~/scp-test/report.txt 100% 14 5.1KB/s 00:00เมื่อถ่ายโอนเสร็จ ชื่อไฟล์ ความคืบหน้า ขนาด ความเร็ว และเวลาที่ใช้จะแสดงในบรรทัดเดียว การแสดงความคืบหน้านี้ปรากฏเฉพาะเมื่อรันในเทอร์มินัล ดังนั้นถ้าเปลี่ยนทางเอาต์พุตไปยังไฟล์ ในไฟล์จะไม่มีอะไรเหลืออยู่
เมื่อดึงไฟล์มา ให้เขียนพาธระยะไกลไว้หน้าและพาธในเครื่องที่จะบันทึกไว้หลัง
scp user@203.0.113.10:~/scp-test/report.txt ./downloads/report.txt 100% 14 2.7KB/s 00:00ถ้าพาธปลายทางลงท้ายด้วยชื่อไฟล์แทนโฟลเดอร์ ไฟล์จะถูกบันทึกด้วยชื่อนั้น หลังส่งด้วยคำสั่งด้านล่าง ในโฟลเดอร์ฝั่งรับมี report.txt อยู่ในชื่อ report-1028.txt
scp report.txt user@203.0.113.10:~/scp-test/report-1028.txtreport.txt 100% 14 4.6KB/s 00:00🔲 ตัวจำลองคำสั่ง scp
ในตัวจำลองด้านล่าง คุณสามารถพิมพ์คำสั่งส่ง รับ และคัดลอกโฟลเดอร์เองเพื่อดูเอาต์พุตของแต่ละตัวเลือกได้
2️⃣ ตัวเลือกของคำสั่ง scp
ตัวเลือกให้เขียนหลัง scp ทันที ก่อนต้นทาง -P ที่ระบุพอร์ตเป็นตัวพิมพ์ใหญ่ ส่วน -p ตัวพิมพ์เล็กใช้คงเวลาและสิทธิ์ ถ้าพิมพ์สลับกันจึงทำงานคนละอย่าง
-l กำหนดเพดานความเร็วการถ่ายโอนเป็นหน่วย Kbit/s เมื่อส่งไฟล์ 20MB โดยไม่ใส่ตัวเลือก การถ่ายโอนเสร็จภายใน 1 วินาที
scp backup.tar.gz user@203.0.113.10:~/scp-test/backup.tar.gz 100% 20MB 53.6MB/s 00:00-l 8000 เท่ากับประมาณ 1,000KB ต่อวินาที เมื่อส่งไฟล์เดียวกันด้วย -l 8000 ความเร็วที่แสดงคือ 996.5KB/s และการถ่ายโอนใช้เวลา 20 วินาที
scp -l 8000 backup.tar.gz user@203.0.113.10:~/scp-test/backup-l.tar.gzbackup.tar.gz 100% 20MB 996.5KB/s 00:20-C บีบอัดข้อมูลในการเชื่อมต่อ SSH ด้วยวิธีเดียวกับ gzip เมื่อส่งไฟล์ล็อก 19MB ที่มีประโยคซ้ำกันอย่างละสามครั้ง ระหว่างเซิร์ฟเวอร์สองเครื่องนี้ฝั่งที่ใส่ -C ช้ากว่าเล็กน้อย
| คำสั่ง | ไฟล์ | เวลาทำงาน | ความเร็วที่แสดง |
|---|---|---|---|
| scp backup.tar.gz | 20MB | 0.68 วินาที | 53.6MB/s |
| scp -l 8000 backup.tar.gz | 20MB | 20.82 วินาที | 996.5KB/s |
| scp access.log (3 ครั้ง) | 19MB | 0.79~0.89 วินาที | — |
| scp -C access.log (3 ครั้ง) | 19MB | 0.84~0.97 วินาที | — |
เวลาทำงานคือเวลาตั้งแต่เริ่มคำสั่ง เชื่อมต่อ จนถ่ายโอนเสร็จ คู่มือ ssh ก็อธิบายว่าการบีบอัดได้ผลบนสายความเร็วต่ำ และทำให้การถ่ายโอนช้าลงบนเครือข่ายความเร็วสูง
-v แสดงขั้นตอนตั้งแต่เชื่อมต่อจนถึงถ่ายโอนเป็นบรรทัด debug1 จึงใช้หาสาเหตุเมื่อเชื่อมต่อไม่ได้หรือค้างที่การยืนยันตัวตน เนื่องจากเอาต์พุตยาว เราจึงใช้ grep เลือกเฉพาะบรรทัดการยืนยันตัวตนและการถ่ายโอน
scp -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending subsystem: sftp
Transferred: sent 2536, received 3248 bytes, in 0.1 secondsบรรทัด [Sending subsystem: sftp] หมายความว่า scp ส่งไฟล์ด้วยโปรโตคอล SFTP ตั้งแต่ OpenSSH 9.0 scp ใช้ SFTP เป็นค่าเริ่มต้น ถ้าใส่ -O จะถ่ายโอนด้วยโปรโตคอล SCP แบบเก่า และตำแหน่งเดียวกันจะแสดง [Sending command: scp -v -t]
scp -O -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending command: scp -v -t ~/scp-test/
Sending file modes: C0600 14 report.txt
Transferred: sent 2328, received 3036 bytes, in 0.1 seconds📌 ตัวเลือกหลัก: ผลที่รันในบทความนี้
| ตัวเลือก | หน้าที่ | ผลที่เห็นในบทความนี้ | |
|---|---|---|---|
| -P | ระบุพอร์ตเชื่อมต่อ SSH | พอร์ต 22 ส่ง report.txt สำเร็จ พอร์ต 2222 ที่ไม่ได้เปิดจบด้วย [Connection timed out] | |
| -i | ระบุไฟล์คีย์ส่วนตัวสำหรับการยืนยันตัวตนด้วยคีย์สาธารณะ | ระบุ ~/.ssh/id_ed25519 แล้วส่ง report.txt สำเร็จ | |
| -r | คัดลอกไฟล์และโฟลเดอร์ย่อยในโฟลเดอร์ | ฝั่งรับมีโฟลเดอร์ css และ images ตามโครงสร้างเดิม ถ้าไม่ใส่จะไม่ถ่ายโอนเพราะข้อผิดพลาด [not a regular file] | |
| -p | คงเวลาแก้ไข เวลาเข้าถึง และสิทธิ์ของต้นทาง | เวลาแก้ไขคงเดิม ส่วนฝั่งรับของบทความนี้ สิทธิ์ 600 คงอยู่เฉพาะไฟล์ที่ส่งด้วย -O -p | |
| -C | บีบอัดข้อมูลในการเชื่อมต่อ SSH | กับล็อก 19MB ระหว่างเซิร์ฟเวอร์สองเครื่องของบทความนี้ ฝั่งที่ใส่ตัวเลือกช้ากว่าเล็กน้อย | |
| -l | กำหนดเพดานความเร็วการถ่ายโอนเป็นหน่วย Kbit/s | -l 8000 กับ 20MB ได้ 996.5KB/s ใช้เวลา 20.82 วินาที | |
| -v | แสดงขั้นตอนตั้งแต่เชื่อมต่อจนถึงถ่ายโอนเป็นบรรทัด debug1 | ยืนยันการถ่ายโอนแบบ SFTP จากบรรทัด [Sending subsystem: sftp] | |
| -3 | ถ่ายโอนข้อมูลระหว่างเซิร์ฟเวอร์ระยะไกลสองเครื่องผ่านเซิร์ฟเวอร์ที่รันคำสั่ง (ค่าเริ่มต้นตั้งแต่ OpenSSH 8.7) | ใช้สองโฟลเดอร์บนเซิร์ฟเวอร์เดียวกันเป็นต้นทางและปลายทาง แล้วส่ง report.txt สำเร็จ | |
| -O | ถ่ายโอนด้วยโปรโตคอล SCP แบบเก่า | เอาต์พุต -v แสดง [Sending command: scp -v -t] พาธที่มีช่องว่างต้องเพิ่มแบ็กสแลชอีก | |
| -o | ส่งตัวเลือกรูปแบบ ssh_config ให้ ssh | ตั้งเวลารอ 10 วินาทีด้วย ConnectTimeout=10 แล้วยืนยัน [Connection timed out] |
📎 ตัวเลือกอื่น: ตามคู่มือทางการ
| ตัวเลือก | หน้าที่ | |
|---|---|---|
| -q | ปิดการแสดงความคืบหน้า รวมถึงคำเตือนและข้อความวินิจฉัยของ ssh | |
| -J | เชื่อมต่อกับ jump host ก่อน แล้วตั้งการส่งต่อ TCP จากที่นั่นไปยังปลายทางสุดท้าย (รูปย่อของการตั้งค่า ProxyJump หลายฮอปคั่นด้วยจุลภาค) | |
| -F | ระบุไฟล์อื่นเป็นไฟล์การตั้งค่าเฉพาะผู้ใช้ของ ssh (ส่งต่อให้ ssh โดยตรง) | |
| -4 | บังคับให้ใช้เฉพาะที่อยู่ IPv4 | |
| -6 | บังคับให้ใช้เฉพาะที่อยู่ IPv6 |
3️⃣ การคัดลอกโฟลเดอร์ด้วย scp และการคงเวลา
ถ้าระบุโฟลเดอร์โดยไม่ใส่ตัวเลือก scp จะแสดงข้อผิดพลาดว่าไม่ใช่ไฟล์ปกติและไม่ถ่ายโอน
scp site-files user@203.0.113.10:~/scp-test/scp: local "site-files" is not a regular file
scp: failed to upload file site-files to ~/scp-test/ถ้าใส่ -r จะคัดลอกไฟล์และโฟลเดอร์ย่อยในโฟลเดอร์
scp -r site-files user@203.0.113.10:~/scp-test/logo.png 100% 48KB 4.7MB/s 00:00
style.css 100% 15 5.0KB/s 00:00
index.html 100% 15 5.2KB/s 00:00เอาต์พุตแสดงเฉพาะชื่อไฟล์ ส่วนเอาต์พุต find ฝั่งรับมีโฟลเดอร์ css และ images ใต้ site-files ตามโครงสร้างเดิม
ssh user@203.0.113.10 'cd ~/scp-test && find site-files'site-files
site-files/images
site-files/images/logo.png
site-files/index.html
site-files/css
site-files/css/style.css-r จะตามลิงก์สัญลักษณ์ในโฟลเดอร์แล้วคัดลอกไฟล์ต้นฉบับ ดังนั้นโฟลเดอร์ที่ต้องย้ายลิงก์ไปเป็นลิงก์ควรใช้ rsync -a
-p คงเวลาแก้ไข เวลาเข้าถึง และสิทธิ์ของต้นทาง เราตั้ง report.txt ต้นฉบับให้มีเวลาแก้ไข 1 ตุลาคม 2026 00:00 (UTC) และสิทธิ์ 600 ก่อนส่ง เขตเวลาของเซิร์ฟเวอร์ฝั่งรับคือ UTC จึงรัน ls ฝั่งส่งด้วย TZ=UTC เช่นกัน
TZ=UTC ls -l report.txt-rw------- 1 root root 14 Oct 1 00:00 report.txtscp -p report.txt user@203.0.113.10:~/scp-test/report-p.txtreport.txt 100% 14 4.7KB/s 00:00scp -O -p report.txt user@203.0.113.10:~/scp-test/report-Op.txtreport.txt 100% 14 4.2KB/s 00:00ssh user@203.0.113.10 'ls -l ~/scp-test/report.txt ~/scp-test/report-p.txt ~/scp-test/report-Op.txt'-rw------- 1 user user 14 Oct 1 00:00 /home/user/scp-test/report-Op.txt
-rw-rw-r-- 1 user user 14 Oct 1 00:00 /home/user/scp-test/report-p.txt
-rw-rw-r-- 1 user user 14 Oct 28 06:17 /home/user/scp-test/report.txtreport-p.txt ที่ส่งด้วย -p และ report-Op.txt ที่ส่งด้วย -O -p ยังคงเวลาเดิม ส่วน report.txt ที่ส่งโดยไม่ใส่ตัวเลือกถูกบันทึกด้วยเวลาที่ส่ง บนเซิร์ฟเวอร์ฝั่งรับ ไฟล์ที่ส่งผ่าน SFTP มีสิทธิ์ 664 แม้ใส่ -p และมีเพียงไฟล์ที่ส่งด้วยโปรโตคอล SCP แบบเก่า (-O) ที่คงสิทธิ์ 600
ดังนั้นไฟล์ที่ต้องมีสิทธิ์เหมือนต้นทาง ให้ตรวจสอบสิทธิ์ด้วย ls -l ฝั่งรับหลังส่ง
4️⃣ การระบุพอร์ตและไฟล์คีย์ใน scp
เซิร์ฟเวอร์ที่เชื่อมต่อด้วยพอร์ตเริ่มต้น 22 และคีย์เริ่มต้นไม่ได้ ให้ระบุพอร์ตและคีย์เองก่อนส่ง -P ระบุพอร์ตเชื่อมต่อ SSH และ -i ระบุไฟล์คีย์ส่วนตัวสำหรับการยืนยันตัวตนด้วยคีย์สาธารณะ
ด้านล่างเป็นตัวอย่างที่ระบุพอร์ต 22 และไฟล์คีย์โดยตรง ถ้าเซิร์ฟเวอร์เปลี่ยนพอร์ตแล้ว ให้เขียนหมายเลขนั้นแทน 22
scp -P 22 -i ~/.ssh/id_ed25519 report.txt user@203.0.113.10:~/scp-test/report.txt 100% 14 5.3KB/s 00:00ถ้าไม่ใส่ -i จะใช้คีย์ชื่อเริ่มต้นใต้ ~/.ssh (id_rsa, id_ecdsa, id_ed25519 เป็นต้น) ตามลำดับเช่นเดียวกับ ssh
ถ้าส่งไปยังเซิร์ฟเวอร์เดิมบ่อย ให้เขียนชื่อแทนไว้ใน ~/.ssh/config แล้วพิมพ์เฉพาะชื่อแทนใน scp
Host myserver
HostName 203.0.113.10
User user
Port 22
IdentityFile ~/.ssh/id_ed25519ชื่อในบรรทัด Host จะเป็นชื่อแทน และสี่บรรทัดด้านล่างจะแทนที่อยู่เซิร์ฟเวอร์ บัญชี พอร์ต และไฟล์คีย์ คำสั่งที่เขียนเฉพาะชื่อแทนก็จบด้วยผลลัพธ์หนึ่งบรรทัดแบบเดียวกับตอนเขียนที่อยู่และคีย์ครบ
scp report.txt myserver:~/scp-test/report.txt 100% 14 4.2KB/s 00:00-P, -i และชื่อแทนล้วนใช้การตั้งค่าการเชื่อมต่อ ssh ตามเดิม ขั้นตอนสร้างคีย์และลงทะเบียนบนเซิร์ฟเวอร์จึงเหมือนกับตอนเชื่อมต่อด้วย คำสั่ง SSH เช่นกัน
5️⃣ การคัดลอกระหว่างเซิร์ฟเวอร์ด้วย scp
แม้ทั้งต้นทางและปลายทางเป็นเซิร์ฟเวอร์ระยะไกล ก็คัดลอกได้ด้วย scp บรรทัดเดียว ตั้งแต่ OpenSSH 8.7 ข้อมูลจะถ่ายโอนผ่านเซิร์ฟเวอร์ที่รันคำสั่ง และวิธีนี้คือ -3 บันทึกการออกรุ่นอย่างเป็นทางการระบุเหตุผลที่เปลี่ยนเป็นค่าเริ่มต้นว่า ไม่ต้องเก็บข้อมูลยืนยันตัวตนของเซิร์ฟเวอร์ปลายทางไว้บนเซิร์ฟเวอร์ต้นทาง
การวัดด้านล่างใช้สองโฟลเดอร์บนเซิร์ฟเวอร์เดียวกันเป็นต้นทางและปลายทาง ถ้าเซิร์ฟเวอร์ปลายทางต่างกัน ให้เปลี่ยนเฉพาะบัญชีและที่อยู่ด้านหลัง
scp -3 user@203.0.113.10:~/scp-test/report.txt user@203.0.113.10:~/scp-test/copy3/report.txt 100% 14 2.5KB/s 00:00เหมือนสำนักงานใหญ่รับเอกสารระหว่างสองสาขาแล้วส่งต่อให้อีกที
วิธีเก่าที่เซิร์ฟเวอร์ต้นทางส่งตรงไปยังเซิร์ฟเวอร์ปลายทางระบุด้วย -R วิธีนี้ต้องให้เซิร์ฟเวอร์ต้นทางเชื่อมต่อเซิร์ฟเวอร์ปลายทางได้โดยไม่ใช้รหัสผ่าน ตั้งแต่ OpenSSH 10.6 การใช้ -R จะมีคำเตือนว่าจะเลิกสนับสนุน และรุ่นถัดไปมีแผนจะละเว้นตัวเลือกนี้แล้วคัดลอกด้วยวิธี -3
6️⃣ เปรียบเทียบ scp กับ rsync
การส่งไฟล์ไม่กี่ไฟล์ครั้งเดียวใช้ scp ก็พอ ส่วนงานที่ต้องซิงก์โฟลเดอร์เดิมซ้ำๆ หรือทำการถ่ายโอนที่ขาดตอนต่อ ควรใช้ คำสั่ง rsync scp จะส่งไฟล์ที่ระบุทั้งหมดใหม่ทุกครั้งที่รัน ส่วน rsync จะเปรียบเทียบต้นทางกับปลายทางแล้วถ่ายโอนเฉพาะไฟล์ที่เปลี่ยน
| รายการ | scp | rsync |
|---|---|---|
| ขอบเขตการถ่ายโอน | ไฟล์ที่ระบุทั้งหมดทุกครั้งที่รัน | เฉพาะไฟล์ที่เปลี่ยนจากต้นทาง |
| เก็บไฟล์ที่รับไม่ครบ (--partial) | ❌ | ✅ |
| ลบไฟล์ที่ไม่มีในต้นทาง (--delete) | ❌ | ✅ |
| ลิงก์สัญลักษณ์ | ตามไปคัดลอกไฟล์ต้นฉบับ | -a คงเป็นลิงก์ |
| สิ่งที่ฝั่งรับต้องมี | การเชื่อมต่อ SSH และเซิร์ฟเวอร์ SFTP | ติดตั้ง rsync ทั้งสองฝั่ง |
7️⃣ ข้อความข้อผิดพลาดของคำสั่ง scp และวิธีแก้
เมื่อ scp ล้มเหลว สาเหตุจะแสดงในบรรทัดแรกของเอาต์พุตทันที ทั้งสามกรณีที่เราตั้งใจทำให้เกิดข้อผิดพลาดด้วยไฟล์ที่ไม่มี สิทธิ์เขียน และพอร์ตผิด สาเหตุแสดงในบรรทัดแรกทั้งหมด และรหัสออกก็ไม่ใช่ 0 ทุกกรณี
🔲 No such file or directory
ถ้าพยายามรับไฟล์ที่ไม่มีอยู่ฝั่งระยะไกล จะแสดง [No such file or directory] พร้อมพาธ
scp user@203.0.113.10:~/scp-test/nofile.txt ./downloads/scp: ~/scp-test/nofile.txt: No such file or directoryตอนส่ง ถ้าไม่มีโฟลเดอร์ปลายทางก็เกิดข้อผิดพลาดเดียวกัน scp ไม่สร้างโฟลเดอร์ที่ไม่มี จึงต้องรัน mkdir -p ผ่าน ssh เพื่อสร้างโฟลเดอร์ก่อน
scp report.txt user@203.0.113.10:~/scp-test/nodir/sub/scp: dest open "scp-test/nodir/sub/": No such file or directory
scp: failed to upload file report.txt to ~/scp-test/nodir/sub/🔲 Permission denied
ถ้าโฟลเดอร์ฝั่งรับไม่มีสิทธิ์เขียน [Permission denied] จะตามหลัง [dest open] ด้านล่างคือผลการส่งไปยังโฟลเดอร์ readonly ที่ตั้งสิทธิ์ 555
scp report.txt user@203.0.113.10:~/scp-test/readonly/scp: dest open "scp-test/readonly/report.txt": Permission denied
scp: failed to upload file report.txt to ~/scp-test/readonly/ถ้าหน้า [Permission denied] มี [บัญชี@ที่อยู่เซิร์ฟเวอร์:] และในวงเล็บมีวิธียืนยันตัวตนอย่าง publickey แสดงว่าถูกปฏิเสธในขั้นยืนยันตัวตนตอนเชื่อมต่อ ข้อความนี้เป็นรูปแบบที่โปรแกรม ssh แสดงเมื่อยืนยันตัวตนล้มเหลว จึงควรตรวจไฟล์คีย์ที่ระบุด้วย -i และคีย์สาธารณะที่ลงทะเบียนบนเซิร์ฟเวอร์ก่อน
🔲 Connection timed out
ถ้าหมายเลขพอร์ตผิดหรือไฟร์วอลล์บล็อกพอร์ตนั้นจนไม่มีการตอบกลับ จะรอการเชื่อมต่อแล้วจบด้วย [Connection timed out] ด้านล่างคือผลการส่งไปยังพอร์ต 2222 ที่ไม่ได้เปิดโดยตั้งเวลารอ 10 วินาที
scp -P 2222 -o ConnectTimeout=10 report.txt user@203.0.113.10:~/scp-test/ssh: connect to host 203.0.113.10 port 2222: Connection timed out
scp: Connection closedเมื่อเกิดข้อผิดพลาดนี้ ให้ตรวจก่อนว่าหมายเลขที่ใส่ใน -P ตรงกับพอร์ต SSH ของเซิร์ฟเวอร์หรือไม่
🔲 ช่องว่างและเครื่องหมายทิลดา (~) ในพาธ
scp ปัจจุบันที่ถ่ายโอนผ่าน SFTP เพียงครอบพาธระยะไกลที่มีช่องว่างด้วยเครื่องหมายคำพูดเดี่ยวครั้งเดียวก็พอ
scp report.txt 'user@203.0.113.10:~/scp-test/my files/'report.txt 100% 14 4.7KB/s 00:00เมื่อใส่ -O ในคำสั่งเดียวกันเพื่อส่งด้วยโปรโตคอล SCP แบบเก่า ก็ล้มเหลวด้วย [ambiguous target] เพราะในโปรโตคอล SCP แบบเก่า เชลล์ฝั่งระยะไกลจะตีความพาธอีกครั้ง
scp -O report.txt 'user@203.0.113.10:~/scp-test/my files/'scp: ambiguous targetกรณีนี้ให้ใส่แบ็กสแลชหน้าช่องว่าง เพื่อให้เชลล์ฝั่งระยะไกลอ่านเป็นคำเดียวด้วย
scp -O report.txt 'user@203.0.113.10:~/scp-test/my\ files/'report.txt 100% 14 4.5KB/s 00:00ถ้าพาธหลังเครื่องหมายทวิภาคไม่ได้ขึ้นต้นด้วยเครื่องหมายทับหรือทิลดา จะถือตามโฟลเดอร์โฮมของบัญชีระยะไกล
scp report.txt user@203.0.113.10:scp-test/report-rel.txtreport.txt 100% 14 5.6KB/s 00:00คู่มือทางการอธิบายให้ใช้ -O เมื่อเซิร์ฟเวอร์ SFTP รุ่นเก่าแปลงพาธที่ขึ้นต้นด้วยทิลดาเป็นโฟลเดอร์โฮมไม่ได้ กรณีนี้การเขียนพาธตามโฮมโดยไม่มีทิลดาแบบด้านบนก็บันทึกไว้ที่เดียวกัน
🔢 FAQ & เนื้อหาแนะนำ









ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน
