如何往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)
酷番叔酷番叔
上一篇 3小时前
下一篇 3小时前

相关推荐

  • Linux系统如何更改域名?详细步骤与方法指南

    在Linux系统中更改域名涉及多个层面的配置,包括系统主机名、DNS解析、Web服务配置及本地hosts文件等,不同场景下操作步骤有所不同,需结合实际需求逐步调整,以下从基础到进阶详细说明更改域名的全流程,涵盖常见Linux发行版(如Ubuntu/Debian、CentOS/RHEL)的差异操作,修改Linux……

    2天前
    400
  • 如何检查运行中的FTP进程?

    在Linux系统中关闭FTP服务是提升服务器安全性的重要操作,尤其考虑到FTP协议使用明文传输敏感数据(如用户名、密码),存在被嗅探的风险,以下是详细操作指南,涵盖主流Linux发行版(Ubuntu/Debian/CentOS)和常见FTP服务软件(vsftpd/proftpd/pure-ftpd):确认当前运……

    2025年7月17日
    2200
  • Makefile中目标依赖命令如何协作?

    在 Linux 下编写和使用 Makefile 的完整指南Makefile 的核心价值Makefile 是 Linux 开发中的自动化构建工具,通过定义依赖关系和构建规则实现:高效编译:仅重新编译修改过的文件(增量编译)跨平台兼容:同一脚本在 GCC/Clang 等环境通用复杂项目管理:支持多目录、多目标的大型……

    2025年6月20日
    3000
  • 如何安全修改Linux hosts文件?

    hosts文件的作用hosts文件(路径:/etc/hosts)是本地域名解析的配置文件,优先级高于DNS服务器,当访问域名时,系统会先查询此文件,再转向DNS,典型应用场景:将域名指向特定IP(如测试服务器)屏蔽广告域名(如 0.0.1 ads.com)本地开发环境配置(如 168.1.10 myapp.lo……

    2025年6月27日
    2700
  • Linux如何三步打开U盘?

    准备工作插入U盘将U盘插入电脑USB接口(建议使用USB 2.0/3.0原生接口),避免使用扩展坞或损坏的接口,可能导致识别失败,检测U盘是否被识别方法1:命令行检测(推荐)打开终端(Ctrl+Alt+T),执行:sudo fdisk -l在输出结果中查找类似 /dev/sdb1 或 /dev/sdc1 的条目……

    2025年7月9日
    2600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信