Avez-vous déjà vécu ce moment à couper le souffle lorsque vous vous rendez compte que vous avez accidentellement supprimé toutes vos entrées Crontab ? Si vous hochant la tête, vous n'êtes pas seul. J'ai également fait cette erreur il y a quelque temps.
L'exécution accidentelle de Crontab -R est une erreur qui peut arriver à n'importe qui, même des utilisateurs de Linux expérimentés, compte tenu de la proximité des clés «R» et «E».
La commande crontab -r, qui supprime tous vos travaux Cron planifiés, est notoirement facile à exécuter par erreur, d'autant plus qu'il est dangereusement proche de Crontab -e, la commande de modifier ces entrées.
Mais ne vous inquiétez pas! Dans cet article, nous allons expliquer comment récupérer vos entrées Crontab perdues , comment sauvegarder régulièrement les entrées de Crontab et des stratégies pour empêcher les entrées de Crontab de la suppression accidentelle à l'avenir.
Table des matières
Il y a quelque temps, je voulais exécuter Crontab -e pour modifier mes travaux prévus, mais mes doigts m'ont trahi et je suis allé à Crontab -r à la place. Soudain, tous mes travaux de cron soigneusement planifiés ont disparu.
Étant donné que les touches "E" et "R" sont côte à côte sur le clavier, j'ai accidentellement dirigé la commande crontab -r au lieu de crontab -e, et en un clin d'œil, j'ai perdu toutes mes entrées crontab.
Pour ceux qui se demandent, la commande crontab -r supprime le crontab de l'utilisateur actuel sans aucune invite de confirmation, ce qui peut entraîner la perte de tous les travaux CRON prévus.
Cette erreur est facile à commettre, en particulier sous la pression d'une journée bien remplie ou de la distraction du multitâche.
Voici comment vous pouvez aborder la situation et prévenir les incidents futurs.
Tout d'abord, respirez profondément. La situation n'est peut-être pas aussi désastreuse qu'il n'y paraît. Alors que les systèmes Unix et Linux n'ont pas de bouton "Annuler" pour Crontab -R, il y a quelques endroits où vous pouvez rechercher une sauvegarde:
Une fois que vous avez récupéré vos entrées Crontab (ou, malheureusement, si vous ne l'avez pas fait), il est crucial de démarrer une routine de sauvegarde pour éviter les maux de tête futurs.
Pour éviter les pertes futures, voici quelques stratégies pour sauvegarder les entrées Crontab:
Vous devriez prendre l'habitude de sauvegarder manuellement vos entrées Crontab avant de les modifier. Bien que les sauvegardes manuelles soient meilleures que rien, ils comptent sur vous en vous souvenant de les faire.
Pour sauvegarder votre crontab manuellement, courez:
$ crontab -l> ~ / backup_crontab.txt
Stockez cette sauvegarde dans un emplacement sûr, peut-être dans un référentiel contrôlé par version ou un service de stockage cloud.
La mise en place d'un travail Cron quotidien pour sauvegarder automatiquement vos entrées Crontab est un excellent moyen de vous assurer que vous avez toujours une copie récente de vos travaux CRON.
Cette pratique réduit considérablement le risque de perte de données due à une suppression accidentelle ou à d'autres problèmes imprévus. Voici un exemple simple de la façon dont vous pouvez créer un tel travail cron:
Modifiez votre commande crontab avec crontab -e et ajoutez une nouvelle ligne quelque chose comme ci-dessous pour sauvegarder automatiquement les entrées Crontab à un moment précis:
0 1 * * * crontab -l> / path / to / backup / répertoire / crontab_backup _ $ (date \% y - \% m - \% d) .txt
Remplacez le / path / vers / backup / répertoire / par votre propre chemin.
Cette commande crée une sauvegarde de vos entrées Crontab tous les jours à 1 h du matin, avec un nom de fichier qui comprend la date de sauvegarde, ce qui facilite le suivi et la restauration si nécessaire.
Il y a un problème avec l'approche ci-dessus. Il continuera de créer de nouveaux fichiers tous les jours à 1 h. Ceci est inefficace car le répertoire de sauvegarde se développera indéfiniment.
Pour éviter cela, vous pouvez envisager de mettre en œuvre un système de rotation et de nettoyage pour vos sauvegardes. De cette façon, vous empêchez votre répertoire de sauvegarde de croître trop grand en maintenant uniquement un nombre défini de fichiers de sauvegarde récents.
J'ai fait un script simple qui fait exactement cela. Il sauvegarde vos entrées Crontab à un fichier dans un répertoire spécifique. De plus, il se débarrasse automatiquement des anciens sauvegardes après un certain temps.
De cette façon, votre dossier de sauvegarde reste soigné et ne se remplit pas d'anciens fichiers dont vous n'avez plus besoin.
Créez le script de sauvegarde :
Tout d'abord, créez un script qui enregistrera vos entrées Crontab actuelles sur un fichier. Vous voudrez peut-être inclure un horodatage dans le nom de fichier pour garder une trace de différentes sauvegardes au fil du temps.
Voici un exemple de script de base.
Créez un fichier, par exemple ~ / cron_backup.sh, avec le contenu suivant.
#! / bin / bash # Définir le répertoire de sauvegarde et le nom de fichier Backup_dir = "$ home / cron_backups" File_name = "crontab_backup _ $ (date '% y-% m-% d'). Txt" # Nombre de jours pour maintenir les sauvegardes Days_to_keep = 30 # Assurez-vous que le répertoire de sauvegarde existe mkdir -p "$ backup_dir" # Enregistrer les entrées Crontab sur le fichier crontab -l> "$ backup_dir / $ file_name" # Supprimer les fichiers de sauvegarde plus anciens que le nombre de jours spécifié trouver "$ backup_dir" -name 'crontab_backup _ *. txt' -type f -mtime $ days_to_keep -exec rm {} \;
Ce script est conçu pour sauvegarder vos entrées Crontab et gérer ces sauvegardes afin d'empêcher que votre répertoire de sauvegarde ne soit encombré de vieux fichiers.
Voici une ventilation de la façon dont ce script fonctionne, étape par étape:
En exécutant ce script, vous créez automatiquement une nouvelle sauvegarde de vos entrées Crontab à chaque fois et gardez le répertoire de sauvegarde propre en supprimant les sauvegardes plus anciennes qu'un certain nombre de jours. Cette approche aide à maintenir une histoire récente des entrées Crontab sans gérer manuellement les sauvegardes.
Enregistrez le fichier et fermez-le. Puis le rendre exécutable en fonctionnant:
$ chmod x ~ / cron_backup.sh
Planifiez le travail de sauvegarde :
Ensuite, planifiez ce script pour fonctionner quotidiennement via votre crontab. Modifiez votre crontab avec Crontab -e et ajoutez une nouvelle ligne pour le script de sauvegarde. Par exemple, pour exécuter la sauvegarde quotidiennement à 1h00, vous ajouteriez:
0 1 * * * / bin / bash $ home / cron_backup.sh
Cette configuration garantit que chaque jour, vous aurez une nouvelle sauvegarde de votre crontab, stocké en toute sécurité dans votre répertoire spécifié.
Stockez votre fichier Crontab dans un système de contrôle de version (VCS) comme Git . Cela sauvegarde non seulement le fichier, mais conserve également un historique de modifications, vous permettant de revenir aux versions précédentes si nécessaire.
Assurez-vous que votre stratégie de sauvegarde comprend des sauvegardes au niveau du système qui capturent tout l'état du système, y compris tous les crontabs des utilisateurs.
Nous avons examiné et publié des guides sur divers outils de sauvegarde sur notre blog. Veuillez explorer nos archives pour trouver celle qui répond le mieux à vos besoins.
Conseils supplémentaires:
Si vous avez accidentellement exécuté Crontab -R et supprimé vos entrées CRONTAB, mais que vous les souteniez régulièrement comme discuté dans la section précédente, la restauration de votre crontab est simple.
Voici comment vous pouvez restaurer vos entrées Crontab à partir de la sauvegarde:
1. Localisez votre fichier de sauvegarde le plus récent :
Tout d'abord, vous devez trouver la sauvegarde la plus récente de votre crontab. Si vous suivez l'exemple de stratégie de sauvegarde, vos sauvegardes seraient situées dans un répertoire spécifique (par exemple, $ home / cron_backups) et nommé avec un tampon de date pour une identification facile.
2. Passez en revue le contenu de sauvegarde :
Avant de restaurer, c'est une bonne pratique de revoir le contenu du fichier de sauvegarde pour s'assurer qu'il contient les entrées Crontab attendues. Vous pouvez utiliser une commande comme CAT ou moins pour afficher le fichier:
$ cat $ home / cron_backups / crontab_backup _ $ (date '% y-% m-% d'). txt
Si la sauvegarde d'aujourd'hui n'a pas encore été créée ou si vous devez restaurer à partir d'une date spécifique, ajustez la date de la commande en conséquence.
3. Restaurez le crontab de la sauvegarde :
Une fois que vous avez identifié le fichier de sauvegarde correct et confirmé son contenu, vous pouvez restaurer vos entrées Crontab en utilisant la commande crontab avec le fichier de sauvegarde comme entrée:
$ crontab $ home / cron_backups / crontab_backup _ $ (date '% y-% m-% d'). txt
Encore une fois, ajustez la date de la commande pour correspondre au fichier de sauvegarde que vous avez l'intention d'utiliser pour la restauration.
4. Vérifiez la restauration :
Après la restauration, il est crucial de vérifier que votre crontab a été correctement restauré et contient toutes les entrées attendues. Utilisez la commande crontab -l pour répertorier les entrées Crontab actuelles:
$ crontab -l
Vérifiez les entrées répertoriées par rapport à votre sauvegarde pour vous assurer que le processus de restauration a réussi.
Conseils pour la restauration:
Enfin, parlons de la façon d'empêcher cette erreur de se produire à l'avenir.
L'ajout d'un alias pour Crontab avec l'option -i dans votre script de profil est un moyen intelligent et efficace de sauvegarder contre la suppression accidentelle de vos entrées Crontab.
L'option -I pour Crontab fournit une invite interactive qui demande une confirmation avant de supprimer votre crontab, ce qui peut empêcher la perte involontaire de vos travaux CRON.
Configuration de l'alias:
Vous pouvez créer un alias dans votre profil de shell pour remplacer Crontab -R avec Crontab -I, ce qui oblige la commande pour demander la confirmation avant de supprimer quoi que ce soit.
Ajoutez la ligne suivante à votre ~ / .bashrc, ~ / .bash_profile, ou équivalent:
alias crontab = 'crontab -i'
Après avoir ajouté l'alias au script de profil choisi, vous devrez appliquer les modifications. Pour que les changements soient reconnus, vous pouvez soit:
Par exemple, si vous avez ajouté l'alias à ~ / .bashrc, vous pouvez courir:
$ source ~ / .bashrc
Test de l'alias:
Pour vous assurer que votre alias fonctionne comme prévu, vous pouvez le tester de manière sûre en essayant de supprimer une entrée CRONTAB non critique ou temporaire. Lorsque vous exécutez Crontab -R, vous devriez maintenant voir une invite demandant une confirmation, quelque chose comme:
Crontab: Supprimer vraiment Crontab? (O / N)
Cette invite est votre confirmation que l'alias fonctionne correctement et aidera à prévenir les suppressions accidentelles de crontab à l'avenir.
Double-vérification habituelle :
Cultivez l'habitude de revérifier la commande avant d'appuyer sur Entrée. Cela peut sembler une petite chose, mais cela peut vous éviter beaucoup de problèmes.
La suppression accidentelle de vos entrées Crontab est une expérience frustrante, mais ce n'est pas la fin du monde. En suivant ces étapes et conseils, vous pouvez facilement récupérer les entrées Crontab accidentellement supprimées.
Vous pouvez également éviter cet accident à l'avenir en sauvegardant automatiquement les entrées Crontab en utilisant notre script de shell simple.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!