本文来自本人的个人网站
1、libguestfs-tools
仅在虚拟机关闭状态可用
环境变量增加:export LIBGUESTFS_BACKEND=direct
安装yum install libguestfs-tools guestfish -y
下载文件virt-copy-out -d instance-000000ea /home/v86/index.html /home/
上传文件virt-copy-in -d instance-000000ea /home/index.html /home/ (仅关机可用)
文件列表virt-ls disk /home/
virt-ls -d instance-000000ea /home/
递归文件列表virt-ls -R -d instance-000000ea /home
2、qemu-guest-agent
开机可用,openstack用
openstck的镜像添加元数据:
hw_require_fsfreeze=yes
hw_qemu_guest_agent=yes
Linux虚拟机处理,处理后可以保存快照,新虚拟机都用此快照启动:
vim /etc/sysconfig/qemu-ga,注释掉BLACKLIST_RPC,操作后重启下qemu-guest-agent
sed -i "s/SELINUX=enforcing/SELINUX=disable/" /etc/selinux/config
setenforce 0
虚拟机启动后,测试是否接通:virsh qemu-agent-command instance-000000ea '{"execute":"guest-ping"}'
返回{"return":{}}可用
文件转base64:echo `cat index.html`| base64 -w 0
创建文件夹:virsh qemu-agent-command instance-000000ea '{"execute":"guest-exec","arguments":{"path":"mkdir","arg":["-p","/home/test/"],"capture-output":true}}'
创建文件:virsh qemu-agent-command instance-000000ea '{"execute":"guest-exec","arguments":{"path":"touch","arg":["/home/test/1.html"],"capture-output":true}}'
打开文件:virsh qemu-agent-command instance-000000ea '{"execute":"guest-file-open", "arguments":{"path":"/home/test/1.html","mode":"w+"}}'
写入文件:virsh qemu-agent-command instance-000000ea '{"execute":"guest-file-write", "arguments":{"handle":1000,"buf-b64":"base64字符串"}}'
关闭文件:virsh qemu-agent-command instance-000000ea '{"execute":"guest-file-close", "arguments":{"handle":1000}}'
进入虚拟机,可以看到文件已上传到虚拟机