我有两种备份方法:
>从LVM快照执行dd,并对其进行定位,并远程进行rsync
>将LVM快照和rsync安装到远程位置
现在第二个选项允许我使用rdiff-backup所以我可以节省增量备份并节省大量空间,而第一个选项实际上是存储量很大.
现在,我有两个问题:
>使用dd时有没有办法没有’空白’?假设我有一个50GB的LVM卷,只使用了3 GB,当使用dd时,它将创建一个50 GB的图像(因此浪费了47 GB). tar可以解决这个问题,但需要花费很多额外的时间(我基本上没有)
>这些由dd创建的img文件能以某种方式逐步保存吗?
解决方法
让我们从快照中回归基础.首先,我将要求您查看为什么要使用一个文件.停下来想想tar会做些什么以及你为什么这样做.
$dd if=/dev/zero of=zero bs=$((1024*1024)) count=2048 2048+0 records in 2048+0 records out 2147483648 bytes transferred in 46.748718 secs (45936739 bytes/sec) $time gzip zero real 1m0.333s user 0m37.838s sys 0m1.778s $ls -l zero.gz -rw-r--r-- 1 user group 2084110 Mar 11 16:18 zero.gz
鉴于此,我们可以看到压缩为我们提供了大约1000:1的空间空间优势.无论系统支持稀疏文件,压缩都有效.还有其他算法可以将其收紧,但对于原始整体性能,gzip获胜.
Unix实用程序和稀疏文件
鉴于系统支持稀疏文件,dd有时可以选择保存空间.奇怪的是,我的mac包含一个带有conv =稀疏标志的dd版本,但HFS文件系统不支持它.相反,我用于测试的新的Debian安装支持ext4中的稀疏文件,但是dd的安装没有标志.去搞清楚.
因此,另一个练习:
我将/ dev / zero复制到一个与上面相同的文件中.由du,df和ls确认,文件系统占用了2G的空间.然后我在它上面使用了cp,发现自己有2个文件,使用4GB的空间.所以,是时候尝试另一面旗帜了:
`cp --sparse=always sparse sparse2`
使用它强制cp采用常规文件,并在看到一长串零时使用稀疏分配.现在我有2个文件据报道,根据ls占用4GB,但根据du和df仅占2GB.
既然我有一个稀疏文件,cp会表现吗?是. cp sparse2稀疏导致ls显示每个文件占用2GB的空间,但du显示它们占用文件系统上的零块.结论:一些实用程序会尊重已经稀疏的文件,但大多数都会将整个文件写回来.即使cp也不知道将写入的文件转回稀疏,除非你强行尝试.
接下来,我创建了一个1MB的文件并将其作为稀疏条目,然后尝试在vim中编辑它.尽管只输入了几个字符,但我们又回到了使用整个事物.快速搜索发现类似的演示:https://unix.stackexchange.com/questions/17572/what-is-the-interaction-of-the-rsync-size-only-and-sparse-options
稀疏的结论
所以我的想法是这样的:
>使用LVM快照
>针对快照运行zerofree
>使用rsync -S复制稀疏文件
>如果您无法使用rsync,请在您通过网络传输时快照gzip快照,然后对未展开的图像运行cp –sparse = always以创建稀疏副本.
差异备份
在块设备上使用差异备份的问题是,事物可能会移动一些并产生大量难以处理的差异. StackOverflow上有一些讨论:https://stackoverflow.com/questions/4731035/binary-diff-and-patch-utility-for-a-virtual-machine-image得出结论,最好用的是xdelta.如果您要这样做,请再次尝试将空白空间清空.