dd , pv , gzip 和排除目录,可能吗?

dd , pv , gzip 和排除目录,可能吗?

是否可以执行以下操作:

dd if=/dev/hdx | pv | gzip > /path/to/image.img\
--exclude=/temp --exclude=/lost+found --exclude=/proc --exclude=/path/to/image.img

所以我想对用 gzip 压缩的图像进行备份,但我想排除一些目录和写入的文件,我该怎么做?

答案1

如果您想排除某些目录和/或文件,则不应使用dd,这几乎是不可能的(不会通过随机删除扇区来破坏文件系统)。

而且,您也无法对dd已挂载的分区进行正确的备份,原因与您无法对fsck已挂载的分区进行备份的原因相同(因为这听起来像是您在问“我想要 `dd if=sda of=sda”

您可以使用以下方式dd代替pv

向正在运行的“dd”进程发送 USR1 信号使其将 I/O 统计信息打印到标准错误,然后恢复复制。

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

18335302+0 条记录输入 18335302+0 条记录输出 9387674624 字节 (9.4 GB) 已复制,耗时 34.6279 秒,耗时 271 MB/s

但是,您最好使用tar以下一些选项:

 --exclude=PATTERN
       exclude files, given as a PATTERN

 --exclude-tag=FILE
       exclude contents of directories containing FILE, except

 --exclude-tag-all=FILE
       exclude directories containing FILE

 --exclude-tag-under=FILE
       exclude everything under directories containing FILE

 -z, --gzip, --gunzip --ungzip

 -J, --xz

 -T, --files-from FILE
       get names to extract or create from FILE

 -X, --exclude-from FILE
       exclude patterns listed in FILE

请参见man tar网络上无数的示例。

除非你正在备份一些奇怪的操作系统或程序,这些程序要求文件位于磁盘上的某个位置,否则你可能需要一份dd完整的卸载分区/磁盘,通过管道传输到gzip/ xz/etc。

相关内容