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

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

4
ทำไม dd จาก / dev / random ให้ขนาดไฟล์ต่างกัน
ฉันใช้คำสั่งต่อไปนี้ในระบบอูบุนตู: dd if=/dev/random of=rand bs=1K count=2 อย่างไรก็ตามทุกครั้งที่รันฉันจะพบว่าไฟล์มีขนาดแตกต่างกัน ทำไมนี้ ฉันจะสร้างไฟล์ขนาดที่กำหนดซึ่งเต็มไปด้วยข้อมูลแบบสุ่มได้อย่างไร
26 linux  dd  random 

2
อะไรคือความแตกต่างระหว่าง 'bs', 'count' และ 'ค้นหา' ในคำสั่ง dd?
ฉันได้อ่านคำแนะนำและโพสต์ฟอรั่มที่อธิบายถึงวิธีการใช้งานจำนวนมากddแต่สิ่งหนึ่งที่ฉันได้สังเกตเห็นคือคนที่มักจะใช้ค่าที่แตกต่างสำหรับbs=, count=และseek=สวิทช์ ได้โปรดใครสักคนอธิบายสิ่งที่สวิตช์เหล่านี้ทำอย่างถูกต้อง (หน้าคนไม่ละเอียดมาก) และอธิบายว่าการตั้งค่าที่ดีที่สุดสำหรับพวกเขาสำหรับงานต่าง ๆ เช่นการสร้างไฟล์จาก / dev / random หรือ / dev / ศูนย์และการเขียนทับ พาร์ติชันและไดรฟ์ภายนอก
24 dd 

2
สร้างคอนเทนเนอร์อิมเมจไฟล์
ฉันต้องการสร้างไฟล์ 100GB เพื่อใช้เป็นระบบไฟล์ ไฟล์จะถูกเก็บไว้ในโวลุ่มที่เข้ารหัสดังนั้นไฟล์ / ระบบไฟล์เองจึงไม่จำเป็นต้องเข้ารหัส (เพิ่มเติม) การค้นหาได้เปิดเผยวิธีการต่าง ๆ ในการทำเช่นนี้ บางคนใช้losetupไม่ได้ ต่อไปนี้เป็นวิธีการที่ยอมรับได้หรือไม่? $ dd if=/dev/zero of=~/theFile.img bs=1M count=10240 $ mkfs.ext4 ~/theFile.img # will prompt about block special device $ sudo mount -o loop ~/theFile.img /media/mountPoint
23 filesystems  dd 

4
ความแตกต่างระหว่างคำสั่ง dd สองคำนี้คืออะไร
ความแตกต่างระหว่างสองddคำสั่งที่มีความแตกต่างbsและcountค่าต่าง ๆตราบใดที่คำสั่งนั้นคูณด้วยเหมือนกัน ตัวอย่างเช่น: dd if=/dev/random of=aa bs=1G count=2 dd if=/dev/random of=aa bs=2G count=1
23 dd 

5
การบีบอัดสตรีมแบบทันทีที่ไม่กระจายไปสู่ทรัพยากรฮาร์ดแวร์?
ฉันมีพื้นที่ว่างบนดิสก์ 200 GB, RAM 16 GB (ที่เดสก์ท็อปและเคอร์เนลประมาณ ~ 1 GB) และ swap 6 GB ฉันมี SSD ภายนอก 240 GB ที่มี 70 GB ใช้1และที่เหลือฟรีซึ่งฉันต้องสำรองข้อมูลลงดิสก์ โดยปกติแล้วฉันต้องการdd if=/dev/sdb of=Desktop/disk.imgดิสก์ก่อนแล้วจึงบีบอัด แต่การสร้างอิมเมจก่อนไม่ใช่ตัวเลือกเนื่องจากการทำเช่นนั้นจะต้องใช้พื้นที่ดิสก์มากกว่าที่ฉันมีแม้ว่าขั้นตอนการบีบอัดจะส่งผลให้พื้นที่ว่างถูกบีบอัดดังนั้น ไฟล์เก็บถาวรสุดท้ายสามารถใส่ลงในดิสก์ของฉันได้อย่างง่ายดาย ddเขียนไป STDOUT โดยค่าเริ่มต้นและgzipสามารถอ่านได้จาก STDIN ดังนั้นในทฤษฎีฉันจะเขียนdd if=/dev/sdb | gzip -9 -แต่gzipจะใช้เวลานานมากในการอ่านไบต์กว่าddสามารถผลิตได้ จากman pipe: ข้อมูลที่เขียนไปยังปลายการเขียนของไพพ์จะถูกบัฟเฟอร์โดยเคอร์เนลจนกว่าจะถูกอ่านจากการอ่านที่ปลายของไพพ์ ฉันเห็นภาพความ|เป็นเหมือนไพพ์จริง - แอปพลิเคชั่นตัวหนึ่งผลักข้อมูลเข้าและอีกอันนำข้อมูลออกจากคิวของไพพ์โดยเร็วที่สุด จะเกิดอะไรขึ้นเมื่อโปรแกรมทางด้านซ้ายเขียนข้อมูลได้เร็วกว่าอีกด้านหนึ่งของไปป์สามารถหวังที่จะประมวลผลได้ มันจะทำให้เกิดการใช้หน่วยความจำมากหรือการแลกเปลี่ยนหรือเคอร์เนลจะพยายามสร้าง FIFO บนดิสก์จึงเติมดิสก์? หรือมันจะล้มเหลวSIGPIPE Broken …
23 pipe  dd  compression  gzip 

4
บังคับการไม่ให้แคชหรือไม่อ่านจากแคช
ฉันกำลังทำงานกับระบบฝังตัวด้วยรุ่น busybox ของวว ฉันพยายามทดสอบการลบไดรฟ์จากยูทิลิตีภายนอกบางตัว แต่ dd ไม่ได้อ่านจากแผ่นดิสก์อีกครั้งหลังจากการลบ แต่แสดงให้ฉันเห็นว่าข้อมูลแคช ฉัน จำกัด ให้แคบลงเป็น dd เมื่อฉันทำ dd เริ่มต้นดูข้อมูลรีสตาร์ทระบบของฉันเพื่อล้างแคชทำการลบแล้ววิ่ง dd อีกครั้งโดยมีศูนย์ทั้งหมด อย่างไรก็ตามถ้าฉันทำการตั้งค่าจากโรงงานให้ลบไดรฟ์และทำ dd อีกครั้งโดยไม่ต้องเริ่มระบบใหม่จะไม่แสดงค่าศูนย์ทั้งหมดให้ฉันจนกว่าจะรีสตาร์ท ฉันได้อ่านใน GNU manpage ที่ dd สนับสนุน iflag opt ด้วยการตั้งค่าสถานะ nocache แต่ busybox ไม่สนับสนุนตัวเลือกนั้นเพื่อให้เป็นไปไม่ได้ คำถามของฉันคือฉันจะบังคับให้ dd อ่านจากดิสก์อีกครั้งแทนที่จะเป็นจากแคชได้อย่างไร
22 linux  dd 

2
ควรใช้ cat, dd, pv หรือโพรซีเดอร์อื่นเพื่อคัดลอกซีดี / ดีวีดีดีกว่าไหม
พื้นหลัง ฉันกำลังคัดลอกซีดี / ดีวีดีข้อมูลบางส่วนไปยังไฟล์ ISO เพื่อใช้งานในภายหลังโดยไม่จำเป็นต้องใช้ไดรฟ์ ฉันกำลังมองหาวิธีการทางอินเทอร์เน็ตและฉันพบมาก: ใช้ในcatการคัดลอกสื่อ: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.html cat /dev/sr0 > image.iso การใช้ในddการทำเช่นนั้น (เห็นได้ชัดว่าใช้กันอย่างแพร่หลายมากที่สุด): http://www.linuxjournal.com/content/archiving-cds-iso-commandline dd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso ใช้pvเพื่อทำสิ่งนี้ให้สำเร็จ: ดูman pvข้อมูลเพิ่มเติมแม้ว่านี่คือส่วนที่ตัดตอนมา: Taking an image of a disk, skipping errors: pv -EE /dev/sda > disk-image.img Writing an image back to a disk: pv disk-image.img > /dev/sda Zeroing a …
22 linux  dd  cat  disk-image  pv 

4
อาร์กิวเมนต์ 'find' ใน command dd
บางคนสามารถอธิบายว่าเกิดอะไรขึ้นในบรรทัดต่อไปนี้ dd if=/dev/urandom bs=4096 seek=7 count=2 of=file_with_holes โดยเฉพาะการค้นหาส่วนที่ไม่ชัดเจน หน้าคนพูดว่า: seek=BLOCKS skip BLOCKS obs-sized blocks at start of output บล็อกขนาด obs คืออะไร?
20 dd 

5
วิธีการละเว้นข้อผิดพลาดการเขียนในขณะที่เป็นศูนย์ดิสก์?
สมมติว่าคุณต้องการฮาร์ดดิสก์ที่ล้มเหลวเป็นศูนย์ คุณต้องการเขียนทับเลขศูนย์ให้มากที่สุด สิ่งที่คุณไม่ต้องการคือกระบวนการจะยกเลิกข้อผิดพลาดในการเขียนครั้งแรก ทำอย่างไร AFAICS ธรรมดาddเท่านั้นมีตัวเลือกสำหรับละเว้นข้อผิดพลาดในการอ่าน ดังนั้นสิ่งที่ชอบ dd if=/dev/zero of=/dev/disk/by-id/lousy-vendor-123 bs=128k ไม่พอ. ddrescue ดูเหมือนว่าจะดีกว่าที่ละเว้นข้อผิดพลาด - แต่สิ่งที่จะเป็นบรรทัดคำสั่งที่ดีที่สุดกับมัน? ความพยายามของฉันกับ GNU ddrescue: ddrescue --verbose --force --no-split /dev/zero /dev/disk/by-id/lousy-vendor-123
19 hard-disk  dd  ddrescue 

4
อ่านตรงกลางของไฟล์ขนาดใหญ่
ฉันมีไฟล์ 1 TB ฉันต้องการอ่านจากไบต์ 12345678901 ถึงไบต์ 19876543212 และวางบนเอาต์พุตมาตรฐานบนเครื่องที่มี RAM ขนาด 100 MB ฉันสามารถเขียนสคริปต์ Perl ที่ทำสิ่งนี้ได้อย่างง่ายดาย sysread ส่ง 700 MB / s (ซึ่งใช้ได้) แต่ syswrite ให้ 30 MB / s เท่านั้น ฉันต้องการบางสิ่งที่มีประสิทธิภาพมากกว่าโดยเฉพาะอย่างยิ่งสิ่งที่ติดตั้งทุกระบบ Unix และสามารถส่งได้ในระดับ 1 GB / s ความคิดแรกของฉันคือ: dd if=1tb skip=12345678901 bs=1 count=$((19876543212-12345678901)) แต่นั่นไม่ได้มีประสิทธิภาพ แก้ไข: ฉันไม่รู้ว่าฉันวัดซิงไซต์ผิดอย่างไร สิ่งนี้ให้ 3.5 GB / …
19 files  dd 

3
ฉันจะติดตั้ง "img" ที่สร้างด้วย / bin / dd ของฮาร์ดไดรฟ์ได้อย่างไร
ฉันเคยddสำรองไดรฟ์80GB dd if=/dev/sdb of=~/sdb.img ตอนนี้ฉันต้องเข้าถึงไฟล์บางไฟล์ในไดรฟ์นั้น แต่ฉันไม่ต้องการคัดลอก ".img" กลับไปที่ไดรฟ์ mount ~/sdb.img /mnt/sdbไม่ทำงานเช่นกัน มันกลับมา: mount: you must specify the filesystem type ฉันพยายามค้นหาประเภทของระบบไฟล์ด้วย file -s fox@shoebox $ file -s sdb.img sdb.img: x86 boot sector; partition 1: ID=0x12, starthead 1, startsector 63, 10233342 sectors; partition 2: ID=0xc, active, starthead 0, startsector 10233405, 72517410 sectors; …
19 mount  dd 

6
`dd if = / dev / zero of = / dev / sda` ทำอะไร
แก้ไข: อย่าเรียกใช้สิ่งนี้เพื่อทดสอบเว้นแต่ว่าคุณต้องการทำลายข้อมูล มีคนช่วยฉันเข้าใจสิ่งที่ฉันได้หรือไม่ dd if=/dev/zero of=/dev/sda bs=4096 count=4096 Q: ทำไมเฉพาะสำหรับ 4096 count? dd if=/dev/zero of=/dev/sda bs=512 count=4096 seek=$(expr blockdev --getsz /dev/sda - 4096) ถาม: สิ่งนี้ทำอะไรกันแน่
19 udev  dd  disk 

1
ทำไมการส่งท่อ `tar 'ลงใน` dd' ไม่หยุดจนกว่าดิสก์จะเต็ม
ฉันมีไฟล์เก็บถาวร tar ของดิสก์อิมเมจเดียว ภาพภายในไฟล์ tar นี้มีขนาดประมาณ 4GB ฉันไพพ์เอาท์พุทของtar xfไปddยังเพื่อเขียนดิสก์อิมเมจไปยังการ์ด SD diskdump ไม่เคยหยุดจนกว่าการ์ดจะเต็ม นี่คือเซสชันเชลล์ของฉัน: $ ls -l disk.img.tgz -rw-r--r-- 1 confus confus 192M Okt 5 00:53 $ tar -tvf disk.img.tgz -rw-r--r-- root/root 4294968320 2018-10-05 00:52 disk.img $ lsblk -lb /dev/sdc NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdc 8:32 1 16022241280 …
18 pipe  tar  dd  disk-image 

3
คุณจะตัดแต่งไฟล์โดยใช้บรรทัดคำสั่งได้อย่างไร
อะไรคือสิ่งที่เทียบเท่าคอนโซลของรหัสหลามต่อไปนี้: target = file("disk", "w") # create a file target.seek(2*1024*1024*1024) # skip to 2 GB target.write("\0") target.close() อาจจะมีคาถา DD แนวคิดคือการสร้างไฟล์ที่มีขนาดชัดเจน 2 GB สำหรับการใช้งานเช่นในการจำลองเสมือน kvm disk -cd whatever.iso #Only allocate space as necessary
18 files  dd  sparse-files 

2
ใช้ `dd 'เพื่อตัดส่วนท้ายไฟล์
อาจมีเคล็ดลับง่ายๆในการทำเช่นนี้ แต่ฉันไม่สามารถหาได้จากหน้าคน ฉันจะตัด 1MB สุดท้ายจากไฟล์ที่มีขนาดที่ไม่ระบุได้ddอย่างไรโดยใช้?
18 dd 

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