ฉันจะใช้ cp เพื่อคัดลอกไดเรกทอรี แต่ไม่ต้องสนใจไดเรกทอรีย่อยบางอย่างใน Linux


9

เนื่องจากปัญหาฮาร์ดดิสก์ฉันพยายามเปลี่ยนพาร์ติชันจากฮาร์ดดิสก์หนึ่งไปยังอีก ฉันกำลังติดตามบทความhttp://www.ibm.com/developerworks/library/l-partplan.htmlเพื่อทำสิ่งนั้น ในส่วนการคัดลอกฉันต้องการที่จะไม่สนใจไดเรกทอรีย่อยหนึ่งโดยเฉพาะ ฉันจะทำให้สำเร็จได้อย่างไรเมื่อนึกถึงเมื่อคัดลอกฉันจะต้องสงวนกลุ่มเจ้าของและการประทับเวลาไว้ มีข้อมูลประมาณ 700 GB ที่ต้องคัดลอกหากฉันไม่สนใจไดเรกทอรีย่อยที่ต้องการ

คำตอบ:


11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

คุณอาจต้องการ (หรือไม่) ใช้--delเช่นกัน ตรวจสอบหน้าคู่มือ


ใช่นั่นเป็นเคล็ดลับ ได้ผล ..
P Roy

2

ปกติฉันจะใช้cpioดังต่อไปนี้

cd source_dir; find . -depth | cpio -pdmv dest_dir

และเนื่องจากนี่คือท่อส่งคุณสามารถวาง "ตัวกรองการลบ" ไว้ตรงกลาง

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

หรือคุณสามารถแยกสิ่งนี้ออกเป็นหลายขั้นตอน

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

แน่นอนฉันจะทดสอบสิ่งนี้ให้เล็กลงก่อน แต่คุณจะได้ความคิด


0

คุณสามารถเขียนสคริปต์ทุบตีง่าย ๆ ด้วยการวนซ้ำเพื่อข้ามเส้นทางที่คุณไม่ต้องการคัดลอกและคัดลอกที่เหลือ วิธีแก้ปัญหาอื่นอาจทำให้เราแสดงออกอย่างสม่ำเสมอ คุณสามารถอ่านสคริปต์การทุบตีได้ที่นี่ -> http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html การ สอน Regex ที่นี่ -> http: //www.regular-expressions ข้อมูล/


0

คุณสามารถย้าย ( mv) ไดเรกทอรีย่อยขนาดใหญ่ชั่วคราวไปยังตำแหน่งอื่นทำสำเนาจากนั้นเรียกคืนไดเรกทอรีย่อยได้หรือไม่ ฉันไม่เห็นตัวเลือกโดยตรงในcpการทำเช่นนี้


ฉันก็ตรวจสอบคนซีพีไม่มีทางที่จะละเลยการใช้ซีพี ฉันมีข้อมูล 550 GB ในไดเรกทอรีย่อยและ mv ซึ่งอาจใช้เวลาหลายชั่วโมง
P Roy

ฉันคิดว่า mv น่าจะเป็นการดำเนินการที่ค่อนข้างมีต้นทุนต่ำ - อัปเดตการอ้างอิงไปยังข้อมูลมากกว่าที่จะย้ายไปมาบนดิสก์ อย่างน้อยฉันก็พบว่าการเคลื่อนไหวใน Windows นั้นเร็วกว่าการทำสำเนาระบบไฟล์ Linux อาจทำงานแตกต่างไปจากเดิมอย่างสิ้นเชิง
Ash

mv ไปยังฮาร์ดดิสก์เดียวกันนั้นรวดเร็ว แต่เมื่อหนึ่ง mv ข้าม hardisks ฉันคิดว่ามันต้องใช้เวลาเดียวกันกับซีพี
P Roy

ฉันตั้งใจจะย้ายที่ใดที่หนึ่งบนฮาร์ดดิสก์เดียวกันเพื่อนำออกไปแล้วคัดลอกส่วนที่เหลือไปยังดิสก์ระยะไกลจากนั้นย้ายไฟล์ขนาดใหญ่กลับมา นอกเสียจากคุณกำลังคัดลอกดิสก์ทั้งหมดจาก /
Ash

0

ค่อนข้างเป็นวิธีแก้ปัญหาที่น่าเกลียด แต่ ... ทำไมไม่เพียงแค่ cp ทุกอย่างในไดเรกทอรีไม่ใช่แบบเรียกซ้ำแล้วคัดลอกแต่ละไดเรกทอรีไปแบบวนซ้ำ?


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