相关疑难解决方法(0)

为什么 dd 这么慢,bs 为 100M

我只是尝试使用 dd 覆盖快速 ssd。使用我输入的 ubuntu 启动映像:

dd if=/dev/zero of=/dev/sda bs=100M
error writing '/dev/sda': No space left on device
blah blah
256 GB copied, 1195.81 s 214 MB/s
Run Code Online (Sandbox Code Playgroud)

那不是很慢吗?瓶颈在哪里?块大小的选择呢?

dd

8
推荐指数
1
解决办法
2万
查看次数

统计文件系统大小

stat 8.13基于 Debian 的 Linux 上——除其他外——提供了以下 FORMAT 指令 ( --format=):

--file-system( -f)组合:

  • %s 块大小(用于更快的传输)
  • %S 基本块大小(用于块计数)

问题:究竟是什么意思?

我最好的猜测是%s%S等于%b(以块为单位显示)和%B(显示块的大小),其中后者用于文件,前两个用于文件系统。那是对的吗?

linux stat

8
推荐指数
1
解决办法
1411
查看次数

在没有 USR1 的情况下检查 dd 的进度吗?

我使用的是busybox 1.27纯 Linux 系统,因此没有output=progress可用的,没有 busybox 自己的实现,也没有pv它本身。pipe_progresspv

我有两个问题。第一个基于https://www.linux.com/training-tutorials/show-progress-when-using-dd/。它表示,通过向其发送USR1信号dd会“暂停”该过程,并且dd在打印后其当前状态将继续其正在执行的工作。我正在尝试进行一些基准测试,dd因此我希望对dd操作的影响最小。我希望每秒获得当前操作的输出,因为传递的数据dd是波动的,识别传输速率何时下降对我来说很重要。

第一个问题: “dd”每次收到USR1信号时都会“暂停”,这是真的吗?

如果dd每秒暂停一次,那么当传输数十千兆字节时,我将增加操作时间。

第二个问题: 假设第一个问题的答案是“是”,我想知道是否可以在dd不向进程发送任何信号的情况下打印其当前状态,也许是某种重定向STDOUT(如 2>&1)?

我指的是:

# bs with 1Mib so I can have more control on the test.
dd if=/dev/zero of=/dev/null bs=1048576 count=1024

# Printing current operation status.
sudo kill -USR1 $dd_pid 
Run Code Online (Sandbox Code Playgroud)

linux dd busybox

8
推荐指数
2
解决办法
2000
查看次数

备份整个硬盘Linux

我正在寻找一种方法来备份整个磁盘,以防万一出现问题...

我什至不知道在服务器的一些特殊设备上安装什么,而且每次都不一样。

cp -a/目录工作的?
有没有什么程序可以复制硬盘的所有数据?(就像硬盘的图像)。

我知道这至少存在于 Windows 中。

虽然硬盘在 RAID 1 上....

backup hard-disk raid1

7
推荐指数
1
解决办法
8682
查看次数

dd 是否复制所有内容,包括所有元数据和所有“空”块

突然,我的分区出现了问题,或者只是一个分区。我有一个默认的 Ubuntu 安装,在金士顿 SSD 上,根文件系统用 LUKS 加密,(我认为使用 AES)。现在我正在尝试从 live cd 挂载分区,但没有运气。

我很害怕造成一些无法挽回的额外伤害。所以我想制作驱动器的精确副本。这意味着所有分区表,LUKS 分区的任何类型的元数据,以及我不知道的任何其他类型的元数据。我想我也希望所有的空块都绝对安全。

我知道dd if=/dev/sda of=/dev/sdb,但我不知道它是否会包含所描述的所有数据。

也许我需要用 指定块大小-b,但我不明白它是如何工作的以及为什么它是必要的(如果是的话)。而且我也不知道如何找到分区的块大小。

请告诉我它是否确实复制了所有数据,如果没有,是否还有其他方法。

dd block-device

7
推荐指数
2
解决办法
7047
查看次数

如何通过网络 DD 到外部 HD?

我正在尝试将位于同一网络上的 raspberry pi 上的硬盘克隆到我当前使用的计算机的外部硬盘上。但是,我在正确执行命令时遇到了问题。我试过了:

ssh user@hostip "dd if=/dev/sda" | sudo dd of=/dev/sdc
Run Code Online (Sandbox Code Playgroud)

但是提示sudo和ssh连接堆栈在一起。

networking dd

6
推荐指数
2
解决办法
1772
查看次数

为什么 dd 读取和写入同一个磁盘?

我一直dd在 Linux 中使用来覆盖外部 USB 硬盘驱动器。

当我使用 512 字节的默认块大小时,使用以下命令:

# dd if=/dev/zero of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

在整个操作过程中,硬盘驱动器(/dev/sdb)被交替读取和写入,一次大约 1GB。即read 1GB... ... write 1GB... ... read 1GB... ...write 1GB等尽可能多的数据从硬盘读出被写入。

我知道这是因为它显示在我的自定义 Conky 面板 ( diskio_read, diskio_write) 中,我知道它是磁盘 I/O 活动的 100% 可靠指标。

我在另一台计算机上使用不同的外部硬盘驱动器重复了这一点。它通过 USB 2.0 和 USB 3.0 发生。

相比之下,当我做同样的事情,但使用 1MB 的块大小时,使用以下命令:

# dd if=/dev/zero of=/dev/sdb bs=1M
Run Code Online (Sandbox Code Playgroud)

除了开始时有少量读取外,在运行过程中根本不读取硬盘驱动器。

鉴于这种现象发生在我的两台不同的计算机和两个不同的硬盘上,使用标准的 Linux 发行版(Xubuntu 14.04),任何想要的人都应该能够在自己的计算机上复制它。

有人可以解释一下这里发生了什么吗?

linux dd external-hdd

6
推荐指数
1
解决办法
1246
查看次数

我可以用解密的内容覆盖 LUKS 分区吗?

我有我的数据硬盘(其他硬盘上可用的最重要数据的部分备份),目前它通过 LVM over LUKS 格式化为 Ext4。我想删除 LUKS 层,但重新格式化和从备份恢复数据太长/没有乐趣。是否有可能/机会在不使用大缓冲区且不损坏数据的情况下用其内容覆盖 LUKS 分区?

dd hard-disk luks

5
推荐指数
1
解决办法
1447
查看次数

如何找到 ext4 文件系统使用的最后一个扇区?

我需要确定 ext4 文件系统使用的最后一个扇区,以便我可以将它移动到另一个设备。

文件系统已经缩小(使用resize2fs)并且小于包含它的分区,所以我不是在问如何找到分区中的最后一个扇区。

我已经完成tune2fs -l并确定了

Block count:              48934
First block:              0
Block size:               4096
Run Code Online (Sandbox Code Playgroud)

由此我假设文件系统使用 48934 * 4096 / 512 = 391472 个扇区,并且我可以dd从分区的第一个扇区开始移动那么多扇区(如 所报告的gdisk)。

我不确定该块计数是否包括任何 ext4 开销,或者是否需要考虑额外的大小。我读了这个问题,这意味着还有额外的空间需要考虑。

ext4

5
推荐指数
1
解决办法
1389
查看次数

如何在 macOS High Sierra 上加快 dd 速度?

我试图创建 Ubuntu 17.04 的可启动 USB。首先,我擦除了笔式驱动器中的所有内容,然后开始使用复制sudo dd if=path_to_ubuntu_image of=/dev/rdisk2,但完成该过程大约需要 5 小时。rdisk我阅读了之前关于使用而不是加速它的答案disk,但我最初只使用它。可以使用,bs但我怀疑它会在复制时对可启动映像带来一些变化吗?请帮忙。
Ubuntu 的大小 - 1.63GB
我正在使用最新版本的 macOS High Sierra。

我所遵循的步骤的网页链接 - http://courses.cms.caltech.edu/cs171/materials/pdfs/How_to_Dual-Boot_OSX_and_Ubuntu.pdf

ubuntu dd macintosh

5
推荐指数
1
解决办法
9938
查看次数