คำถามติดแท็ก dd

dd เป็นยูทิลิตี้ดั้งเดิมสำหรับการคัดลอกข้อมูลไบนารี

13
ฉันจะรู้ได้อย่างไรว่า dd ยังทำงานอยู่หรือไม่
ฉันไม่ได้ใช้ddทุกอย่างมาก แต่จนถึงตอนนี้มันยังไม่ได้ล้มเหลว ตอนนี้ฉันต้องใช้ddเวลานานกว่า 12 ชั่วโมง - ฉันกำลังเขียนรูปภาพกลับไปที่ดิสก์ที่มาจาก - และฉันเริ่มกังวลเล็กน้อยเนื่องจากฉันสามารถddถ่ายภาพจากดิสก์ไปยังภาพได้ในเวลาประมาณ 7 ชั่วโมง ฉันใช้ OSX 10.6.6 บน MacBook กับ Core 2 Duo ที่ 2.1 กิกะเฮิร์ตซ์ / core พร้อม RAM ขนาด 4GB ฉันกำลังอ่านจาก. dmg บนฮาร์ดไดรฟ์ขนาด 7200rpm (ไดรฟ์สำหรับบูต) และฉันกำลังเขียนไปยังไดรฟ์ 7200rpm ที่เชื่อมต่อผ่านตัวเชื่อมต่อ SATA-to-USB ฉันปล่อยให้ขนาดบล็อกเป็นค่าเริ่มต้นและภาพประมาณ 160GB แก้ไข: และหลังจาก 14 ชั่วโมงของความเครียดที่บริสุทธิ์ddทำงานได้อย่างสมบูรณ์แบบหลังจากทั้งหมด ครั้งต่อไปแม้ว่าฉันจะเรียกใช้ผ่านและติดตามด้วยpv straceขอบคุณทุกคนสำหรับความช่วยเหลือของคุณ

8
dd vs cat - dd ยังคงเกี่ยวข้องกันหรือไม่?
ฉันเพิ่งตระหนักว่าเราสามารถใช้งานได้catมากddและเร็วกว่าจริงdd ฉันรู้ว่าddมันมีประโยชน์ในการจัดการกับเทปที่ขนาดของบล็อกมีความสำคัญในความถูกต้องไม่ใช่แค่ประสิทธิภาพ แต่ในวันนี้มีสถานการณ์ที่ddสามารถทำอะไรบางอย่างที่catไม่สามารถ? (ที่นี่ฉันจะคำนึงถึงความแตกต่างด้านประสิทธิภาพที่น้อยกว่า 20% ที่ไม่เกี่ยวข้อง) ตัวอย่างคอนกรีตจะดี!
122 dd  cloning  cat 

20
วิธีที่เร็วที่สุดในการส่งข้อมูลจำนวนมากระหว่างคอมพิวเตอร์สองเครื่องคืออะไร [ปิด]
นี่เป็นสถานการณ์ที่ฉันพบบ่อยใน: ฉันมีเซิร์ฟเวอร์ต้นทางที่มีฮาร์ดไดรฟ์ 320GB อยู่ภายในนั้นและ RAM 16 GB ( รายละเอียดที่แน่นอนมีให้ที่นี่แต่เนื่องจากนี่เป็นปัญหาที่ฉันพบบ่อยในเครื่องอื่นเช่นกันฉันต้องการคำตอบสำหรับการทำงานใด ๆ เครื่อง Linux ที่ "สมเหตุสมผล") ฉันมีเซิร์ฟเวอร์สำรองที่มีพื้นที่ฮาร์ดไดรฟ์หลายเทราไบต์ ( รายละเอียดที่แน่นอนที่นี่ดูข้อจำกัดความรับผิดชอบด้านบน) ฉันต้องการถ่ายโอนข้อมูล 320GB จากเซิร์ฟเวอร์ต้นทางไปยังเซิร์ฟเวอร์เป้าหมาย (โดยเฉพาะข้อมูลจาก/dev/sda) คอมพิวเตอร์สองเครื่องนั้นอยู่ติดกันดังนั้นฉันจึงสามารถใช้สายเคเบิลระหว่างกันได้ ฉันอยู่บน LAN และฉันใช้เราเตอร์ใหม่ ishซึ่งหมายความว่าความเร็วเครือข่ายของฉันควร "ดีเลิศ" เป็น 1000Mbit ใช่ไหม ความปลอดภัยไม่ใช่ปัญหา ฉันอยู่ในเครือข่ายท้องถิ่นและฉันเชื่อว่าทุกเครื่องในเครือข่ายรวมถึงเราเตอร์ (ไม่บังคับ)ฉันไม่จำเป็นต้องมีการตรวจสอบข้อมูลที่ลงนาม แต่การตรวจสอบข้อผิดพลาดพื้นฐาน (เช่นแพ็คเก็ตที่ถูกทิ้งหรือไดรฟ์ไม่สามารถอ่านได้) ควรตรวจพบได้แทนที่จะหายเข้าไปในเอาต์พุต ฉันค้นหาคำถามนี้ทางออนไลน์และทดสอบหลายคำสั่ง สิ่งที่ปรากฏบ่อยที่สุดคือ: ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz คำสั่งนี้พิสูจน์แล้วว่าช้าเกินไป (มันวิ่งไปหนึ่งชั่วโมงมีข้อมูลประมาณ 80GB …

3
วิธี dd รีโมตดิสก์โดยใช้ SSH บนเครื่องโลคัลและบันทึกลงในโลคัลดิสก์
ฉันจะสร้างการสำรองข้อมูลของดิสก์ระยะไกลโดยใช้ SSH บนเครื่องของฉันและบันทึกลงในดิสก์ภายในเครื่องได้อย่างไร ฉันได้ลองทำสิ่งต่อไปนี้แล้ว: ssh hostname@my.ip.address "sudo dd if=/dev/sdX " | \ dd of=/home/username/Documents/filename.image` อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้: ไม่มี tty ปัจจุบันและไม่ได้ระบุโปรแกรม askpass
85 ssh  hard-disk  remote  dd 

5
มีวิธีในการกำหนดค่าที่เหมาะสมที่สุดสำหรับพารามิเตอร์ bs เป็น dd หรือไม่?
ในบางครั้งฉันเห็นความคิดเห็นออนไลน์ตามบรรทัดของ "ให้แน่ใจว่าคุณตั้งค่า 'bs =' เพราะค่าเริ่มต้นจะใช้เวลานานเกินไป" และประสบการณ์ที่ไม่มีหลักวิทยาศาสตร์ของฉันเอง "ซึ่งดูเหมือนจะใช้เวลานานกว่าที่อื่น เวลาเมื่อสัปดาห์ที่แล้ว "ดูเหมือนจะทนได้ ดังนั้นเมื่อใดก็ตามที่ฉันใช้ 'dd' (โดยทั่วไปจะอยู่ในช่วง 1-2GB) ฉันแน่ใจว่าได้ระบุพารามิเตอร์ bytes ประมาณครึ่งหนึ่งที่ฉันใช้ค่าที่ระบุในคู่มือออนไลน์ที่ฉันกำลังคัดลอกมา เวลาที่เหลือฉันจะเลือกหมายเลขที่เหมาะสมจากรายการ 'fdisk -l' สำหรับสิ่งที่ฉันถือว่าเป็นสื่อที่ช้ากว่า (เช่นการ์ด SD ที่ฉันเขียน) สำหรับสถานการณ์ที่กำหนด (ประเภทสื่อขนาดบัสหรืออะไรก็ตามที่สำคัญ) มีวิธีการกำหนดค่า "ดีที่สุด" หรือไม่? มันง่ายที่จะกำหนด? ถ้าไม่มีวิธีง่ายๆในการรับ 90-95% จากที่นั่นหรือไม่? หรือ "เพียงแค่เลือกสิ่งที่ใหญ่กว่า 512" แม้แต่คำตอบที่ถูกต้องหรือไม่ ฉันคิดว่าจะลองทำการทดสอบด้วยตัวเอง แต่ (นอกเหนือจากการทำงานมาก ๆ ) ฉันไม่แน่ใจว่าปัจจัยใดที่ส่งผลกระทบต่อคำตอบดังนั้นฉันจึงไม่รู้วิธีออกแบบการทดสอบที่ดี

6
เป็นไปได้หรือไม่ที่จะเมานต์รูปภาพ dz ที่ถูกบีบอัดใน gzip?
ฉันชอบสร้างการสำรองข้อมูลรูปภาพเป็นครั้งแรกที่ฉันสำรองข้อมูลระบบ หลังจากครั้งแรกนี้ฉันใช้ rsync เพื่อสำรองข้อมูลเพิ่มเติม สำรองรูปภาพปกติของฉันเป็นดังนี้: เมานต์และปล่อยพื้นที่ว่างให้ว่าง: dd if=/dev/zero of=temp.dd bs=1M rm temp.dd ขยายและ dd ไดรฟ์ในขณะที่บีบอัด dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz เพื่อให้ระบบกลับสู่ปกติฉันมักจะทำ gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K นี่เป็นเรื่องตรงไปตรงมาและทำให้ฉันสามารถบันทึก 'ไดรฟ์ทั้งหมด' ได้ แต่เพียงประหยัดพื้นที่ที่ใช้ นี่คือปัญหา ให้บอกว่าฉันทำข้างต้น แต่ไม่ได้อยู่ในระบบที่สะอาดและไม่ได้รับการสำรองข้อมูล rsync ในไม่ช้าและมีไฟล์ที่ฉันต้องการเข้าถึงที่อยู่ในภาพ สมมติว่าฉันไม่มีพื้นที่เก็บข้อมูลเพื่อคลายซิปและ dd อิมเมจลงในไดรฟ์ แต่ต้องการเมานต์อิมเมจเพื่อแยกไฟล์แต่ละไฟล์ออกไป .... มันเป็นไปได้ไหม? ปกติแล้วจะไม่มีการบีบอัดภาพ dd …

7
วิธีที่ดีที่สุดในการลบไบต์จากจุดเริ่มต้นของไฟล์?
วันนี้ฉันต้องลบ 1131 ไบต์แรกออกจากไฟล์ข้อความ / ไบนารีผสม 800MB ซึ่งเป็นการถ่ายโอนข้อมูลการโค่นล้มที่กรองแล้วที่ฉันกำลังแฮกสำหรับพื้นที่เก็บข้อมูลใหม่ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? เริ่มต้นด้วยฉันพยายาม dd bs=1 skip=1131 if=filtered.dump of=trimmed.dump แต่หลังจากข้ามการคัดลอกนี้ส่วนที่เหลือของไฟล์ไบต์ในเวลาคือช้ามาก ในตอนท้ายฉันออกกำลังกายฉันต้องการ 405 ไบต์เพื่อปัดเศษนี้ขึ้นไปสามบล็อกจาก 512 ซึ่งฉันสามารถข้าม dd if=/dev/zero of=405zeros bs=1 count=405 cat 405zeros filtered.dump | dd bs=512 skip=3 of=trimmed.dump สิ่งใดเสร็จสมบูรณ์อย่างรวดเร็ว แต่ต้องมีวิธีที่ง่ายกว่า / ดีกว่า มีเครื่องมืออื่นที่ฉันลืมไปหรือไม่? ขอบคุณ!
61 dd 

2
เมื่อไหร่ที่เหมาะสำหรับการคัดลอกข้อมูล (หรือเมื่อมีการอ่าน () และเขียน () บางส่วน)
ฉบับย่อ:ในสถานการณ์ใดที่ddปลอดภัยที่จะใช้สำหรับการคัดลอกข้อมูลหมายความว่าปลอดภัยไม่มีความเสี่ยงจากการทุจริตเนื่องจากการอ่านหรือเขียนบางส่วน? รุ่นยาว - บทนำ: ddมักใช้เพื่อคัดลอกข้อมูลโดยเฉพาะจากหรือไปยังอุปกรณ์ ( ตัวอย่าง ) บางครั้งก็นำมาประกอบคุณสมบัติลึกลับของความสามารถในการเข้าถึงอุปกรณ์ในระดับที่ต่ำกว่าเครื่องมืออื่น ๆ (เมื่ออยู่ในความเป็นจริงมันเป็นแฟ้มอุปกรณ์ที่ทำมายากล) - ยังเป็นสิ่งเดียวกับdd if=/dev/sda บางครั้งคิดจะเร็ว แต่สามารถเอาชนะมันในทางปฏิบัติ อย่างไรก็ตามมีคุณสมบัติที่เป็นเอกลักษณ์ที่ทำให้มันมีประโยชน์อย่างแท้จริงบางครั้งcat /dev/sdaddcatdd ปัญหา: ไม่ได้ในความเป็นจริงเช่นเดียวกับdd if=foo of=bar cat <foo >barเมื่อวันที่unices¹ที่สุดทำให้สายเดียวที่จะdd read()(ฉันพบว่าPOSIXคลุมเครือในสิ่งที่ถือเป็นการ "อ่านบล็อกอินพุต" ในdd) หากread()ส่งคืนผลลัพธ์บางส่วน (ซึ่งตาม POSIX และเอกสารอ้างอิงอื่น ๆ จะอนุญาตให้ยกเว้นว่าเอกสารการใช้งานระบุไว้เป็นอย่างอื่น) บล็อกบางส่วนจะถูกคัดลอก write()ว่าปัญหาเดียวกันที่มีอยู่สำหรับ ข้อสังเกต : ในทางปฏิบัติฉันพบว่าddสามารถรับมือกับอุปกรณ์บล็อกและไฟล์ปกติได้ แต่นั่นอาจเป็นเพราะฉันไม่ได้ออกกำลังกายมากนัก เมื่อพูดถึงท่อก็ไม่ยากที่จะใส่ddผิด ตัวอย่างเช่นลองใช้รหัสนี้ : yes | dd of=out bs=1024k count=10 และตรวจสอบขนาดของoutไฟล์ …
60 io  dd 

4
dd หมายถึงอะไร
ฉันรู้ดีว่าสิ่งที่คำสั่งไม่ แต่man dd, info ddบอกฉัน: 'แปลงและคัดลอกไฟล์' เช่นเดียวกับGNU coreutils Google บอกว่ามันเป็นตัวย่อของทุกอย่างระหว่างยาและแสลงเว็บแชทที่ไม่ดี ยกเว้นบางคนที่บอกว่ามันหมายถึง 'data destroyer' สิ่งที่ใช้ในนิติวิทยาศาสตร์ของ PC - ฉันจะตกใจถ้า dd ของฉันทำลายข้อมูลของฉัน ! ความเข้าใจใด ๆ :-) ปรับปรุง : แน่นอนฉันต้องตรวจสอบไฟล์ศัพท์แสง : Unix dd (1) ได้รับการออกแบบด้วยไวยากรณ์ตัวเลือกคำหลักที่แปลกประหลาดไม่ใช่ Unixy เตือนความทรงจำของ IBM System / 360 JCL (ซึ่งมีข้อกำหนด 'ชุดข้อมูลนิยาม' ของ DD สำหรับอุปกรณ์ I / O) ยังฟังดูไม่ชัดเจน แต่ก็พูดว่า: แม้ว่าคำสั่งจะเติมเต็มความต้องการ แต่การออกแบบส่วนต่อประสานนั้นเป็นการเล่นตลกอย่างชัดเจน …
42 dd  command-names 

8
โคลนพาร์ติชั่นหรือฮาร์ดไดรฟ์ทั้งไฟล์
ฉันชอบโคลนพาร์ติชันทั้งหมดหรือฮาร์ดไดรฟ์ทั้งหมดลงบนดิสก์ภายนอกที่มีขนาดใหญ่กว่า แต่ต้องการสร้างไฟล์ที่กระจัดกระจาย ฉันมักจะใช้ddสำหรับการโคลน แต่มันไม่รองรับไฟล์ที่กระจัดกระจาย เป็นวิธีแก้ปัญหาฉันใช้สิ่งที่ชอบ: cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw อย่างไรก็ตามนี่เป็นเรื่องยุ่งยากเล็กน้อยสำหรับรสนิยมของฉันและไม่อนุญาตให้ฉันดำเนินการต่อหากยกเลิก เป็นเรื่องตลกที่มีเครื่องมือ NTFS สำหรับสิ่งนี้ ( ntfsclone) แต่ไม่มีเครื่องมือดังกล่าวสำหรับระบบไฟล์ดั้งเดิมของ Linux (EXT2-4) มีเครื่องมือที่ดีกว่าสำหรับสิ่งนี้เช่นddตัวแปรที่มีการสนับสนุนเบาบาง? ฉันไม่ได้มองหาซอฟต์แวร์ที่เป็นกรรมสิทธิ์สำหรับการสำรองข้อมูลดิสก์ แต่เพียงต้องการทำสำเนาโคลนแบบเบาบางซึ่งฉันสามารถติดตั้งเป็นอุปกรณ์วนรอบหากจำเป็น

7
ฉันจะระงับเอาต์พุต dd ได้อย่างไร
ddฉันมีสคริปต์ทุบตีที่สร้างไฟล์โดยใช้ ปัญหาคือ dd ส่งเอาต์พุตจำนวนมากที่ไปยุ่งกับเอาต์พุตของสคริปต์ของฉัน การค้นหารอบ ๆ ฉันพบวิธีแก้ปัญหาแล้ว: dd if=boot1h of="/dev/r$temp1" >& /dev/null มีทางเลือกอื่นหรือเปลี่ยนเส้นทางไปสู่/dev/nullทางเดียวหรือไม่?
35 bash  sudo  su  dd 

5
สำเนา DD เต็มรูปแบบจาก hdd เป็น hdd
คำถามเดิม: หากฉันมีฮาร์ดไดรฟ์ 2 ตัวที่เหมือนกันมีคุณสมบัติดังต่อไปนี้: SATA 6.0 Gb / s 5400 รอบต่อนาที 3TB การคัดลอก dd แบบสมบูรณ์ควรใช้เวลานานเท่าใดจึงจะสมบูรณ์ จนถึงตอนนี้มันทำงานมา 5 ชั่วโมงและยังคง ... ฉันใช้ Linux Ubuntu 12.04 64 บิตและคำสั่งที่ฉันใช้คือ: dd if=/dev/sdb of=/dev/sdc อัปเดต: 1 ตอนนี้ฉันสามารถดูความคืบหน้าได้และมันใช้เวลา 6+ ชั่วโมงในการคัดลอก 430GB HDD คือ 3TB ... ไม่มีวิธีที่เร็วกว่าในการทำเช่นนี้? อัปเดต: 2 ดูเหมือนว่าจะดีกว่าเมื่อก่อน (ขอบคุณ Groxxda สำหรับคำแนะนำ): sudo dd if=/dev/sdb bs=128K | …
34 hard-disk  dd  cloning 

2
การปรับปรุงไบนารีด้วย dd
ฉันได้อ่านคำพูดนี้ (ด้านล่าง) หลายครั้งล่าสุดที่นี่และฉันประหลาดใจอย่างต่อเนื่องว่าddจะใช้ในการแก้ไขสิ่งใดให้คอมไพเลอร์: ระบบ Unix ที่ฉันใช้ที่โรงเรียนเมื่อ 30 ปีก่อนมีข้อ จำกัด ในเรื่อง RAM และพื้นที่ดิสก์ โดยเฉพาะอย่างยิ่ง/usr/tmpระบบไฟล์มีขนาดเล็กมากซึ่งนำไปสู่ปัญหาเมื่อมีคนพยายามรวบรวมโปรแกรมขนาดใหญ่ แน่นอนว่านักเรียนไม่ควรเขียน "โปรแกรมขนาดใหญ่" อยู่ดี โปรแกรมขนาดใหญ่มักจะคัดลอกซอร์สโค้ดจาก "ที่ไหนสักแห่ง" พวกเราหลายคนคัดลอก/usr/bin/ccไปยัง/home/<myname>/ccและใช้ddเพื่อแก้ไขไบนารีเพื่อใช้/tmpแทน/usr/tmpซึ่งใหญ่กว่า แน่นอนว่าสิ่งนี้ทำให้ปัญหาแย่ลง - พื้นที่ดิสก์ที่ครอบครองโดยสำเนาเหล่านี้มีความสำคัญในปัจจุบันและ/tmpเต็มไปด้วยสิ่งนี้เป็นประจำทำให้ผู้ใช้รายอื่นไม่สามารถแก้ไขไฟล์ได้ หลังจากที่พวกเขาพบว่าเกิดอะไรขึ้นผู้ดูแลระบบก็ทำchmod go-r /bin/* /usr/bin/* ซึ่ง "แก้ไข" ปัญหาและลบสำเนาของคอมไพเลอร์ C ทั้งหมดของเรา (เหมืองเน้น) ddคนหน้าไม่พูดอะไรเกี่ยวกับปะและไม่คิดว่ามันอาจจะเป็นใหม่วัตถุประสงค์ที่จะทำต่อไปนี้ ไบนารีสามารถได้รับการแก้ไขด้วยddหรือไม่ มีความสำคัญทางประวัติศาสตร์ในเรื่องนี้หรือไม่?
32 dd  history  patch 

2
กำลังวิ่งวว ทำไมทรัพยากรไม่ว่าง
ฉันเพิ่งฟอร์แมตการ์ด microSD และต้องการเรียกใช้ddคำสั่ง น่าเสียดายที่ddคำสั่งล้มเหลว: $ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2 dd: /dev/rdisk2: Resource busy $ ทุกคนบนอินเทอร์เน็ตบอกว่าฉันต้องยกเลิกการต่อเชื่อมดิสก์ก่อน แน่นอนว่าสามารถทำได้และไปต่อ แต่ฉันต้องการที่จะเข้าใจว่าทำไม / สิ่งที่แน่นอนใน OS X ทำให้อุปกรณ์ไม่ว่าง ? ฉันจะวินิจฉัยสิ่งนี้ได้อย่างไร จนถึงตอนนี้ฉันพยายาม: รายการไฟล์ที่เปิดอยู่: $ lsof /dev/disk2 $ lsof /dev/disk2s1 $ นอกจากนี้: $ lsof /Volumes/UNTITLED $ รายชื่อผู้ใช้ที่ทำงานกับไฟล์: $ fuser -u /dev/disk2 /dev/disk2: $ fuser -u /dev/disk2s1 /dev/disk2s1: …
31 osx  dd  sd-card  resources 

4
Benchmark ssd บน linux: วิธีการวัดสิ่งเดียวกันกับ crystaldiskmark ทำใน windows
ฉันต้องการมาตรฐาน ssd (อาจมีระบบไฟล์ที่เข้ารหัส) และเปรียบเทียบกับมาตรฐานที่ทำโดย crystaldiskmark บน windows ดังนั้นฉันจะวัดประมาณสิ่งเดียวกันกับ crystaldiskmark ทำอย่างไร สำหรับแถวแรก (Seq) ฉันคิดว่าฉันสามารถทำอะไรได้บ้าง LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc sudo su -c "echo 3 > /proc/sys/vm/drop_caches" LC_ALL=C dd if=tempfile of=/dev/null bs=1M count=1024 แต่ฉันไม่แน่ใจเกี่ยวกับddพารามิเตอร์ สำหรับการสุ่ม 512KB, 4KB, 4KB (ความลึกคิว = 32) การอ่าน / เขียนการทดสอบความเร็วฉันไม่มีความคิดใด ๆ ในการทำซ้ำการวัดใน linux? แล้วฉันจะทำสิ่งนี้ได้อย่างไร สำหรับการทดสอบการอ่านความเร็วสิ่งที่ชอบsudo hdparm …

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