我需要复制在 Proxmox(KVM)服务器上运行的虚拟机的快照,并将快照复制到异地存储。
大多数快照只有几 GB,但有些相当大,高达 200 GB。我更喜欢一次性压缩和复制快照,例如:
xz -c dumpfile | scp offsite
问题是由于转储文件的大小以及需要同时运行的其他作业可能需要 12 个小时或更长时间,在此期间可能会发生很多事情而中断数据流。
如果传输中断,我可以使用 rsync 恢复传输,但随后必须在发送之前压缩整个文件,这需要在分配给快照的 250g 基础上再分配 150g。由于服务器上的存储空间非常宝贵(仅限 SSD),我宁愿不分配额外的磁盘空间。
也许将压缩输出以 pkzip 方式拆分成更小的部分,并在它们准备好时将它们传输到队列中,这可能是一个解决方案?Tar 似乎有一个多卷 (-m) 选项,也许可以使用。问题是压缩过程需要停止,直到传输完最后一个压缩部分。
我在这里寻找的是想法,而不是具体的解决方案。我觉得我错过了一些明显的选择。如果可能的话,我更愿意使用标准 Linux 软件。
答案1
答案2
这是 RTFM 的经典案例,抱歉。仔细阅读 TFM 后发现,vzdump 提供了一个 --compress 选项,可以即时压缩转储,因此我进一步减少了所需的空间。然后,我继续将压缩的转储 rsync 到备份服务器,并从虚拟机管理程序中删除转储。
最终的剧本变成了
vzdump $VZID --mode snapshot --compress lzo --mailnotification failure --mailto [email protected] \
&& rsync -e ssh vzdump-qemu-${VZID}-* backup:/backup \
&& rm -f vzdump-qemu-${VZID}-* \
|| mail [email protected] -s "transfer of $VZID failed" < vzdump-qemu-${VZID}-*.log
~