可以办到

可以办到

我正在尝试使用dd命令将文件夹 boot0 的内容复制到我的磁盘的初始字节。

这是命令:

sudo dd if=boot0/ of=/dev/sdb ibs=440 obs=440 count=1 

但是我收到此错误:

dd: error reading ‘boot0/’: Is a directory
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000209512 s, 0.0 kB/s

我怎么解决这个问题?

答案1

可以办到

我们需要解决两个问题:

  1. dd不知道如何处理目录
  2. dd一次只能复制一个文件

首先让我们定义输入和输出目录:

SOURCE="/media/source-dir"
TARGET="/media/target-dir"

现在让我们cd进入源目录,这样find就会报告我们可以轻松操作的相对目录:

cd "$SOURCE"

将目录树从复制$SOURCE$TARGET

find . -type d -exec mkdir -p "$TARGET{}" \;

重复文件从$SOURCE省略$TARGET写入缓存(但利用读取缓存!)

find . -type f -exec dd if={} of="$TARGET{}" bs=8M oflag=direct \;

请注意,这不会保留文件修改时间、所有权和其他属性。

答案2

该实用程序的主要目的dd是转换和复制文件。

例如:

dd if=filename of=filename2 conv=ucase
dd if=/dev/urandom of=myrandom bs=100 count=1

如果您想复制文件夹的内容,请使用rsync

rsync -vuar src/ dst/

cp实用程序:

cp -va src/. dst/

答案3

dd 可处理您指定的文件,使其能够在设备之间或从设备到文件复制数据。这通常用于在涉及特定设备时移动数据(例如,从 cd-rom 光盘创建 iso 映像:dd if=/dev/cdrom of=mycdrom.iso),或备份原始设备(有时用于 RAC 数据库:dd if=/dev/raw/raw1 of=device_raw1)

cp 用于将文件内容复制到新文件或新位置。您特别想要的是保留所有权、时间戳和模式(权利),以及能够递归操作(=能够复制目录)。

尝试这个命令:

   cp -r /home/source_folder/* /home/destination_folder

答案4

这是一个基于的解决方案@unfa 的回答并解决@Marecky 的评论

要摆脱本地路径指示符(点),你可以find使用这个Unix和Linux答案

SOURCE="/media/source-dir"
TARGET="/media/target-dir"
cd "$SOURCE"
find * -type d -exec mkdir -p "$TARGET/{}" \;
find * -type f -exec dd if={} of="$TARGET/{}" bs=8M oflag=direct \;

相关内容