Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

การแก้ไขข้อผิดพลาด 'scp:ไม่ใช่ไฟล์ปกติ' – คำแนะนำทีละขั้นตอน

ข้อความแสดงข้อผิดพลาด '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” บนเซิร์ฟเวอร์ระยะไกล

เกี่ยวกับผู้เขียน

การแก้ไขข้อผิดพลาด  scp:ไม่ใช่ไฟล์ปกติ  – คำแนะนำทีละขั้นตอน

ดาวูด จันทร์เจือ

Dawood Janjua เป็นผู้ชื่นชอบเทคโนโลยีที่มีทักษะสูงและมีความรู้มากมายในการแก้ไขปัญหา Windows และการเล่นเกม เขามีใบรับรอง CCNA และมีประวัติที่พิสูจน์แล้วในการให้การสนับสนุนที่ยอดเยี่ยมแก่ลูกค้า ในขณะที่ทำงานเป็นนักเขียนอยู่ในปัจจุบัน Dawood ปรารถนาที่จะได้รับการรับรอง CCIE อันทรงเกียรติในอนาคต เพื่อขยายความเชี่ยวชาญด้านเทคนิคของเขาและให้การสนับสนุนในระดับภูมิภาค ด้วยความหลงใหลในการเล่นเกมและความเชี่ยวชาญด้านเทคโนโลยี Dawood มุ่งมั่นที่จะแบ่งปันความรู้ของเขากับชุมชน เพื่อช่วยให้ผู้อื่นพัฒนาทักษะและความรู้ในสาขานั้น