ความแตกต่างระหว่าง cp -r และ cp -a


174

ฉันกำลังมองหาความแตกต่างระหว่างและcp -r cp -a"เรียกซ้ำ" หมายถึงอะไรในแง่ของการคัดลอกไฟล์จากโฟลเดอร์


62
บางคนกำลังมองหาคำอธิบายที่ดีกว่าในหน้าคนเพราะมันไม่ชัดเจนว่าคำอธิบายนั้นหมายถึงอะไร ฉันต้องขุดหลายครั้งและทดสอบ / ทดสอบเพื่อหาว่าเกิดอะไรขึ้นกับคำสั่งเฉพาะ หน้า man ของ grep ทำให้ฉันสับสนได้ทุกวัน
โจ

2
ฉันเข้าใจความคับข้องใจของคุณได้ แต่ imo วิธีที่ดีที่สุดในการเรียนรู้คือการทดสอบและทดสอบ
สามเท่าใน

37
หรือเรียนรู้โดยการถามคำถามที่นี่รับคำตอบในแบบที่คุณเข้าใจแล้วมีความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่และวิธีทดสอบและทดสอบ โปรดจำไว้ว่าเหมาะกับคุณบ่อย ๆ ไม่ได้ผลสำหรับฉัน ฯลฯ
Will Lanni

คำตอบ:


198

หมายถึงการเรียกซ้ำที่cpคัดลอกเนื้อหาของไดเรกทอรีและหากไดเรกทอรีมีไดเรกทอรีย่อยก็จะถูกคัดลอก (เรียกซ้ำ) ด้วย โดยไม่ต้อง-Rที่cpไดเรกทอรีคำสั่งข้าม -rเหมือนกันกับ-Rบน Linux มันแตกต่างกันในบางกรณีของขอบในรูปแบบ unix อื่น ๆ

โดยค่าเริ่มต้นcpสร้างไฟล์ใหม่ที่มีเนื้อหาเหมือนกับไฟล์เก่าและการอนุญาตเดียวกัน แต่ จำกัด โดยumask ; การคัดลอกนั้นมาจากวันที่ในการทำสำเนาและเป็นของผู้ใช้ที่ทำการทำสำเนา ด้วย-pตัวเลือกการคัดลอกจะมีเวลาแก้ไขเหมือนกันเวลาเข้าถึงเดียวกันและการอนุญาตเดียวกันกับต้นฉบับ นอกจากนี้ยังมีเจ้าของและกลุ่มเดียวกันกับต้นฉบับหากผู้ใช้ทำสำเนามีสิทธิ์ในการสร้างไฟล์ดังกล่าว

-aตัวเลือกหมายความ-Rและ-pบวกไม่กี่ตัวเลือกการรักษาอื่น ๆ มันพยายามที่จะทำสำเนาที่ใกล้เคียงกับของดั้งเดิมที่สุดเท่าที่จะเป็นไปได้: แผนผังไดเรกทอรีเดียวกัน, ประเภทไฟล์เดียวกัน, เนื้อหาเดียวกัน, ข้อมูลเมตาเดียวกัน (เวลา, สิทธิ์, คุณลักษณะเพิ่มเติม ฯลฯ )


35
โดยพื้นฐานแล้วถ้าคุณไม่ต้องการอะไรเป็นพิเศษคุณก็ไม่จำเป็น-rเพราะ-a(สำหรับarchive) นั้นปลอดภัยที่สุดและอาจเป็นสิ่งที่คุณคาดว่าจะเกิดขึ้นเสมอ
am

2
@ams ใช่นั่นเป็นบทสรุปที่ดี เพียงสาเหตุที่จะใช้-rเป็นเพราะคุณอยู่ในบางส่วนที่แตกต่างยูนิกซ์ลินุกซ์อื่น ๆ นอกเหนือจากที่ไม่ได้และโดยทั่วไปคุณต้องการใช้-a หรือcp -rp rsync -a
Gilles

บางครั้งการอนุญาตจะอนุญาต -r แต่ไม่ใช่ -a
DrCord

ไม่ใช่ -r ไม่ใช่ -R ไม่ทำงานใน Ubuntu 18
Arkady

16

ตัวเลือก -r หรือ -R สำหรับ "recursive" หมายความว่ามันจะคัดลอกไฟล์ทั้งหมดรวมถึงไฟล์ที่อยู่ในโฟลเดอร์ย่อย

ตัวเลือก - ตามที่ระบุไว้เป็นเช่นเดียวกับ -dR ซึ่งหมายความว่ามันจะรักษาลิงค์เช่นเดียวกับการคัดลอกเนื้อหาของไดเรกทอรีย่อย ความหมายของการรักษาลิงก์คือมันจะไม่ติดตามลิงก์ในขณะที่คัดลอกซ้ำ

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