创建未分配硬盘镜像时权限报错及仅备份已用空间的技术咨询
创建未分配硬盘镜像时权限报错及仅备份已用空间的技术咨询
嗨,我来帮你一步步解决遇到的权限问题,同时满足你仅备份已用空间的需求——毕竟全量备份不仅费时间还占空间,确实没必要:
一、先搞定dd权限报错的问题
你遇到的permission is denied是因为访问/dev/sda这类系统块设备需要管理员权限,另外你的命令还有个容易踩坑的小错误:
- 必须在命令前加
sudo获取root权限; - 你写的
of=dev/sdb/file.img少了开头的斜杠,更关键的是不能直接把镜像文件写到裸硬盘/dev/sdb上——这会覆盖硬盘的分区表,彻底破坏目标盘的数据!你得先把/dev/sdb上的某个分区挂载到本地目录,比如:
修正后的# 创建挂载点 sudo mkdir /mnt/backup # 挂载目标盘的分区(假设是/dev/sdb1,可通过sudo fdisk -l确认) sudo mount /dev/sdb1 /mnt/backupdd命令(还加了进度显示和稀疏文件优化):
其中sudo dd if=/dev/sda of=/mnt/backup/file.img conv=sparse status=progressconv=sparse会把源盘的空块转化为稀疏文件,大幅减少镜像占用的空间。
二、仅备份已用空间的更高效方案
虽然dd加conv=sparse能优化,但如果源盘的空块不是零填充的,还是会备份冗余数据。更推荐用专门的磁盘备份工具,只备份分区里的已用空间:
1. 使用partclone(单分区备份)
这是专门针对分区的轻量备份工具,只备份已用数据:
- 先安装工具(Debian/Ubuntu系):
sudo apt install partclone - 用
sudo fdisk -l查看/dev/sda上的分区(比如/dev/sda1),然后执行备份:# 如果你是NTFS分区用partclone.ntfs,ext4就用partclone.ext4,对应你的文件系统 sudo partclone.ntfs -d -s /dev/sda1 -o /mnt/backup/sda1.img
2. 使用fsarchiver(多分区批量备份)
如果需要备份多个分区,fsarchiver更合适,它会自动跳过空块,同时支持压缩:
- 安装工具:
sudo apt install fsarchiver - 备份指定分区(比如
/dev/sda1和/dev/sda2):sudo fsarchiver savefs /mnt/backup/hdd_backup.fsa /dev/sda1 /dev/sda2
三、配合testdisk恢复的小提示
后续要用testdisk恢复分区的话,建议先单独备份一下源盘的MBR(分区表信息),避免操作失误:
sudo dd if=/dev/sda of=/mnt/backup/mbr.img bs=512 count=1
如果后续分区表修复出问题,可以用这个MBR镜像恢复:
sudo dd if=/mnt/backup/mbr.img of=/dev/sda bs=512 count=1
备注:内容来源于stack exchange,提问作者Mahmoud Sobeih
相关产品推荐
相关产品推荐

