我正在尝试使用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
可以办到
我们需要解决两个问题:
dd
不知道如何处理目录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 \;