操作笔记 | Ubuntu Server VMware虚拟机的文件传输

背景:搭建靶场测试环境的时候需要把docker文件拖到Ubuntu Server里,没有图形界面不能通过直接拖拽的方式实现复制。需要通过命令行工具进行文件的传输和复制。

1. 使用 VMware tool

方法:通过VMware tool创建共享文件夹,实现本地与虚拟机间的通信。

步骤

  1. 在虚拟机关闭状态下,在设置中配置共享文件夹;
  2. 在ubuntu server中安装vmware-tools工具,然后重启;
  3. 启动ubuntu server,挂载共享文件夹;

步骤一 配置共享文件夹

步骤二:在ubuntu中安装open-vm-tools

复制代码
sudo apt update
sudo apt installs open-vm-tools -y

步骤三:挂载共享文件夹并复制文件

  1. 列出vmware共享文件夹的名称

    复制代码
    vmware-hgfsclient
  2. 创建挂载点(例如在/mnt下)

    复制代码
    sudo mkdir -p /mnt/docker_share
  3. 使用 vmhgfs-fuse挂载共享文件夹

    复制代码
    sudo vmhgfs-fuse .host:/docker_share /mnt/docker_share -o allow_other

    .host/docker_share中的docker_share需与在VMware中设置的共享文件夹名称一致;allow_other选项允许普通用户访问该挂载点,设置为只有root能访问时可以省略。

  4. 验证挂载

    复制代码
    ls /mnt/docker_share
  5. 复制文件到Ubuntu server中(将共享文件夹中的所有内容复制到home目录下):

    复制代码
    cp -r /mnt/docker_share/* ~/
  6. 复制完成后可以取消挂载:

    复制代码
    sudo unmount /mnt/docker_share

步骤三 挂载文件夹后将文件夹复制到虚拟机中

附,open-vm-tools的重启方法:

复制代码
sudo systemctl restart open-vm-tools

2. 其他工具:scp, rsync

其他传输文件的工具:

  • scp(基于ssh,适合单次传输)
  • rsync(支持断点续传,并能增量同步,适合较大或需要多次传输的文件夹)

https://blog.sciencenet.cn/blog-3054301-1492239.html (ssh传输方法参考)

拓展思考

💡 图形界面的拖拽复制原理是什么?走的是什么协议?是如何实现的?

  • VMware 自定义的一套虚拟机与宿主机之间的私有通信协议;
组件 作用 无图形界面时
宿主机 VMware 窗口 捕获拖拽事件,通过虚拟通道发起通信 正常捕获,但无人应答
VMCI / Backdoor 通道 宿主机与虚拟机间的通信管道 存在,但虚拟机内无处理程序
VMware Tools(vmtoolsd) 接收拖拽通知,进行文件传输 存在,但缺少图形插件,拒绝响应
图形会话(X11/Wayland) 提供拖拽目标窗口,传递事件 缺失,导致拖拽事件无法被虚拟机内部接收
图形应用程序(如文件管理器) 最终接收文件并写入磁盘 缺失,没有可接收文件的程序

拓展思考回答 from deepseek

相关推荐
aaaameliaaa34 分钟前
字符函数和字符串函数
c语言·笔记·算法
tq10862 小时前
开放与封闭:类型系统的安全哲学
笔记
龙仔7253 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
韭菜炒鸡肝天3 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
峥无6 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波6 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
早睡早起身体好1237 小时前
为什么 Network 中会出现两个同名请求?——CORS 预检请求学习笔记
网络·笔记·学习·网络安全
@Mike@8 小时前
06-数据库学习笔记(存储模型与数据压缩)
数据库·笔记·学习
不在逃避q9 小时前
Golang笔记之Redis
redis·笔记·golang
wdfk_prog9 小时前
嵌入式面试真题学习笔记系列
笔记·学习·面试