คัดลอกไดเรกทอรีบน Unix


78

ฉันจะคัดลอกโครงสร้างไดเรกทอรี dir1, ไปยัง dir2, (พร้อมไดเรกทอรีย่อยทั้งหมด) บน Unix โดยใช้หน้าต่างเทอร์มินัลได้อย่างไร?


2
"cp -r / dir1 / dir2" ใช่ไหม?
Dinesh Kumar

ใช่ถูกต้องแล้ว คุณอาจต้องการทำเครื่องหมายคำตอบอย่างใดอย่างหนึ่งเป็นโซลูชันของคุณ
qroberts

คำตอบ:


115
cp -rf /source/path/ /destination/path/

-r = เรียกซ้ำคัดลอกไดเรกทอรีย่อยทั้งหมด

-f = force หากไฟล์ปลายทางที่มีอยู่ไม่สามารถเปิดได้ให้ลบออกแล้วลองอีกครั้ง

หมายเหตุคุณควรระวังเมื่อใช้การ-fตั้งค่าสถานะเนื่องจากจะเขียนทับสิ่งที่คุณคัดลอกไป ขอบคุณ @Nifle สำหรับคำแนะนำนี้

คุณอาจต้องการใช้ * wildcard เพื่อคัดลอกไฟล์ทั้งหมดในไดเรกทอรีถ้าคุณต้องการ


11
ฉันไม่เห็นด้วยที่คุณควรใช้fธง -f if an existing destination file cannot be opened, remove it and try again
Nifle

ส่วนตัวฉันใช้แฟล็ก -f เสมอ ไม่ใช่วิธีปฏิบัติที่ดีดังนั้นบางทีคุณพูดถูก
qroberts

ถ้าคุณรู้ว่ามันทำอะไรและคุณรู้ว่าคุณกำลังทำอะไรอยู่มันก็โอเค แต่ในกรณีนี้ผู้ใช้ที่ไม่มีประสบการณ์อาจไม่เหมาะสม
Nifle

@Nifle ใช่ฉันเข้าใจสิ่งที่คุณพูด เพียงแค่ว่าถ้าเขาบังคับมันโอกาสในการทำงานก็จะดีกว่าถ้าเขาไม่ทำ ทุกอย่างขึ้นอยู่กับสิ่งที่คุณทำและคุณเข้าใจในสิ่งที่มันทำ
qroberts

หากคุณใส่บันทึกย่อในคำตอบของคุณเกี่ยวกับการ-fตั้งค่าสถานะว่ามีประโยชน์หากคุณกำลังคัดลอก <source> มากกว่า <dest> (เช่นเดียวกับการเขียนทับสิ่งต่าง ๆ ใน <dest>) ฉันจะถอนมันออกเองและลบคำตอบของฉัน)
Nifle

11

ในขณะที่cp -Rคำตอบนั้นถูกต้อง (BTW กรณีของการตั้งค่าสถานะบน BSD ต้องเป็นทุนทั้งสองได้รับการสนับสนุนบน linux) มีคาถาเก่าที่เกี่ยวข้องกับน้ำมันดิน :

$ tar cf - . | (cd DIR; tar xf - )

ทำไมห่าคุณจะทำอย่างนั้น? เพราะน้ำมันดินมีความเข้าใจที่ค่อนข้างซับซ้อนของลิงก์ทั้งแบบแข็งและเป็นสัญลักษณ์

คุณต้องการคัดลอกเพื่อแทนที่ลิงค์สัญลักษณ์ที่มีอยู่ด้วยลิงค์ที่มีข้อความเหมือนกันหรือไม่? หรือมีลิงก์ไปยังเป้าหมายเดียวกัน (ปรับเส้นทางที่สัมพันธ์กันเพื่อชดเชย) หรือกับสำเนาเป้าหมายของ bitwise?

หากไฟล์สองไฟล์ในต้นฉบับเชื่อมโยงกันอย่างหนักโครงสร้างใหม่ควรมีข้อมูลสองชุดหรือเพียงไฟล์เดียว?

การตัดสินใจการตัดสินใจ น้ำมันดินมีค่าเริ่มต้นที่สมเหตุสมผล แต่ช่วยให้คุณมีความเฉพาะเจาะจงมาก


9

ฉันชอบ

cp -axv source dest

Rsync เป็นอีกหนึ่งเครื่องมือที่ดีสำหรับเรื่องนี้

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