如何往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,使用文本编辑器nano(新手友好)命令:nano 文件名示例:打开notes.tx……

    2025年7月23日
    4300
  • Linux系统如何搭建SSH实现动态密码登录的配置方法?

    在Linux系统中搭建SSH动态密码登录,通常指通过集成动态密码(如一次性密码OTP)增强SSH登录安全性,防止密码泄露或暴力破解,以下是详细搭建步骤,以Google Authenticator(基于TOTP算法)为例,实现静态密码+动态密码的双因素认证(2FA),安装必要软件首先需安装Google Authe……

    2025年9月30日
    1400
  • Linux系统中如何重启SVN服务?

    SVN(Subversion)作为广泛使用的版本控制系统,其服务稳定性直接影响团队开发效率,当SVN服务出现配置不生效、连接中断或资源占用异常等问题时,重启服务是快速恢复的有效手段,本文将详细讲解Linux环境下不同SVN服务架构的重启方法,涵盖独立svnserve服务、Apache集成服务及systemd管理……

    2025年9月24日
    1700
  • Linux服务器如何正确关机?不同场景下的操作方法详解

    Linux服务器关机是系统维护中的重要操作,正确的关机流程可以避免数据丢失或硬件损坏,本文将详细介绍Linux服务器关机的多种方法、命令参数、适用场景及注意事项,帮助管理员根据实际需求选择合适的关机方式,Linux关机原理与流程Linux关机并非直接切断电源,而是通过一系列有序步骤确保系统安全关闭:首先通知所有……

    2025年9月8日
    2600
  • Linux下PPM格式如何转换成数组?

    在Linux环境下,将PPM(Portable Pixel Map)图像文件转换为数组是一个常见的需求,尤其在图像处理、计算机视觉等领域,PPM是一种简单的光栅图像格式,支持ASCII和二进制两种编码方式,存储像素的RGB颜色信息,将其转换为数组通常是指将像素数据提取出来,存储为二维(灰度)或三维(RGB)数组……

    2025年10月1日
    900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信