如何往Linux虚拟机传文件?有哪些常用方法和步骤?

在Linux虚拟机的日常使用中,向虚拟机内传输文件是常见需求,无论是配置文件、数据集还是开发工具,都需要高效、安全的方式完成传输,根据虚拟机与宿主机的连接方式、文件大小、安全需求等不同场景,可选择多种传输方法,本文将详细介绍几种主流的文件传输方式,包括原理、操作步骤及注意事项,帮助用户根据实际情况选择最适合的方案。

如何往linux虚拟机传文件

共享文件夹(虚拟机工具内置)

共享文件夹是虚拟化工具提供的便捷功能,通过将宿主机目录映射到虚拟机内部,实现双向文件访问,适合需要频繁交换小文件的场景。

原理

依赖虚拟机工具(如VMware Tools、VirtualBox Guest Additions)提供的驱动程序,在宿主机与虚拟机之间建立虚拟文件系统,支持拖拽、复制粘贴等操作。

操作步骤(以VMware为例)

  1. 启用共享文件夹:在虚拟机设置中选择“选项”->“共享文件夹”,点击“添加”,选择宿主机要共享的目录,并勾选“启用此共享”。
  2. 安装VMware Tools:在虚拟机菜单中选择“重新安装VMware Tools”,挂载光盘后,进入/mnt/cdrom目录,解压压缩包并执行./vmware-install.pl(一路回车即可)。
  3. 挂载共享文件夹:安装完成后,在虚拟机命令行执行mount -t vmhgfs .host:/ /mnt/hgfs,此时可通过cd /mnt/hgfs访问共享文件。

注意事项

  • 共享文件夹权限需配置:若宿主机目录对当前用户无读写权限,需在宿主机中修改目录权限(如chmod 757 /宿主机共享目录)。
  • VirtualBox用户需安装“增强功能(Guest Additions)”,挂载命令为mount -t vboxsf 共享名 /mnt/share(共享名需与VirtualBox中设置的名称一致)。

优缺点

优点:支持拖拽操作,双向传输实时,无需额外工具;缺点:依赖虚拟机工具,跨平台兼容性(如VirtualBox与VMware命令不同)可能带来混淆。

SCP(Secure Copy)安全拷贝

SCP基于SSH协议,通过加密通道传输文件,适合命令行操作,安全性高,是Linux系统间传输文件的常用方式。

原理

利用SSH的加密传输能力,将文件从本地系统安全复制到远程虚拟机,支持递归目录传输。

操作步骤

  1. 确保SSH服务开启:在虚拟机中安装openssh-server(Ubuntu/Debian:apt install openssh-server;CentOS/RHEL:yum install openssh-server),并启动服务systemctl start sshd,设置开机自启systemctl enable sshd。
  2. 获取虚拟机IP:在虚拟机中执行ip a或ifconfig,查看IP地址(如168.1.100)。
  3. 执行传输命令:在宿主机终端中,使用以下命令上传文件:
    scp 本地文件路径 用户名@虚拟机IP:虚拟机目标路径  
    # 示例:上传本地/home/user/data.txt到虚拟机的/root/目录  
    scp /home/user/data.txt root@192.168.1.100:/root/  

    下载文件则交换源路径和目标路径:

    scp 用户名@虚拟机IP:虚拟机文件路径 本地路径  
    # 示例:下载虚拟机/root/data.txt到本地/home/user/  
    scp root@192.168.1.100:/root/data.txt /home/user/  

注意事项

  • 防火墙需放行22端口:在虚拟机中执行firewall-cmd --add-port=22/tcp --permanent并重载防火墙firewall-cmd --reload。
  • 传输大文件时加-r参数递归目录(如scp -r /本地目录 用户名@IP:/目标目录),-P可指定非默认SSH端口(如-P 2222)。

优缺点

优点:无需额外安装工具,Linux/macOS原生支持,传输加密;缺点:纯命令行操作,大文件传输速度较慢,需手动输入密码(可配置SSH密钥免密)。

如何往linux虚拟机传文件

SFTP(SSH File Transfer Protocol)

SFTP是基于SSH的文件传输协议,提供交互式命令行和图形界面客户端,支持目录操作和权限管理,功能比SCP更灵活。

原理

在SSH连接基础上构建文件传输层,支持文件上传、下载、删除、重命名等操作,类似FTP但更安全。

操作步骤

  1. 安装SSH服务:同SCP步骤,确保虚拟机开启SSH。
  2. 使用图形客户端(以FileZilla为例):
    • 打开FileZilla,协议选择“SFTP”,主机填虚拟机IP,用户名和密码为虚拟机系统账号,端口默认22。
    • 登录后,左侧为宿主机文件,右侧为虚拟机文件,直接拖拽即可传输。
  3. 使用命令行:
    sftp 用户名@虚拟机IP  
    # 登录后,put命令上传,get命令下载  
    sftp> put /本地文件 /虚拟机路径  
    sftp> get /虚拟机文件 /本地路径  

注意事项

  • SFTP默认使用SSH 22端口,需确保SSH服务正常;部分系统需配置/etc/ssh/sshd_config中Subsystem sftp /usr/lib/ssh/sftp-server。
  • 若遇到权限问题,可检查虚拟机目标目录的写权限(chmod 755 目标目录)。

优缺点

优点:支持目录传输、文件权限管理,图形客户端操作直观;缺点:依赖SSH服务,传输速度受网络和SSH加密影响。

U盘/移动设备挂载

通过USB直通功能将物理U盘连接到虚拟机,挂载后访问文件,适合无网络环境或大文件传输。

操作步骤

  1. 启用USB直通:
    • VMware:虚拟机设置->USB控制器->勾选“启用USB 2.0”或“USB 3.0”,虚拟机菜单“连接USB设备”->选择U盘。
    • VirtualBox:设备->USB->选择U盘(需提前安装VirtualBox Extension Pack)。
  2. 识别U盘:在虚拟机命令行执行fdisk -l,查看U盘设备名(如/dev/sdb1,注意区分系统磁盘)。
  3. 创建挂载点并挂载:
    mkdir /mnt/usb  # 创建挂载目录  
    mount /dev/sdb1 /mnt/usb  # 挂载U盘  
  4. 访问文件:通过cd /mnt/usb访问U盘内容,使用后执行umount /mnt/usb卸载。

注意事项

  • 避免挂载系统盘:确认/dev/sdb1为U盘(可通过lsblk查看设备大小和类型)。
  • 若U盘为NTFS格式,需安装ntfs-3g(apt install ntfs-3g),挂载命令改为mount -t ntfs-3g /dev/sdb1 /mnt/usb。

优缺点

优点:适合大文件传输,无需网络;缺点:依赖USB直通功能,需手动挂载/卸载,跨平台兼容性(如Windows虚拟机挂载Linux分区可能需额外工具)。

网络共享(NFS/Samba)

通过NFS(Linux间)或Samba(跨平台)实现网络共享,适合长期、多用户访问的场景。

NFS(Network File System)

  1. 服务器端(宿主机)配置:
    • 安装nfs-kernel-server:apt install nfs-kernel-server。
    • 配置/etc/exports:添加共享目录及权限(如/home/share *(rw,sync,no_root_squash),表示所有IP可访问,rw为读写权限)。
    • 重启服务:systemctl restart nfs-kernel-server。
  2. 客户端(虚拟机)配置:
    • 安装nfs-common:apt install nfs-common。
    • 挂载共享目录:mount 宿主机IP:/home/share /mnt/nfs。
    • 开机自动挂载:编辑/etc/fstab,添加宿主机IP:/home/share /mnt/nfs nfs defaults 0 0。

Samba(兼容Windows/Linux)

  1. 服务器端(宿主机)配置:
    • 安装samba:apt install samba。
    • 配置/etc/samba/smb.conf:添加共享段(如[share] path=/home/share valid users=user1 writable=yes)。
    • 创建Samba用户:smbpasswd -a user1(需提前创建系统用户useradd user1)。
    • 重启服务:systemctl restart smbd nmbd。
  2. 客户端(虚拟机)访问:
    • Linux:安装smbclient,执行smbclient //宿主机IP/share -U user1或挂载mount -t cifs //宿主机IP/share /mnt/smb -o username=user1。
    • Windows:在文件资源管理器地址栏输入\宿主机IPshare,输入用户名密码访问。

注意事项

  • NFS需111端口,Samba需139/445端口,防火墙需放行(如ufw allow 111/tcp)。
  • NFS配置简单但仅限Linux,Samba跨平台兼容性好,适合混合环境。

优缺点

优点:适合长期共享,多用户同时访问;缺点:配置较复杂,需额外服务支持。

如何往linux虚拟机传文件

云存储同步

通过云存储(如百度云盘、阿里云OSS、Google Drive)中转文件,适合跨设备、跨平台传输。

操作步骤

  1. 宿主机上传文件:将文件上传至云存储(如网页端、客户端)。
  2. 虚拟机下载文件:在虚拟机中通过网页下载或安装云存储客户端(如rclone支持多平台)。
  3. 使用rclone同步:
    • 安装rclone:curl https://rclone.org/install.sh | sudo bash。
    • 配置云存储:rclone config,按提示添加云存储(如百度网盘)。
    • 同步文件:rclone copy 本地目录 云存储:远程目录(上传)或rclone copy 云存储:远程目录 本地目录(下载)。

注意事项

  • 依赖网络速度,大文件上传/下载耗时;注意云存储服务费用和隐私政策。

优缺点

优点:跨设备、跨平台通用,适合备份和远程传输;缺点:依赖网络,传输速度受云存储服务限制。

不同方法对比

方法 适用场景 额外配置需求 安全性 操作复杂度 传输速度
共享文件夹 频繁小文件交换,图形界面操作 安装虚拟机工具 中 低 快(本地直通)
SCP 命令行传输,小到中等文件 开启SSH服务,防火放行22 高 中 中等
SFTP 交互式传输,目录/权限管理 开启SSH服务,客户端工具 高 中 中等
U盘挂载 大文件,无网络环境 USB直通,手动挂载 高 中 快(USB 3.0+)
网络共享(NFS/Samba) 长期共享,多用户访问 配置NFS/Samba服务,防火放行端口 中 高 中等(依赖网络)
云存储同步 跨设备远程传输,备份 云存储账号,网络连接 中 低 依赖网络速度

相关问答FAQs

Q1: 使用SCP传输文件时提示“Permission denied”,如何解决?
A: 可能原因及解决方法:(1)虚拟机目标路径权限不足:使用chmod 757 目标路径赋予写权限;(2)SSH密钥认证失败:检查~/.ssh/authorized_keys是否包含正确公钥,或改用密码传输;(3)防火墙拦截:执行firewall-cmd --list-ports确认22端口已开放,未开放则执行firewall-cmd --add-port=22/tcp --reload;(4)用户权限问题:确认用户对目标目录有执行权限(x权限),可通过chmod a+x 目标目录添加。

Q2: 共享文件夹挂载失败,提示“mount error: No such device”,如何处理?
A: 主要原因是虚拟机工具未正确安装或共享文件夹未启用,解决步骤:(1)VMware:检查“虚拟机设置”->“选项”->“共享文件夹”是否已添加共享目录并勾选“启用”;重新安装VMware Tools:在虚拟机菜单选择“重新安装VMware Tools”,挂载光盘后运行./vmware-install.pl;(2)VirtualBox:检查“设备”->“共享文件夹”->“共享文件夹设置”是否添加共享目录并勾选“固定分配”;安装增强功能:在虚拟机菜单选择“安装增强功能”,挂载光盘后运行VBoxLinuxAdditions.run;(3)挂载命令错误:VMware共享文件夹挂载点为/mnt/hgfs,VirtualBox为/mnt/share(需与共享名一致),检查命令格式是否正确。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16329.html

赞 (0)
酷番叔酷番叔
上一篇 2025年8月24日 23:18
下一篇 2025年8月24日 23:31

相关推荐

  • 在Linux操作系统中,PDF文件如何添加文字与图形标注?

    在Linux系统中,为PDF文档添加标注是日常办公和学习中的常见需求,无论是高亮重点、添加文字批注,还是绘制图形标记,都有多种工具可以实现,本文将详细介绍几种主流的Linux PDF标注工具及其使用方法,帮助用户根据需求选择合适的方案,轻量级工具:Evince(适合快速标注)Evince是GNOME桌面环境默认……

    2025年9月19日
    26700
  • Linux环境下如何编写C语言程序?

    在Linux环境下进行C语言开发是许多开发者和学习者的选择,Linux系统提供了强大的命令行工具和编译器,使得C语言开发流程高效且灵活,下面将详细介绍从环境搭建到代码编写、编译、运行及调试的全过程,开发环境准备在Linux下写C语言,首先需要安装必要的编译器和开发工具,Linux发行版通常自带GCC(GNU C……

    2025年9月21日
    26000
  • Linux系统编译内核的完整流程、工具准备、步骤及注意事项有哪些?

    在Linux系统中编译内核是一项高级操作,通常用于定制系统功能、优化性能或修复内核漏洞,虽然过程相对复杂,但遵循详细步骤可以顺利完成,以下是完整的内核编译流程,从准备工作到最终测试,涵盖关键环节和注意事项,准备工作编译内核前需确保系统环境满足要求,避免中途因依赖或资源不足失败,备份数据内核编译涉及系统核心组件……

    2025年10月6日
    26300
  • Linux系统如何使用命令行设置DNS服务器的详细步骤?

    在Linux系统中,DNS(域名系统)配置的正确性直接影响网络访问能力,通过命令行设置DNS是系统管理和运维中的基础技能,Linux系统设置DNS的方式因发行版和网络管理工具的不同而有所差异,本文将详细介绍常见配置方法,包括临时修改、永久配置及不同发行版的适配方案,并附上验证方法和注意事项,直接编辑/etc/r……

    2025年9月29日
    26000
  • 在Linux系统中如何实现中文输入?

    在Linux系统中输入中文是许多中文用户的基本需求,由于Linux系统本身默认使用英文界面,且输入法机制与Windows有所不同,因此需要通过特定的配置和安装输入法框架来实现中文输入,本文将详细介绍在Linux中输入中文的完整流程,包括输入法框架的选择、安装、配置,以及常见问题的解决方法,Linux中文输入的基……

    2025年10月6日
    27500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信