如何往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 aifconfig,查看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_configSubsystem 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-3gapt 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-serverapt install nfs-kernel-server
    • 配置/etc/exports:添加共享目录及权限(如/home/share *(rw,sync,no_root_squash),表示所有IP可访问,rw为读写权限)。
    • 重启服务:systemctl restart nfs-kernel-server
  2. 客户端(虚拟机)配置
    • 安装nfs-commonapt install nfs-common
    • 挂载共享目录:mount 宿主机IP:/home/share /mnt/nfs
    • 开机自动挂载:编辑/etc/fstab,添加宿主机IP:/home/share /mnt/nfs nfs defaults 0 0

Samba(兼容Windows/Linux)

  1. 服务器端(宿主机)配置
    • 安装sambaapt 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下如何查看文件的大小?

    在Linux系统中,查看文件大小是日常运维和开发中的常见需求,不同命令提供了多样化的查看方式,适用于不同场景,本文将详细介绍几种常用命令及其用法,帮助用户高效获取文件大小信息,ls命令:快速查看文件大小ls是Linux中最基础的文件列表命令,配合参数可直观显示文件大小,基础用法ls -l:以长格式显示文件详细信……

    2025年8月22日
    5700
  • Linux抓包后如何分析数据包?

    Linux环境下抓包是网络故障排查、安全分析、性能优化的核心手段,而抓包后的分析则需要结合工具操作与协议知识,从基础信息到深层逻辑逐步解析,本文以tcpdump、Wireshark为核心工具,分步骤拆解抓包后的分析方法,帮助读者系统掌握流量解读技巧,基础信息快速定位:锁定流量“身份标签”抓包文件(通常为.pca……

    2025年9月18日
    4700
  • Linux磁盘空间不足?如何彻底清理与扩展

    查看磁盘空间使用情况整体磁盘占用 (df命令)df -h # 以人类可读格式(GB/MB)显示所有挂载点关键列解读:Filesystem:磁盘分区名称(如/dev/sda1)Size:分区总容量Used:已用空间Avail:可用空间Use%:使用百分比(≥80%需警惕)Mounted on:挂载路径(如、/ho……

    2025年6月20日
    7000
  • VMware如何使用Linux系统时间?

    在VMware虚拟化环境中,Linux系统时间的准确同步对系统稳定性、任务调度及跨服务协作至关重要,若时间出现偏差,可能导致日志时间戳混乱、认证服务异常(如Kerberos)、定时任务执行失败等问题,VMware提供了多种时间同步机制,结合Linux系统工具可实现精准时间管理,具体操作如下,VMware Too……

    2025年10月8日
    3100
  • linux vi如何新建文件

    Linux 中,使用 vi 新建文件可通过 vi 文件名,若文件不存在

    2025年8月15日
    5200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信