动态压缩 dd 备份

Phi*_*hil 29 linux backup unix-shell

也许这听起来像一个愚蠢的问题,但我试图这样做的方式不起作用。

我在 livecd 上,驱动器已卸载,等等。

当我以这种方式备份时

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k
Run Code Online (Sandbox Code Playgroud)

...通常它会工作,但我在复制到的外部高清上没有足够的空间(它几乎适合它)。所以我想以这种方式压缩

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz
Run Code Online (Sandbox Code Playgroud)

...但我的权限被拒绝。我不明白。

Kyl*_*ndt 45

您是否有权访问 sda2-backup...gz 文件?Sudo 仅适用于其后的命令,不适用于重定向。如果您希望它应用于重定向,则以 root 身份运行 shell,以便所有子进程也都是 root:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用 uid / gid 挂载选项(假设为 ext3)挂载磁盘,以便您拥有任何用户的写权限。或者,使用 root 在 /media/disk 中创建一个您有权访问的文件夹。

其他可能对您有帮助的信息:

  • 在大多数情况下,块大小仅对速度很重要。默认值为 512 字节,您希望为 MBR 和软盘保留该字节。更大的尺寸应该加快操作,将其视为类似于缓冲区。这是一个链接指向使用不同块大小进行一些速度基准测试的人。但是您应该自己进行测试,因为性能受许多因素的影响。也看看安德烈亚斯的另一个答案
  • 如果您想使用 ssh 和 netcat 通过网络完成此操作,因此空间可能不是那么大的问题,请参阅此 serverfault 问题
  • 您真的需要分区的映像吗,可能有更好的备份策略吗?
  • dd 是一个非常危险的命令,使用of而不是if你最终会覆盖你要备份的内容!!注意键oi是如何彼此相邻的?所以要非常非常非常小心。


chr*_*ris 7

在第一种情况下,dd以 root 身份运行。在第二种情况下,dd以 rootgzip身份运行,但以您的身份运行。

更改权限/media/disk,给自己一个 root shell,或者gzip也以 root 身份运行。


dmi*_*gov 7

此外,您可以将 gzip 替换bzip2 --best为更好的压缩:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
Run Code Online (Sandbox Code Playgroud)

  • 以大量时间为代价。有关更多详细信息,请参阅 http://changelog.complete.org/archives/910-how-to-think-about-compression “如何考虑压缩”。 (7认同)
  • 如今 zstd 是一个不错的选择。 (2认同)

Ser*_*sov 6

sudo dd if=/dev/sda1 bs=32M | 7z a -si  /data/$(date +%Y%m%d_%H%M%S)_sda1-backup.tar.7z
Run Code Online (Sandbox Code Playgroud)

7z 利用所有 CPU 核心。此外,添加bs=32M或使用一些其他非默认值可能会显着加快该过程。

检测结果:

root@pentagon:~# dd if=/dev/sda1 | bzip2 -c > /data/$(date +%Y%m%d_%H%M%S)_pentagon-backup-sda1.bz2
12288000+0 records in
12288000+0 records out
6291456000 bytes (6.3 GB) copied, 2033.77 s, 3.1 MB/s
root@pentagon:~# dd if=/dev/sda1 bs=32M | 7z a -si  /data/$(date +%Y%m%d_%H%M%S)_pentagon-backup-sda1.tar.7z

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs x64)

Creating archive: /data/20210818_104748_pentagon-backup-sda1.tar.7z

Items to compress: 1

5917M + [Content]187+1 records in
187+1 records out
6291456000 bytes (6.3 GB) copied, 1393.34 s, 4.5 MB/s
                   
Files read from disk: 1
Archive size: 818956969 bytes (782 MiB)
Everything is Ok
Run Code Online (Sandbox Code Playgroud)

几乎快了2倍。

root@pentagon:~# ls -Alh /data
....
-rw-r--r-- 1 root root            1.2G Aug 18 10:40 20210818_100651_pentagon-backup-sda1.bz2
-rw-r--r-- 1 root root            782M Aug 18 11:11 20210818_104748_pentagon-backup-sda1.tar.7z
....
Run Code Online (Sandbox Code Playgroud)

而且,几乎小了两倍。

这要归功于伊戈尔·巴甫洛夫。