ข้อความแสดงข้อผิดพลาด 'scp ไม่ใช่ไฟล์ปกติ' ระบุว่าคุณกำลังพยายามใช้คำสั่ง SCP เพื่อคัดลอกไฟล์ แต่แหล่งที่มาหรือปลายทางที่ระบุไม่ใช่ไฟล์ปกติ คำสั่ง SCP ถูกใช้อย่างกว้างขวางเพื่อถ่ายโอนไฟล์อย่างปลอดภัยระหว่างโฮสต์ผ่านการเชื่อมต่อ SSH (Secure Shell) จำเป็นต้องระบุทั้งต้นทางและปลายทางสำหรับการถ่ายโอนไฟล์ ดังนั้นข้อผิดพลาดมักเกิดขึ้นเนื่องจากเส้นทางไฟล์ไม่ถูกต้อง
ข้อความแสดงข้อผิดพลาด “scp ไม่ใช่ไฟล์ปกติ” สามารถเกิดขึ้นได้บนระบบปฏิบัติการต่าง ๆ รวมถึงระบบที่คล้าย Unix เช่น 'Linux', 'macOS' และ 'BSD' นอกจากนี้ยังสามารถเกิดขึ้นได้บนระบบ Windows ที่ติดตั้งคำสั่ง SCP ซึ่งโดยทั่วไปจะเป็นส่วนหนึ่งของซอฟต์แวร์บุคคลที่สามเช่น 'PuTTY' หรือ 'Cygwin'
เพื่อช่วยเหลือคุณในการแก้ไขข้อผิดพลาดนี้ เราได้รวบรวมคำแนะนำในการแก้ไขปัญหาซึ่งจะช่วยคุณแก้ไขปัญหานี้โดยละเอียด
1. ปัญหาด้านไวยากรณ์
Unix และ Linux มีชื่อเสียงในด้านการปฏิบัติตามกฎไวยากรณ์และมาตรฐานที่ควบคุมคำสั่ง เชลล์สคริปต์ และไฟล์การกำหนดค่าที่กำหนดไว้อย่างดีอย่างเคร่งครัด การปฏิบัติตามไวยากรณ์ที่กำหนดถือเป็นสิ่งสำคัญเพื่อให้แน่ใจว่ามีการดำเนินการที่เหมาะสมและลักษณะการทำงานที่คาดหวังในระบบปฏิบัติการเหล่านี้
ดังนั้นหากพบความไม่สมบูรณ์ของไวยากรณ์ ระบบจะแจ้งให้ผู้ใช้ทราบข้อผิดพลาดโดยอัตโนมัติ ในกรณีนี้ ข้อผิดพลาดคือ “scp:ไม่ใช่ไฟล์ปกติ” มีข้อควรพิจารณาหลายประการที่ควรคำนึงถึงเมื่อพยายามคัดลอกไฟล์
1.1 ตรวจสอบช่องว่าง
การตรวจสอบช่องว่างในชื่อไฟล์หรือไดเร็กทอรีถือเป็นงานสำคัญใน Unix/Linux ช่วยให้แน่ใจว่าไม่มีช่องว่างนำหน้าหรือต่อท้ายที่อาจทำให้เกิดปัญหาเมื่อทำงานกับคำสั่งหรือสคริปต์
ตัวอย่างเช่น ลองพิจารณาสถานการณ์ที่คุณมีไฟล์ชื่อ 'my_file.txt' อยู่ในไดเร็กทอรี '/home/user' หากต้องการตรวจสอบการมีอยู่ของช่องว่างในชื่อไฟล์ คุณสามารถใช้คำสั่งต่อไปนี้:
ls -Q/home/user
ตัวเลือก -Q ใช้เพื่อแสดงชื่อไฟล์และไดเร็กทอรีภายในเครื่องหมายคำพูด หากมีช่องว่างใดๆ ในชื่อไฟล์ ช่องว่างเหล่านั้นจะถูกปิดไว้อย่างชัดเจนภายในเครื่องหมายคำพูดเมื่อรันคำสั่งนี้
ตัวอย่างเช่น หากผลลัพธ์แสดงผลลัพธ์เฉพาะ เราควรดำเนินการที่จำเป็น
"myfile.txt"
มันบ่งบอกถึงการมีอยู่ของช่องว่างในชื่อไฟล์ ในกรณีเช่นนี้ ขอแนะนำให้จัดการกับช่องว่างในชื่อไฟล์โดยใช้อักขระพิเศษหรือใส่ชื่อไว้ในเครื่องหมายคำพูดเมื่อทำงานกับคำสั่งหรือสคริปต์
เพื่อป้องกันปัญหาที่อาจเกิดขึ้นที่เกี่ยวข้องกับช่องว่างในชื่อไฟล์หรือไดเร็กทอรี โดยทั่วไปแนะนำให้ใช้ชื่อไฟล์ที่ไม่มีช่องว่าง
1.2 ขาดหายไปหรือมีโคลอนเกิน
คำสั่ง SCP กำหนดให้ใช้เครื่องหมายทวิภาคเพื่อระบุเซิร์ฟเวอร์ระยะไกลและเส้นทางไฟล์ ตัวอย่างเช่น การใช้ไวยากรณ์ที่ไม่ถูกต้อง เช่น 'scp user@host filepath' แทนที่จะเป็น 'scp user@host:filepath' สามารถทำให้เกิดข้อผิดพลาดได้ ดังนั้น เพื่อหลีกเลี่ยงข้อผิดพลาด “scp ไม่ใช่ไฟล์ปกติ” โปรดตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามข้อจำกัดด้านไวยากรณ์
1.3 การผสมผสานระหว่างต้นทางและปลายทาง
เมื่อใช้คำสั่ง SCP การผสมผสานเส้นทางต้นทางและปลายทางอาจทำให้เกิดข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด สิ่งสำคัญคือต้องรักษาลำดับที่ถูกต้องเพื่อให้แน่ใจว่าการถ่ายโอนไฟล์จะสำเร็จ
เพื่อชี้แจงให้ชัดเจน คำสั่ง SCP จะเป็นไปตามไวยากรณ์:
scp <source> <destination>.
หากคุณสลับเส้นทางต้นทางและปลายทางโดยไม่ตั้งใจ อาจทำให้ไฟล์ถูกคัดลอกไปในทิศทางที่ไม่ถูกต้องหรือทำให้เกิดข้อผิดพลาด “scp ไม่ใช่ไฟล์ปกติ” หากปลายทางไม่ถูกต้อง
ตัวอย่างเช่น ลองพิจารณาคัดลอกไฟล์ชื่อ “file.txt” จากเครื่องท้องถิ่นไปยังเซิร์ฟเวอร์ระยะไกล:
Correct: scp file.txt user@remote:/path/to/destination
Incorrect: scp user@remote:/path/to/destination file.txt
การใช้งานที่ไม่ถูกต้องจะพยายามคัดลอกไฟล์ระยะไกลชื่อ "file.txt" ไปยังเครื่องภายในเครื่อง ส่งผลให้เกิดผลลัพธ์ที่ไม่พึงประสงค์หรือเกิดข้อผิดพลาด เพื่อให้การถ่ายโอนไฟล์เป็นไปอย่างราบรื่น ให้ตรวจสอบอีกครั้งและรักษาลำดับที่ถูกต้องของเส้นทางต้นทางและปลายทางเมื่อใช้คำสั่ง SCP
2. ใช้ตัวเลือก “-r”
เหตุผลที่คุณพบข้อผิดพลาดนี้คือคุณอาจกำลังคัดลอกไดเร็กทอรีโดยไม่ได้ระบุระบบปฏิบัติการว่าคุณกำลังคัดลอกไดเร็กทอรี
ตามค่าเริ่มต้น SCP จะถือว่าไฟล์เป็นไฟล์ปกติ ดังนั้นจึงต้องเพิ่มตัวเลือก -r เมื่อทำการคัดลอกไดเร็กทอรี ข้อผิดพลาด “scp ไม่ปกติ” เกิดขึ้นเมื่อผู้ใช้พยายามคัดลอกไดเร็กทอรีและไม่ได้ระบุการกระทำนี้โดยใช้ตัวเลือก -r
เมื่อคุณต้องการคัดลอกไดเร็กทอรีทั้งหมด รวมถึงไดเร็กทอรีย่อยและไฟล์ทั้งหมด คุณจะต้องใช้ตัวเลือก "-r" หากไม่มีตัวเลือก “-r” SCP จะคัดลอกเฉพาะไฟล์แต่ละไฟล์ ไม่ใช่ไดเร็กทอรี
นี่คือตัวอย่างการใช้งาน scp ด้วยตัวเลือก “-r”:
scp -r /path/to/source_directory user@remote:/path/to/destination_directory
คำสั่งนี้จะคัดลอกเนื้อหาของ “source_directory” และไดเรกทอรีย่อยทั้งหมดซ้ำไปยัง “destination_directory” บนเซิร์ฟเวอร์ระยะไกล
เกี่ยวกับผู้เขียน
ดาวูด จันทร์เจือ
Dawood Janjua เป็นผู้ชื่นชอบเทคโนโลยีที่มีทักษะสูงและมีความรู้มากมายในการแก้ไขปัญหา Windows และการเล่นเกม เขามีใบรับรอง CCNA และมีประวัติที่พิสูจน์แล้วในการให้การสนับสนุนที่ยอดเยี่ยมแก่ลูกค้า ในขณะที่ทำงานเป็นนักเขียนอยู่ในปัจจุบัน Dawood ปรารถนาที่จะได้รับการรับรอง CCIE อันทรงเกียรติในอนาคต เพื่อขยายความเชี่ยวชาญด้านเทคนิคของเขาและให้การสนับสนุนในระดับภูมิภาค ด้วยความหลงใหลในการเล่นเกมและความเชี่ยวชาญด้านเทคโนโลยี Dawood มุ่งมั่นที่จะแบ่งปันความรู้ของเขากับชุมชน เพื่อช่วยให้ผู้อื่นพัฒนาทักษะและความรู้ในสาขานั้น ป>