ฉันจะรับคำสั่ง scp เพื่อเขียนทับโฟลเดอร์ปลายทางได้อย่างไร


41

ฉันใช้คำสั่ง scp เพื่อคัดลอกไฟล์บางไฟล์ไปยังเครื่องคอมพิวเตอร์ระยะไกลเช่นเดียวกับ scp :)

ฉันทราบว่าพฤติกรรมเริ่มต้นของสำเนา scp สำหรับไฟล์คือการเขียนทับไฟล์ที่มีอยู่ ตอนนี้ฉันต้องการคัดลอกโฟลเดอร์เพื่อให้ฉันทำสิ่งเดียวกันโดยพื้นฐาน:

scp -r <source_path> user@myOtherPc:<dest_path>

ที่ส่วนต่างๆใน <> เป็นเส้นทางโฟลเดอร์ของฉัน อย่างไรก็ตามเมื่อฉันเรียกใช้ฉันได้รับข้อความ "ไฟล์" มีวิธีแก้ไขไหม? การเรียงลำดับของแรงเกินเขียน?

ขอบคุณอาหารสัตว์


2
คุณยกตัวอย่างเส้นทางได้ไหม? ฉันไม่ได้ทำซ้ำสิ่งนี้ในระบบของฉัน คุณเคยตรวจสอบการอนุญาตของไฟล์ด้วยหรือไม่
Levans

มันให้ข้อมูลที่เป็นประโยชน์กับคุณหรือไม่ถ้าคุณใช้โหมด verbose -v. นอกจากนี้คุณกำลังใช้เส้นทางแบบสัมบูรณ์หรือเส้นทางสัมพัทธ์ทางด้านปลายทางหรือไม่ ผมคิดว่าถ้าโฟลเดอร์ปลายทางมีอยู่แล้วมันจะสร้างเส้นทางแหล่งภายในโฟลเดอร์ปลายทางมากกว่าการเขียนทับ ( testdir/testdir)
Beroe

2
มันแปลกที่คุณจะได้รับสิ่งนี้
สมมติ

1
@Levans ฉันไม่ได้ตรวจสอบการอนุญาตฉันเพิ่งดูและฉันคิดว่าคุณอาจจะถูกต้อง ฉันลบทุกอย่างในพื้นที่เป้าหมายและเริ่มต้นอีกครั้งโดยใช้เฉพาะคำสั่ง "scp" และใช้ผู้ใช้ "root" และฉันสามารถคัดลอกไฟล์ / โฟลเดอร์หลายครั้ง :) ... ฉันไม่แน่ใจ 100% ว่าปัญหาการอนุญาต มี แต่ตอนนี้ฉันมี "จัดการ" เกี่ยวกับปัญหาที่ฉันอาจจะคิดได้ขอบคุณ
code_fodder

1
@beroe ใช่นี่คือสิ่งที่ฉันคิดเช่นกัน ... มันทำให้ฉันสับสน แต่ฉันคิดว่าฉันได้ทำข้อผิดพลาดบางอย่างของผู้ใช้ที่นี่ด้วยสิทธิ์ฉันยังไม่ผู้เชี่ยวชาญ linux :( แต่ฉันจะลอง verbose-ness ครั้งต่อไปที่ฉันมีปัญหาเช่นนั้นเพื่อรับข้อมูลเพิ่มเติมขอบคุณนอกจากนี้ฉันยังสังเกตเห็นว่าบางครั้งคุณได้รับ "folder-inside-the-folder" ที่เกิดขึ้น ... แต่นั่นเป็นปัญหาอื่น: o
code_fodder

คำตอบ:


27

ดังที่ได้กล่าวไว้ก่อนหน้านี้ SCP จะเขียนทับไฟล์ใด ๆ ที่มีอยู่แล้วอย่างมีความสุข

ปัญหา "ไฟล์ที่มีอยู่" สามารถเกิดขึ้นได้เฉพาะเมื่อคุณมีกระบวนการอื่น (เช่นกระบวนการ SCP พร้อมกันหรืออย่างอื่น) การเขียนโฟลเดอร์และไฟล์ไปยังปลายทางเดียวกัน พิจารณาใช้ rsync แทน


1
ฉันจะเพิ่มเฉพาะ: ... ตราบใดที่คุณมีสิทธิ์ในการเขียนไฟล์นั้น ...
SDsolar

แต่สำหรับโฟลเดอร์มันรวมโฟลเดอร์หรือแทนที่มันหรือไม่?
Dr_Hope

5

เช่นเดียวกับ Levans ฉันไม่สามารถทำซ้ำสิ่งนี้ แต่คุณได้พิจารณาใช้ rsync ผ่าน ssh แทนหรือไม่ หากคุณกำลังคัดลอกไฟล์จำนวนมาก rsync อาจเป็นตัวเลือกที่ดีกว่า scp มีคำแนะนำที่ดีจำนวนมากที่แนะนำทางออนไลน์เช่นสิ่งเหล่านี้:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

ลิงค์แรกนั้นเกี่ยวข้องกับการสำรองข้อมูลอัตโนมัติผ่าน cron ดังนั้นคำแนะนำบางอย่าง (เช่นการสร้างคีย์ ssh ที่ไม่มีข้อความรหัสผ่าน) อาจไม่เกี่ยวข้องกับคุณ


ที่น่าสนใจฉันไม่ทราบว่าคุณสามารถใช้ rsync ในวิธีการที่ ... เพียงแค่ดูที่หน้าคนอย่างรวดเร็วและดูเหมือนว่าคุณสามารถใช้มันในลักษณะที่คล้ายกันมากในการ scp ด้วย <source_path> และ <user @ host: พารามิเตอร์ dest_path> ฉันไม่แน่ใจ 100% นั่นคือสิ่งที่ฉันต้องการเนื่องจากฉันต้องการคัดลอก / เขียนทับโดยไม่สนใจสถานะของสิ่งที่อยู่ในปลายทาง แต่ก็ยังเป็นความคิดที่ดี :)
code_fodder

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

ฮ่าฮ่า .... ไม่ต้องกังวลเกี่ยวกับการตรวจสอบฉันสามารถทำสิ่งนั้น ... แต่ขอบคุณสำหรับข้อมูล :)
code_fodder

อ่าฉันสามารถหยุดมองไม้ขีดไฟเพื่อเปิดเปลือกตาของฉันได้ ;)
Ben

1
สิ่งนี้สามารถใช้งานได้ แต่เป็นเหมือนการใช้ค้อนขนาดใหญ่ในการตบอย่างรวดเร็ว ;-)
SDsolar

3

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

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