我意外地以 root 用户身份删除了 Digital Ocean droplet 上的“/bin”文件夹?

我意外地以 root 用户身份删除了 Digital Ocean droplet 上的“/bin”文件夹?

我有一个 Digital Ocean droplet,我用它作为我的开发环境。

我删除了/bin目录!!通过 SSH。现在我知道这是一件愚蠢的事情,但现在这是事实。我不擅长使用 UNIX/Linux 系统,但这些是我尝试过的事情,尽管它们看起来很愚蠢。

  1. 我从另一个以 root 用户身份登录的 Ubuntu(来自 AWS - 生产服务器)复制了 bin 文件夹,Permission Denied每当我运行如下命令时都会得到ls

  2. 我尝试从 Digital Ocean 控制面板更改内核并重新启动。我不知道它做了什么,但现在 droplet 没有重新启动。在 Digital Ocean 控制台上看到几个错误,例如:

init: Failed to spawn XXXXX main process: unable to execute: Permission denied

我已经通过 SFTP 从服务器备份了所有必要的数据。如何修复此问题?销毁 droplet 并创建新的 droplet 有帮助吗?

我已经提交了支持请求,但无法等待回复,因为我需要启动并运行它来测试新版本。以下是一些详细信息,希望对您有帮助:我使用它进行 PHP Web 开发。我在实例上运行的工具:Apache、MongoDB、MySQL、PHP5

答案1

对我有用:

  1. 从 SSH 或 Digital Ocean 控制面板关闭 droplet。
  2. 提出支持票以在您的 droplet 上安装恢复 ISO。
  3. 重新启动 droplet 实例(如果尚未启动)并从 DO 控制面板打开控制台。您应该会看到一个带有多个选项的“Digital Ocean 恢复环境”。
  4. 选择选项 1。然后选择选项 2 和选项 4。(基本上安装恢复 ISO、配置网络并启用 SSH/SFTP。
  5. 找到 /mnt 目录并将恢复的文件(如果有)下载到本地机器。
  6. 如果仅恢复您的文件就足够了,请要求支持人员卸载恢复 ISO 并重新启动您的 droplet。
  7. 如果您删除了您的 /bin(像我一样)请继续销毁您的 droplet 并创建另一个并经历重新安装 LAMP 堆栈和/或其他所需工具的痛苦过程。
  8. 记住,不要再使用 root 用户。

答案2

有几种方法可以解决这个问题:

首先,我建议对你的 droplet 进行快照,这是免费的。如果从此时起你采取的任何步骤进一步破坏了你的 droplet,那么你可以从此快照恢复。

创建新的 Droplet 并传输数据是最佳且最安全的选择

另外,尽管我不推荐,但如果您有快照或备份,您可以从另一个 Droplet 复制 /bin,使用 rsync 复制权限。如果您对新的 Droplet 执行此操作,则可能会引起问题,因为文件可能属于不同版本,或者您可能安装了额外的应用程序。

答案3

解决此问题的最佳方法是插入 Linux 安装光盘并重新安装 Linux 操作系统,因为这是保证修复系统并且不会出现与您刚刚执行的操作相关的任何未来问题的唯一方法。如果您的 Linux 安装光盘有修复系统的选项,您可以尝试这样做,但我建议选择重新安装操作系统的选项,因为您备份了要保存的数据。这是使用 root 用户作为默认用户时可能发生的情况的一个典型示例。如果您使用具有 sudo 权限的普通用户,您将无法删除 bin 目录 lol。

相关内容