是否可以执行以下操作:
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。