我有一台远程服务器,它就像一个“沙箱”,我会在将所有新软件安装到生产服务器之前,先在里面测试它们。我想清理一下这个系统,但不小心删除了所有 /var 内容。如果我无法重新安装系统,因为我只有 ssh 连接,没有物理访问权限,我该如何恢复它,或者回滚到干净的 debian?
答案1
我会采取如下措施:
获取可以完全在 RAM 中运行的 Linux 发行版。在这种情况下,我们假设您将使用 PLD Rescue Linux(可在此处获得:http://rescuecd.pld-linux.org)。确保使用正确的 CPU 架构(x86 或 x86_64)。
将 iso 挂载到某处(例如 /mnt)并将内核和 initrd 复制到您的 /boot:
cp /mnt/boot/isolinux/vmlinuz /boot/vmlinuz-rescue (vmlinuz6 for x86_64)
cp /mnt/rescue.cpi /boot/rescue.cpi (rescue6.cpi for x86_64)
配置你的引导程序来引导救援系统而不是你的 Debian。内核命令行应该是:
initrd=/boot/rescue.cpi root=/dev/ram0
记住将其设为默认值,由于您没有物理访问权限或 KVM,因此您将无法选择它。
现在重新启动系统。等待一段时间直到 ping 返回,然后以 root 身份 ssh 进入你的机器。密码是:pld
现在有趣的事情开始了。格式化所有系统分区 - 之前挂载在 /、/var/、/boot 等上的所有分区。当然,您可以保留 /home。例如,如果您的系统由 /dev/sda1 上的单个文件系统组成,则运行:
mkfs.ext4 /dev/sda1
将所有内容挂载在 /mnt 下。如有必要,请创建适当的挂载点。
现在您将引导一个基本的 Debian 系统:
debootstrap squeeze /mnt
这会将 Debian Squeeze 安装到 /mnt。等待一切完成(需要一段时间)。挂载绑定虚拟文件系统:
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev
并 chroot 到你的新环境:
chroot /mnt /bin/bash
进入 chroot 后安装 Linux 内核和适当的引导加载程序:
apt-get update
apt-get install linux-image-2.6-i686 (or linux-image-2.6-amd64)
apt-get install grub-pc
您还需要 SSH 元包:
apt-get install ssh
现在编辑 /etc/fstab、/etc/hostname 和 /etc/hosts 以满足您的需求。记得创建具有适当网络配置的 /etc/network/interfaces。仔细检查是否有错误。您将需要网络连接,因为您只能通过 SSH 进入该框。
设置root密码:
passwd
将引导加载程序安装到硬盘的 MBR。如果您按照我的示例安装了 GRUB2,则运行:
update-grub
grub-install /dev/sda
输入“exit”退出 chroot 并卸载 /mnt 下的所有内容。重新启动并向 Ping 之神祈祷。;-)
警告:
在只有 SSH 访问权限的情况下重新安装操作系统总是很危险的,因为您无法在没有功能性网络的情况下调试损坏的系统。首先在 PC 上的虚拟机中练习,然后将这些说明应用到您的服务器上。
答案2
抓住debootstrap
包裹。Debootstrap 可以在某个目录中安装一个启动器 Debian,您可以/var
在此基础上重建一些内容。
当然,你无法正常安装该软件包。请下载并手动解压。
dpkg-deb -x debootstrap_*.deb /
mkdir /chroot
debootstrap squeeze /chroot
现在至少重新创建目录结构和权限,或者只是复制/chroot/var
全部内容。
当然,您无法恢复数据,但系统应该会很不稳定。特别是,除非修复软件包数据库,否则您将无法使用软件包管理工具,而这需要大量工作。我建议您在获得物理访问权限后尽快重新安装。
答案3
如果您的服务器托管在托管公司,他们可能会提供某种远程重新安装操作系统或从救援磁盘启动的方法?也许值得与他们核实这是否可行?(您尚未指定服务器是否托管在公司,或者它是否仅仅是某个遥不可及的远程盒子?)
我托管专用服务器的公司提供了 Web 界面和桌面应用程序,您可以使用它们管理服务器和托管帐户的某些方面。这包括控制机器的启动源,这样我就可以从所选的救援磁盘等中启动,以及擦除并重新安装新操作系统(即使用与您首次订购服务器时他们为服务器配置特定操作系统相同的方法)。