Très bien si quelqu'un veut jouer à Dieu et faire des miracles, je suis en panne.
Donc, on m'a confié la tâche de créer un script qui a trouvé des fichiers de plus de 6 mois, les a zippés puis les a supprimés. Sur mon chemin en faisant ce script, j'ai couru ceci:
find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla
Et cela a donné à CHAQUE SINGLE FILE une extension .gz. Maintenant, je l'ai défait dès que j'ai remarqué mais c'était un peu trop tard. Une fois la commande terminée, aucune de mes commandes bash ne fonctionnerait car la variable $ PATH s'est vidée d'elle-même. J'ai essayé beaucoup de choses avant de réaliser quel était le problème.
Donc, après avoir décompressé tout ce que je ne peux toujours pas démarrer. J'ai réussi à faire le sauvetage, après avoir suivi les instructions en ligne pour:
root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]
Après quoi mon linux démarre partiellement mais me donne les erreurs suivantes:
Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.
J'ai essayé de réparer le système de fichiers, j'ai démarré à partir de 3 disques LiveCD / Rescue différents, j'ai exécuté la réparation de démarrage à partir de 2 dicsc différents. J'ai forcé des fscks ...
Je suis vraiment à court d'idées et j'ai besoin d'obtenir ce serveur pour démarrer au moins afin que je puisse récupérer mes bases de données SQL. Je cherche désespérément de l'aide, je paierai même si besoin est.
Je rôde dans les forums depuis 3 jours toute la journée pour trouver une solution possible et je suis toujours au même point ... Aide s'il vous plait?
because of version differences,
réinstaller avec la même version exacte.we have corruption issues,
vos données peuvent être corrompues. Réparer le système pour qu'il soit amorçable, ne vous aidera pas si les données ont été jetées. Si votre commande gzip a compressé vos fichiers de base de données alors que la base de données était corrompue, cela semble inévitable.Réponses:
Cela dépendra si les systèmes de fichiers sont suffisamment réparés pour que vous puissiez monter ces partitions à partir d'un LiveCD. Ne vous embêtez pas encore à essayer de démarrer le système. Tout d'abord, montez les partitions et décompressez tous les fichiers .gz. Cela vous donnera des copies de travail des binaires init et système. Ensuite, vous pouvez utiliser grub pour réparer le secteur de démarrage. Ensuite, démarrez en mode mono-utilisateur et fsck à nouveau le système de fichiers. Si cela fonctionne, vous aurez un système en cours d'exécution. Vous aurez également un tas de fichiers décompressés (comme les pages de manuel) qui devraient vraiment être zippés, mais c'est mieux que d'avoir un système non amorçable.
Si vous ne pouvez pas monter les partitions à partir d'un LiveCD, vous n'avez malheureusement pas de chance. Rien ne récupérera votre système à ce stade.
la source
La première chose que j'essaierais est d'exécuter un environnement LiveCD et d'essayer de tout décompresser, en espérant que cela ramènerait le système à un état de démarrage. Remarque: je serais préoccupé par la corruption potentielle des données si le processus gzip d'origine était interrompu.
Sinon, j'essaierais de migrer la base de données vers un nouveau système comme d'autres l'ont suggéré, mais comme vous l'avez rencontré, il peut y avoir des problèmes de dépendance et de configuration à forte intensité de main-d'œuvre qui devront être résolus individuellement.
la source
Le consensus général ici, que vous devez simplement monter le disque dans un système qui fonctionne et sauver vos fichiers, n'est pas faux. C'est la chose sensée à faire. Mais l'autre manière est plus amusante et très éducative. J'ai beaucoup appris en me battant pour sortir de situations désordonnées où d'autres personnes auraient simplement abandonné et réinstallé à partir de zéro. (Pas sur un serveur dont dépendent d'autres personnes cependant ...)
Quoi qu'il en soit, jusqu'à présent, vous avez un initramfs (initrd) qui s'exécute. Voilà un bon début. Mais il ne peut pas terminer le transfert à init car init est
init.gz
peut-être maintenant ? Pour faire des progrès, il serait utile de savoir exactement quelle distribution Linux vous avez, afin que nous puissions rechercher quels outils sont disponibles dans ses initramfs pour une utilisation d'urgence.Les messages d'erreur que vous avez présentés semblent provenir des initramfs de Debian. S'il s'agit de Debian, vous devriez avoir obtenu une
(initramfs)
invite shell sur la ligne suivante après la dernière erreur. Si vous l'avez fait, vous devriez vérifier ce qui se passe avec ces montures qui ont échoué. est/root/dev
manquant? (/root
est l'endroit où votre fs racine normal doit être monté pendant l'exécution des initramfs)Si vous n'avez pas reçu l'invite du shell, ce qui est venu après
No init found. Try passing init= bootarg.
sera intéressant. Même si ce n'était qu'un curseur clignotant, c'est un indice. Si cela semble totalement figé, essayez d'obtenir des informations sur les processus qui existent toujours à l'aide de Magic Sysrq ou Ctrl + ScrollLock.Les initramfs Debian vous permettent également de demander un shell à quelques points de repère spéciaux en ajoutant un
break=
paramètre à la ligne de commande du noyau. Par exemple, pour obtenir un shell avant laRunning /scripts/init-bottom
ligne, utilisezbreak=bottom
.En plus: Je ne sais pas comment la
find
commande aurait pu compresser chaque fichier ... elle me semble correcte dans le but de sélectionner des fichiers entre 180 et 400 jours.la source
break=bottom
?) ... oui, au moment où il essaie de monter/root/dev
et/root/proc
et/root/sys
,/root
devrait être le véritable système de fichiers racine. Il doit y avoir eu un message d'erreur plus tôt, à propos de l'échec du montage. Avez-vous inclus unroot=
paramètre dans la ligne de commande du noyau? Ma mémoire est un peu floue sur ce point mais je pense que leroot (hd0,0)
juste indique à grub où trouver ses fichiers de support, et vous devez toujours dire au noyau séparément où se trouve la racine.(initramfs)
invite, quelque chose commemount -r /dev/sda1 /root
?cat /proc/partitions
pour voir quels disques sont disponibles.