ฉันค้นหามาระยะหนึ่งแล้วและไม่สามารถหาคำจำกัดความของไฟล์ปกติได้ เส้นทางของฉันเป็นแบบถาวร (เริ่มต้นที่/
) และฉันกำลังเชื่อมต่อกับ
scp root@IP: /path/to/picture.jpg
ผลลัพธ์ในการสอบถามรหัสผ่านแล้ว ...
scp: .: not a regular file
ฉันค้นหามาระยะหนึ่งแล้วและไม่สามารถหาคำจำกัดความของไฟล์ปกติได้ เส้นทางของฉันเป็นแบบถาวร (เริ่มต้นที่/
) และฉันกำลังเชื่อมต่อกับ
scp root@IP: /path/to/picture.jpg
ผลลัพธ์ในการสอบถามรหัสผ่านแล้ว ...
scp: .: not a regular file
คำตอบ:
ไฟล์ปกติคือไฟล์ที่ไม่ใช่ไดเรกทอรีหรือไฟล์ประเภท"พิเศษ" ที่แปลกใหม่เช่นชื่อไปป์, อุปกรณ์, ซ็อกเก็ต, ประตู ฯลฯลิงก์สัญลักษณ์ไม่ใช่ไฟล์ปกติ แต่มันจะทำหน้าที่เหมือนเป็นเป้าหมายเมื่อมัน แอปพลิเคชันกำลังเข้าถึงเนื้อหาของไฟล์
คุณส่งผ่าน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
เมื่อคัดลอกไดเรกทอรีคุณควรใช้-r
ตัวเลือก:
scp -r root@IP:/path/to/file /path/to/filedestination
ปัญหาไวยากรณ์ - ลบช่องว่างระหว่าง
ราก @ IP:
และ
/เส้นทาง
scp
อีกต่อไป
not a regular file
-r
เป็นอาร์กิวเมนต์ของ scp
scp root@IP:/path/to/file /path/to/filedestination
คำสั่งด้านบนคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังคอมพิวเตอร์ของคุณ หากคุณพิมพ์เพียงอย่างเดียวscp root@IP:
มันจะพยายามคัดลอกโฮมไดเร็กทอรีของรูท (ผู้ใช้โฮมซีพี.
)
ดังนั้นคุณต้องระบุเส้นทางที่แน่นอนไปยังไฟล์
คุณได้รับข้อผิดพลาดนั้นเนื่องจากคุณพยายามคัดลอกโฟลเดอร์ไม่ใช่ไฟล์และด้วยเหตุนี้คุณควรคัดลอกไฟล์ซ้ำโดยใช้-r
ตัวเลือก
ใช้คำสั่งด้านล่างเมื่อคัดลอกไฟล์จากเครื่องระยะไกลไปยังเครื่องท้องถิ่น
scp -r root@RemoteIP:/path/to/file /path/to/filedestination
หรือ
เมื่อคัดลอกไฟล์จากเครื่องท้องถิ่นไปยังเครื่องระยะไกล
scp -r /path/to/file root@RemoteIP:/path/to/filedestination
scp root@IP:/path/to/*.jpg /path/to/filedestination/
สิ่งนี้จะใช้ได้ (อย่างน้อยบน Mac ของฉัน)