如何在没有 FTP、SCP 或 NFS 的情况下从 Ubuntu Server 14.04 VM 检索目录(文件夹)

如何在没有 FTP、SCP 或 NFS 的情况下从 Ubuntu Server 14.04 VM 检索目录(文件夹)

我有点为难。几个月前我开始了目前的工作,我有一个在 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,甚至无法从控制台访问:

  1. 如果是 ESXi 5.0 或更高版本,并且服务器已安装 VMware Tools,请使用 PowerCLI 和复制 VMGuestFilecmdlet 从中复制文件。
  2. 它是一个虚拟机,在某个隔离的地方恢复它的备份,启动它,对文件进行您想要的所有更改。
  3. 它是一个虚拟机,恢复磁盘的备份并下载并挂载 VMDK 文件。

即使您没有 SSH 访问权限,假设您有某种访问权限来键入命令并通过 VM 控制台管理服务器:

  1. 它是一个网络服务器,通过浏览器下载文件
    1. 也许可以将它们 gzip 压缩到 /tmp(内存)中,并将符号链接到 Web 服务器文件夹,以避免更改 Apache 配置
  2. 是否安装了 FTP 客户端?通过 FTP 从服务器到其他地方并上传文件。

    1. 是否安装了 SSH 客户端?通过 SCP 将客户端从服务器传输到远程 SSH 服务器
    2. 通过电子邮件将其发送给自己
    3. WGET/Curl 将POST它们上传到远程 Web 服务器
    4. 通过 TFTP 将其发送出去
  3. 它是否安装了 netcat ( nc)?您可以将tar | nc数据通过管道和流式传输到套接字,并nc | tar在网络上的另一台计算机上使用它来接收。例子

  4. 如果是典型的 Linux 安装,可能会有 Python,Python 自带简单HTTP服务器模块默认将当前目录作为网站提供服务,在主网络服务器的不同端口上运行该模块并从那里下载文件。
  5. 脚本将它们作为二进制 blob 填充到数据库中的内存表中,然后从客户端中选择它们可能相关
  6. 服务器是否将系统日志发送到远程目标?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/其他一切。

相关内容