拯救无法“找到”或执行任何命令的 Linux 服务器

拯救无法“找到”或执行任何命令的 Linux 服务器

在一系列不幸的事件中,一个配置错误的脚本以提升的权限执行,然后执行以下命令:

/usr/bin/rsync --recursive --links --copy-unsafe-links --delete --perms --times --group --owner --bwlimit=20000 / /

显然,那里末尾应该有一些路径,但它运行的目标是文件系统的根目录。

我现在无法ssh进入服务器,而且(虚拟)控制台无法使用(只有黑屏和闪烁的光标)。我确实有一个终端会话仍处于打开状态,并且我还有一个scp能够遍历文件结构的会话,所以我正忙着备份尽可能多的重要内容。

不过,我真的很想看看是否有可能拯救它,因为它似乎仍在运行 - 它有 3 个虚拟 kvm 客户机仍在正常运行。

我似乎能够使用的唯一命令是cdecho,例如:

[root ~] # cd /bin
[root bin] # ls
-bash: /bin/ls: No such file or directory
[root bin] # echo *
bash btrfs btrfsck btrfs-debug-tree btrfs-find-root btrfs-image btrfs-map-logical btrfs-select-super btrfstune btrfs-zero-log bunzip2 busybox bzcat bzcmp bzdiff bzegrep bzexe bzfgrep bzgrep bzip2 bzip2recover bzless bzmore cat chacl chgrp chmod chown chvt cp cpio dash date dd df dir dmesg dnsdomainname domainname dumpkeys echo ed efibootdump efibootmgr egrep false fgconsole fgrep findmnt fsck.btrfs fuser fusermount getfacl grep gunzip gzexe gzip hostname ip journalctl kbd_mode keyctl kill kmod less lessecho lessfile lesskey lesspipe ln loadkeys login loginctl lowntfs-3g ls lsblk lsmod mkdir mkfs.btrfs mknod mktemp more mount mountpoint mt-gnu mv nano nc.openbsd netstat networkctl nisdomainname ntfs-3g ntfs-3g.probe ntfscat ntfscluster ntfscmp ntfsfallocate ntfsfix ntfsinfo ntfsls ntfsmove ntfsrecover ntfssecaudit ntfstruncate ntfsusermap ntfswipe open openvt ping ping4 ping6 plymouth ps pwd rbash readlink red rm rmdir rnano run-parts sed setfacl setfont setupcon sh sh.distrib sleep ss static-sh stty su sync systemctl systemd-ask-password systemd-escape systemd-hwdb systemd-inhibit systemd-machine-id-setup systemd-notify systemd-sysusers systemd-tmpfiles systemd-tty-ask-password-agent tar tempfile touch true udevadm ulockmgr_server umount uname uncompress unicode_start vdir wdctl which whiptail ypdomainname zcat zcmp zdiff zegrep zfgrep zforce zgrep zless zmore znew
[root bin] #

据我所知,所有应该存在的文件都在那里(在/bin、、等/boot/sbin,只需将的输出echo *与另一个工作系统进行比较)。制表符文件名完成功能也正常工作,但我无法执行任何操作。我假设rsync弄乱了文件模式/属性/其他内容(我甚至无法判断脚本是否仍在运行,因为ps也不可用)。

我还假设如果我重新启动它,它将无法启动,但我希望能连接一个 Live CD 并从那里开始救援。

我的问题是(a)考虑到它可能永远不会重新启动,在重新启动之前我还可以尝试其他方法吗?(b)有没有一个好的方法来开始修复已经造成的损害?

相关内容