我目前正在尝试将一个相当空的、新鲜的 qcow2 映像从一个系统移动到另一个很远的系统。我基本上已经安装了全新安装的 ubuntu LTS(实际大小为 6gb,外观大小为 200gb)。大多数文件传输方法(通过 ssh 进行 rsync)和使用 duck 的 sftp 都尝试传输超过 200gb 的数据。
这是效率低下因为磁盘映像实际上并没有使用 200GB(只是最终可能会使用)。我需要做什么才能传输仅有的VM 使用什么?
传输的两端都运行 Fedora 22,我理想情况下不想切换磁盘映像格式,尽管这也是一个选择。速度会很好 - 我不想为了处理时间而牺牲传输时间。
答案1
rsync
实际上处理稀疏文件。当您说实际大小为 6GB 而表观大小为 600GB 时,您的意思是du -h IMAGE.qcow2
显示“ 6G
”但du -h --apparent-size IMAGE.qcow2
显示“ 200G
”吗?
如果是这样,您可以添加标志-S
以rsync
使其稀疏地传输文件,这意味着您将发送超过 6GiB 的数据而不是 200GiB。
听起来你的 qcow2 镜像也没有被压缩。如果你有多余的 CPU 资源,并且你的带宽小于你的 CPU 的速度gzip
,你也可以将-z
标志传递给rsync
,它也会rsync
压缩其文件传输。
我有一个rsync
基于的即发即弃热键这个超级用户问题并且大多数情况下,它都能实现高效且有保护性的文件传输:rsync -avzHXShPs
答案2
scp -C
使用压缩,这对于如此稀疏的文件来说应该非常有效。一个优点是您可以在目标位置获得一个随时可用的文件。