เกิดข้อผิดพลาดในการใช้ SCP:“ ไม่ใช่ไฟล์ปกติ”


73

ฉันค้นหามาระยะหนึ่งแล้วและไม่สามารถหาคำจำกัดความของไฟล์ปกติได้ เส้นทางของฉันเป็นแบบถาวร (เริ่มต้นที่/) และฉันกำลังเชื่อมต่อกับ

scp root@IP: /path/to/picture.jpg

ผลลัพธ์ในการสอบถามรหัสผ่านแล้ว ...

scp: .: not a regular file

คำตอบ:


59

ไฟล์ปกติคือไฟล์ที่ไม่ใช่ไดเรกทอรีหรือไฟล์ประเภท"พิเศษ" ที่แปลกใหม่เช่นชื่อไปป์, อุปกรณ์, ซ็อกเก็ต, ประตู ฯลฯลิงก์สัญลักษณ์ไม่ใช่ไฟล์ปกติ แต่มันจะทำหน้าที่เหมือนเป็นเป้าหมายเมื่อมัน แอปพลิเคชันกำลังเข้าถึงเนื้อหาของไฟล์

คุณส่งผ่านroot@IP:เป็นแหล่งที่มาของสำเนาและ/path/to/picture.jpgเป็นปลายทาง แหล่งที่มาเป็นไดเรกทอรีบ้านของผู้ใช้บนเครื่องroot IPสิ่งนี้มีประโยชน์เป็นปลายทาง แต่ไม่เป็นแหล่งที่มา สิ่งที่คุณต้องพิมพ์เพื่อคัดลอกไดเรกทอรีไปยังไฟล์ scpไม่สามารถคัดลอกไดเรกทอรีถ้าคุณขอสำเนาซ้ำด้วย-rตัวเลือก (และมันจะปฏิเสธที่จะเขียนทับไฟล์ที่มีอยู่ด้วยไดเรกทอรีแม้ด้วย-rแต่มันจะเขียนทับไฟล์ปกติอย่างเงียบ ๆ หากแหล่งที่มาเป็นไฟล์ปกติ)

หาก/path/to/picture.jpgเป็นพา ธ บนเครื่องรีโมตของไฟล์ที่คุณต้องการคัดลอกคุณจะต้องติดชื่อไฟล์กับข้อมูลจำเพาะของโฮสต์ เป็นเครื่องหมายโคลอน:ที่แยกชื่อโฮสต์ออกจากเส้นทางระยะไกล คุณจะต้องระบุปลายทางด้วย

scp root@IP:/path/to/picture.jpg /some/destination

หากคุณต้องการคัดลอกโลคัลไฟล์/path/to/picture.jpgไปยังรีโมตโฮสต์คุณต้องสลับอาร์กิวเมนต์ คำสั่งการทำสำเนาของ Unix จะใส่ที่มาก่อนและปลายทางสุดท้าย

scp /path/to/picture.jpg root@IP:

หากคุณต้องการคัดลอกไฟล์ระยะไกล/path/to/picture.jpgไปยังตำแหน่งเดียวกันภายในเครื่องคุณต้องทำซ้ำเส้นทาง คุณสามารถทำให้เชลล์ทำงานซ้ำเพื่อคุณได้ (พิมพ์น้อยกว่าอ่านน้อยลง)

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg

2
ตรวจสอบให้แน่ใจว่าไม่มีช่องว่างระหว่างชื่อโฮสต์และไฟล์
chris

ฉันรู้สึกงี่เง่ามากหลังจากอ่านบทความนี้ แหล่งที่มาปลายทาง! ดุจ!
ไคม์เอลียาห์

112

เมื่อคัดลอกไดเรกทอรีคุณควรใช้-rตัวเลือก:

scp -r root@IP:/path/to/file /path/to/filedestination

1
แม้ว่าคำตอบที่ได้รับการยอมรับทางเทคนิคจะตอบคำถามจริง แต่คำตอบนี้น่าจะเป็นสิ่งที่คนที่มาที่หน้านี้กำลังมองหา
cgnorthcutt

4

ปัญหาไวยากรณ์ - ลบช่องว่างระหว่าง

ราก @ IP:

และ

/เส้นทาง


แต่คุณจะไม่มีเป้าหมายscpอีกต่อไป
แบร์นฮาร์ด

ได้. ฉันกด Enter เร็วเกินไปและขาดตัวแทนในการแก้ไข ประหลาดใจฉันสามารถแสดงความคิดเห็นได้ที่นี่ ไชโย
ปล้นสะดม

2
ฉันคิดว่าคุณสามารถแสดงความคิดเห็นต่อการมีส่วนร่วมของคุณเองและฉันคิดว่าคุณสามารถแก้ไขได้เสมอ
Bernhard

ฉันไม่คิดว่าจะทำให้เกิดข้อผิดพลาดนี้ได้not a regular file
HISI

@hisi ใช้-rเป็นอาร์กิวเมนต์ของ scp
Ankur Loriya

2

scp root@IP:/path/to/file /path/to/filedestination

คำสั่งด้านบนคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังคอมพิวเตอร์ของคุณ หากคุณพิมพ์เพียงอย่างเดียวscp root@IP:มันจะพยายามคัดลอกโฮมไดเร็กทอรีของรูท (ผู้ใช้โฮมซีพี.)

ดังนั้นคุณต้องระบุเส้นทางที่แน่นอนไปยังไฟล์


สิ่งนี้ใช้ได้ผล ขอบคุณมัดชาย ตามทัน!
JeffM

2

คุณได้รับข้อผิดพลาดนั้นเนื่องจากคุณพยายามคัดลอกโฟลเดอร์ไม่ใช่ไฟล์และด้วยเหตุนี้คุณควรคัดลอกไฟล์ซ้ำโดยใช้-rตัวเลือก

ใช้คำสั่งด้านล่างเมื่อคัดลอกไฟล์จากเครื่องระยะไกลไปยังเครื่องท้องถิ่น

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

หรือ

เมื่อคัดลอกไฟล์จากเครื่องท้องถิ่นไปยังเครื่องระยะไกล

scp -r /path/to/file root@RemoteIP:/path/to/filedestination

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.