Maison > Tutoriel système > Linux > Comment empêcher les entrées de crontab de la suppression accidentelle dans Linux

Comment empêcher les entrées de crontab de la suppression accidentelle dans Linux

Joseph Gordon-Levitt
Libérer: 2025-03-19 10:45:11
original
237 Les gens l'ont consulté

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

Suppression accidentelle des entrées crontab

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.

Étape 1: Respirez et tentez de récupérer les entrées Crontab perdues

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:

  • Instantanés système ou sauvegardes : Si vous ou votre administrateur système, configurez des sauvegardes ou des instantanés à l'échelle du système, c'est le bon moment pour les vérifier. Vous pourriez être en mesure de restaurer votre fichier Crontab à partir d'une sauvegarde récente.
  • Sauvegarde de l'éditeur : si vous utilisiez Crontab -e avant et quittez l'éditeur sans enregistrer, l'éditeur pourrait avoir laissé un fichier temporaire quelque part dans votre système. Recherchez votre répertoire / TMP ou l'emplacement des fichiers temporaires par défaut de votre éditeur.
  • Outils médico-légaux : dans des cas extrêmes, et si les données sont cruciales, il existe des outils médico-légaux qui peuvent tenter de récupérer des fichiers supprimés, en supposant que les données n'ont pas été écrasées sur le disque. C'est plus complexe et pas toujours réussi.

Étape 2: Établissez une routine de sauvegarde pour sauvegarder les entrées Crontab

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:

2.1. Sauvegarde manuelle

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
Copier après la connexion

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.

2.2. Sauvegarder automatiquement les entrées Crontab à l'aide de Cron

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
Copier après la connexion

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.

2.3. Script de sauvegarde automatisé

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 {} \;
Copier après la connexion

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:

  • #! / bin / bash: cette ligne indique à votre ordinateur que ce script devrait être exécuté avec le shell bash.
  • Backup_dir = "$ home / cron_backups": cette ligne définit une variable nommée backup_dir sur un chemin dans votre répertoire domestique où les sauvegardes seront stockées. Le chemin est ~ / cron_backups.
  • File_name = "crontab_backup _ $ (date '% y-% m-% d'). Txt": cette ligne définit une variable nommée file_name à un nom unique pour le fichier de sauvegarde, qui inclut la date en cours. Par exemple, si vous exécutez le script le 27 février 2024, le nom de fichier serait crontab_backup_2024-02-27.txt.
  • Days_to_keep = 30: spécifie le nombre de jours pour conserver les fichiers de sauvegarde. Dans notre cas, le script conservera vos fichiers de sauvegarde pendant 30 jours. Après 30 jours, il supprimera automatiquement les anciennes sauvegardes pour économiser de l'espace.
  • mkdir -p "$ backup_dir": cette commande crée le répertoire de sauvegarde s'il n'existe pas déjà. L'option -p garantit que la commande ne renvoie pas une erreur si le répertoire existe déjà et permet la création de répertoires imbriqués si nécessaire.
  • crontab -l> "$ backup_dir / $ file_name": Cette commande prend la sortie de Crontab -L (qui répertorie toutes les entrées Crontab pour l'utilisateur actuel) et l'enregistre dans un fichier dans le répertoire de sauvegarde. Le fichier est nommé conformément à la variable fichier_name.
  • Recherchez "$ backup_dir" -name 'crontab_backup _ *. txt' -Type f -mtime $ days_to_keep -exec rm {} \;: Cette commande recherche des fichiers dans le répertoire de sauvegarde qui correspondent au modèle crontab_backup _ *. L'option -Name spécifie le modèle pour faire correspondre les noms de fichiers, -Type F garantit que seuls les fichiers (et non les répertoires) sont pris en compte, -mtime $ days_to_keept des fichiers modifiés plus que days_to_keept il y a quelques jours, et -exec rm {} \; supprime ces fichiers.

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
Copier après la connexion

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
Copier après la connexion

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é.

2.4. Contrôle de version

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.

2.5. Solutions de sauvegarde à l'échelle du système

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.

  • Archive des outils de sauvegarde Linux

Conseils supplémentaires:

  • Sauvegardes à distance : Pour les systèmes critiques, envisagez de synchroniser votre répertoire de sauvegarde avec un emplacement distant ou un service de stockage cloud pour sauvegarder contre la perte de données locale.
  • Surveillance et alertes : implémentez la surveillance de l'exécution de vos travaux de sauvegarde CRON. Des alertes par e-mail ou une journalisation simples peuvent vous aider à rester informé de l'état de vos sauvegardes.

Étape 3: Restaurer les entrées Crontab supprimées de la sauvegarde

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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:

  • Automatisation : Si vous avez besoin de restaurer fréquemment des sauvegardes, envisagez de scripter le processus de restauration pour réduire le potentiel d'erreurs.
  • Intégrité de sauvegarde : vérifiez régulièrement l'intégrité de vos sauvegardes (par exemple, en examinant manuellement les fichiers de sauvegarde) pour vous assurer qu'ils sont créés correctement et contenir les données attendues.
  • Sauvegardes multiples : Maintenez les sauvegardes pendant plusieurs jours ou semaines, en fonction de votre fréquence de mise à jour et de votre capacité de stockage, pour vous assurer que vous pouvez vous remettre de divers points si nécessaire.

Étape 4: Empêcher la suppression accidentelle des entrées Crontab

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'
Copier après la connexion

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:

  • Connectez-vous et reconnectez-vous : cela rechargera vos scripts de profil.
  • Source du script de profil : pour effet immédiat sans vous connecter, vous pouvez trouver le script de profil directement dans votre session de terminal actuelle.

Par exemple, si vous avez ajouté l'alias à ~ / .bashrc, vous pouvez courir:

 $ source ~ / .bashrc
Copier après la connexion

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)
Copier après la connexion

Comment empêcher les entrées de crontab de la suppression accidentelle dans Linux

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.

Conclusion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal