![如何在没有 FTP、SCP 或 NFS 的情况下从 Ubuntu Server 14.04 VM 检索目录(文件夹)](https://linux22.com/image/687119/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%20FTP%E3%80%81SCP%20%E6%88%96%20NFS%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BB%8E%20Ubuntu%20Server%2014.04%20VM%20%E6%A3%80%E7%B4%A2%E7%9B%AE%E5%BD%95%EF%BC%88%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%89.png)
我有点为难。几个月前我开始了目前的工作,我有一个在 Apache Web 服务器(基于 PHP 的简单服务器)上运行的 Web 应用程序。我需要更新此代码以修复应用程序中的一些问题,并且我想将代码放入适当的源代码环境(即版本控制)。
跳过不相关细节的解释,我需要从 Ubuntu Server 14.04(CLI)虚拟机中检索目录(文件夹)无需在机器上添加或删除任何软件或其他文件。目前机器上没有 FTP 或 SCP 服务器,所以我无法使用它们。而且它缺少 /sbin/mount.nfs 帮助程序,无法挂载 NFS 共享(我们这里有一系列共享文件夹,如果我可以挂载 NFS 共享,我可能会使用这些文件夹来检索文件)。
目前我只有一个想法,那就是将 USB 闪存驱动器插入运行该机器的 ESXi 主机,并将文件复制到该主机。但是,该机器没有 USB 控制器,而且由于它是一台生产机器,我无法在工作日关闭它来安装一个,所以我只能在下班后这样做。因此,(摘要:) 我想知道是否有其他人对如何在没有 FTP、SCP、挂载 NFS 共享或安装任何新文件或软件的情况下从 Ubuntu Server 14.04 VM 检索目录有其他想法。
编辑:没想到会有这么多精彩的回复。暂时删除我接受的答案。等我有机会仔细阅读这些回复并进行实验时,我会把它分配到其他地方。
答案1
除了说出它没有的所有内容之外,还能说出它有的内容吗?文件夹有多大以及有多少可用磁盘空间?
假设您根本无法访问 CLI,甚至无法从控制台访问:
- 如果是 ESXi 5.0 或更高版本,并且服务器已安装 VMware Tools,请使用 PowerCLI 和复制 VMGuestFilecmdlet 从中复制文件。
- 它是一个虚拟机,在某个隔离的地方恢复它的备份,启动它,对文件进行您想要的所有更改。
- 它是一个虚拟机,恢复磁盘的备份并下载并挂载 VMDK 文件。
即使您没有 SSH 访问权限,假设您有某种访问权限来键入命令并通过 VM 控制台管理服务器:
- 它是一个网络服务器,通过浏览器下载文件
- 也许可以将它们 gzip 压缩到 /tmp(内存)中,并将符号链接到 Web 服务器文件夹,以避免更改 Apache 配置
是否安装了 FTP 客户端?通过 FTP 从服务器到其他地方并上传文件。
- 是否安装了 SSH 客户端?通过 SCP 将客户端从服务器传输到远程 SSH 服务器
- 通过电子邮件将其发送给自己
- WGET/Curl 将
POST
它们上传到远程 Web 服务器 - 通过 TFTP 将其发送出去
它是否安装了 netcat (
nc
)?您可以将tar | nc
数据通过管道和流式传输到套接字,并nc | tar
在网络上的另一台计算机上使用它来接收。例子- 如果是典型的 Linux 安装,可能会有 Python,Python 自带简单HTTP服务器模块默认将当前目录作为网站提供服务,在主网络服务器的不同端口上运行该模块并从那里下载文件。
- 脚本将它们作为二进制 blob 填充到数据库中的内存表中,然后从客户端中选择它们可能相关
- 服务器是否将系统日志发送到远程目标?Base64 对文件进行编码,并将其传输到系统日志中……读回时会有所不同。
答案2
如果服务器已经安装了 Python —— 这几乎肯定是安装了的;足够多的系统服务使用了 Python,所以几乎可以保证它存在 —— 你可以使用以下命令启动 HTTP 服务器来从当前目录提供文件:
python -m SimpleHTTPServer 9999
在端口 9999 上启动 Web 服务器。
请记住,此服务器上没有访问控制,因此如果服务器可供公众访问,您可能不想执行此操作。
另一个选择是通过网络传输 tar 存档。假设您有另一台计算机(主机名“客户端”),其 IP 地址为 1.2.3.4,可从 Ubuntu 服务器访问,您可以通过在客户端上运行以下命令来执行此操作:
nc -lp 9999 > files.tar.gz
并在主机上运行:
tar cz /path/to/directory > /dev/tcp/1.2.3.4/9999
虽然这确实会创建一个档案,但档案永远不会写入磁盘 - 它直接通过网络传输 - 因此不存在磁盘空间耗尽的风险。
答案3
希望以定期备份的方式存储虚拟机磁盘 - 这样您可以将备份还原到新位置,然后将 VM 磁盘用作新 VM 中的第二个磁盘。
如果没有官方备份,那么应该有,这需要整理 - 但如果磁盘存储在 LVM 分区上,您可能能够创建快照分区,然后从那里复制磁盘,就像它是备份一样
答案4
虽然这是 ESXi VM,但您必须将另一个 vmdisk 连接到它。然后将所有不重要的内容移动到该磁盘并安装您选择的工具 - ssh/scp/rsync/其他一切。