ทำไมเราใช้ cp เพื่อคัดลอกไฟล์ไม่ใช่ dd (ในยูนิกซ์ - อนุพันธ์)


21

สำหรับการคัดลอกไฟล์ปกติใน * ระวังฉันเคยเห็นคนใช้ cp (เช่น. cp /mnt/mydevice/myfile ~/myfile) เท่านั้น แต่ในที่สุดฉันก็เจอddซึ่งดูเหมือนจะทำสิ่งเดียวกัน ( dd if=/mnt/mydevice/myfile of=~/myfile) ฉันเห็นว่าพวกเขามีพารามิเตอร์ที่แตกต่างกัน (ดูเหมือนว่าดีกว่าเมื่อคัดลอกแบบละเอียด) แต่ปรากฏซ้ำซ้อน เครื่องมือเหล่านี้ทำสิ่งเดียวกันจริง ๆ หรือไม่?


พวกเขาทำสิ่งเดียวกันสำหรับไฟล์ปกติเท่านั้น ddลองยกตัวอย่างเช่นการคัดลอกไดเรกทอรีด้วย
Eddy_Em

... หรืออุปกรณ์ (ชอบ/dev/sda) cpกับ
jpaugh

คำถามของคุณตอบแล้วหรือยัง?
Kruug

@Eddy_Em เกิดอะไรขึ้นเนี่ย?
Pacerier

คำตอบ:


13

เพื่อตอบคำถามหลักของคุณไม่พวกเขาไม่ทำสิ่งเดียวกัน

dd ทำงานกับไฟล์ที่คุณระบุทำให้สามารถคัดลอกข้อมูลระหว่างอุปกรณ์หรือจากอุปกรณ์ไปยังไฟล์ โดยทั่วไปจะใช้สำหรับการย้ายข้อมูลหากอุปกรณ์มีส่วนเกี่ยวข้องโดยเฉพาะ (สร้างภาพ iso จากดิสก์ cd-rom ตัวอย่างเช่น: dd if = / dev / cdrom ของ = mycdrom.iso) หรืออุปกรณ์ดิบสำรอง (บางครั้งใช้ในฐานข้อมูล RAC : dd if = / dev / raw / raw1 of = device_raw1)

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

แหล่ง


3
Ah! ตกลงดังนั้นคัดลอกไฟล์ดิบในขณะที่ cp คัดลอกเนื้อหา (ซึ่งช่วยให้สามารถคัดลอกไดเรกทอรีตัวอย่างโดยไม่ทำลายระบบไฟล์) ขอบคุณ!
232105

5
@Kruug ฉันจะต้องหายไปบางอย่างเพราะผมยังไม่เห็นสิ่งที่cpสามารถทำเช่นนั้นddไม่สามารถ ddสามารถ"ทำซ้ำเนื้อหาไฟล์ไปยังไฟล์ใหม่หรือไปยังตำแหน่งใหม่"และ"การสงวนสิทธิ์ความเป็นเจ้าของการประทับเวลาและโหมด"ใช่ไหม?
Pacerier

3
@Pierier จากสิ่งที่ฉันสามารถเข้าใจcpได้เป็นยูทิลิตี้ที่มุ่งเน้นในขณะที่ddทั่วไปมากขึ้น ddสามารถทำทุกสิ่งcpได้ แต่cpทำได้เพียงบางอย่างที่ddทำได้
Kruug

ฉันไม่คิดว่าอธิบายความแตกต่างชัดเจน enoug cp อะไรที่ไม่สามารถทำได้และววสามารถทำได้? และวิธีอื่น ๆ รอบ?
สาบาน

9

พวกเขาทำสิ่งเดียวกันนอกจากคุณจะระบุเป็นหนึ่งในตัวเลือกที่จะ ddซึ่งข้อ จำกัด ที่มีการคัดลอกไบต์เช่นseekหรือskipหรือcountหรือถ้าคุณใช้ ตัวเลือกในการกลายพันธุ์ไบต์เช่นdd convหากคุณไม่ได้ใช้หนึ่งในตัวเลือกเหล่านี้ไป ddและเป็นเพียงการใช้ตัวเลือกที่มองเห็นได้มากกว่าปกติเช่นif, of, bsแล้วสาธารณูปโภคทั้งทำสิ่งเดียวกัน: เปิดไฟล์ทั้งอ่านจากการป้อนข้อมูลที่เขียนไปยังการส่งออกจนกว่าจะเข้าเป็นหมด หรือเอาท์พุทไม่สามารถยอมรับไบต์เพิ่มเติม

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


มากกว่าหรือน้อยกว่านี้ ... หากคุณใช้ = ชะตาขึ้นอยู่กับอุปกรณ์ที่เป็นอยู่ปัญหาบางอย่างอาจเกิดขึ้นเช่น USB แฟลชดิสก์ ฉันค้นพบว่าฉันต้องใช้ destiny >> และลบพารามิเตอร์ = xxx เพื่อให้ใช้งานได้ ถ้าฉันใช้ = โชคชะตาปัญหาแปลก ๆ เกิดขึ้นเพราะฉันทำงานด้วยการข้ามและ iflags = skip_bytes ธง ... ดังนั้นไม่มีความเชื่อโชคลางมาก จำเป็นต้องมีการดูแลและทดสอบเนื่องจาก = โชคชะตาอาจทำงานไม่ถูกต้องในบางสถานการณ์ที่ >> โชคชะตาราบรื่น ฉันเขียนสคริปต์เพื่อบันทึกไฟล์ขนาดใหญ่เพื่อให้พร้อมกับขั้นตอน สำเนา 400MB เต็มใช้สำหรับจัดระเบียบดิสก์พาร์ติชัน sdcard
Sergio Abreu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.