Questions tagged «dd»

dd是用于二进制数据副本的传统实用程序


2
dd命令中的“ bs”,“ count”和“ seek”有什么区别?
我读过许多导游和论坛帖子描述如何使用dd,但有一两件事我注意到的是,人们总是使用不同的值bs=,count=和seek=开关。 请有人能解释一下这些开关到底能做什么(手册页不是很详细),并解释一下它们对于不同任务的最佳设置是什么,例如从/ dev / random或/ dev / zero创建文件以及覆盖分区和外部驱动器。
24 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 

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 

5
即时流压缩不会溢出到硬件资源中吗?
我有200 GB的可用磁盘空间,16 GB的RAM(其中约1 GB被台式机和内核占用)和6 GB的交换空间。 我有一个240 GB的外部SSD,其中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 pipe如果缓冲区太大会失败? 基本上,这可以归结为两个问题: 将更多数据放入管道中比一次读取更多的含义和结果是什么? 将数据流压缩到磁盘而不将整个未压缩的数据流放在磁盘上的可靠方法是什么? 注意1:由于碎片等原因,我不能完全复制前70个已使用的GB并期望得到一个工作系统或文件系统,这需要完整的内容。
23 pipe  dd  compression  gzip 

4
强制dd不缓存或不从缓存读取
我正在使用dd的busybox版本的嵌入式系统。我正在尝试从某个外部实用程序测试对驱动器的擦除,但是在擦除后dd不会再次从光盘读取数据,而是向我显示缓存的数据。 我将其范围缩小到dd,就像执行初始dd一样,请查看数据,重新启动系统以刷新缓存,进行擦除,然后再次运行dd,将其全为零。 但是,如果我对出厂设置进行了dd设置,请擦除驱动器,然后在不重新启动的情况下再次进行dd设置,直到重新启动后才会显示全零。 我已经在GNU联机帮助页中阅读到dd支持带nocache标志的iflag opt,但是busybox不支持该选项,因此这是不可能的。 我的问题是如何强制dd从磁盘而不是从缓存再次读取?
22 linux  dd 

2
使用cat,dd,pv或其他过程复制CD / DVD更好吗?
背景 我正在将一些数据CD / DVD复制到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 使用just 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 disk: pv < …
22 linux  dd  cat  disk-image  pv 

4
命令dd中的'seek'参数
有人可以解释一下以下几行吗? 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,并将其放在具有100 MB RAM的计算机上的标准输出上。 我可以轻松地编写一个执行此操作的perl脚本。sysread提供700 MB / s(可以),但是syswrite仅提供30 MB / s。我想要更高效的东西,最好是在每个Unix系统上安装的东西,并且可以以1 GB / s的速度传递。 我的第一个想法是: dd if=1tb skip=12345678901 bs=1 count=$((19876543212-12345678901)) 但这不是有效的。 编辑: 我不知道我怎么测量syswrite错误。这提供了3.5 GB / s的速度: perl -e 'sysseek(STDIN,shift,0) || die; $left = shift; \ while($read = sysread(STDIN,$buf, ($left > 32768 ? 32768 : $left))){ \ $left -= $read; syswrite(STDOUT,$buf); …
19 files  dd 

3
如何挂载由/ bin / dd硬盘创建的`img`?
我曾经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; partition 3: ID=0xc, …
19 mount  dd 

6
dd if = / dev / zero of = / dev / sda有什么作用
编辑:除非您要销毁数据,否则请不要运行它来对其进行测试。 有人可以帮助我了解我得到了什么吗? dd if=/dev/zero of=/dev/sda bs=4096 count=4096 问:为什么要专门为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卡。直到存储卡已满,磁盘转储才会停止。这是我的shell会话: $ 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 0 disk $ tar zxf disk.img.tgz -O | sudo dd status=progress …
18 pipe  tar  dd  disk-image 

3
如何使用命令行修剪文件?
等同于以下Python代码的控制台是什么: 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 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.