ホームページ > システムチュートリアル > Linux > Linuxでの偶発的な削除からCrontabエントリを防ぐ方法

Linuxでの偶発的な削除からCrontabエントリを防ぐ方法

Joseph Gordon-Levitt
リリース: 2025-03-19 10:45:11
オリジナル
222 人が閲覧しました

あなたが誤ってすべてのクランタブエントリを削除したことに気付いたとき、あなたは今までにその心を落とす瞬間を経験したことがありますか?あなたが頭をうなずいているなら、あなたは一人ではありません。私もこの間違いをしました。

誤ってCrontab -Rを実行することは、「R」と「E」キーが近接していることを考えると、経験豊富なLinuxユーザーでさえも発生する可能性のある間違いです。

スケジュールされたすべてのCronジョブを削除するCrontab -Rコマンドは、特にこれらのエントリを編集するコマンドであるCrontab -Eに危険にさらされているため、誤って実行するのは簡単です。

しかし、心配しないでください!この投稿では、失われたクロンタブエントリを回復する方法、クロンタブエントリを定期的にバックアップする方法、および将来の偶発的な削除からクランタブエントリを防ぐための戦略を説明します。

目次

Crontabエントリの偶発的な削除

しばらく前に、私はクロンタブ-eを実行して予定されているジョブを編集するつもりでしたが、指は私を裏切り、代わりにクロンタブ-Rに行きました。突然、私の慎重に計画されたクロンの仕事はすべてなくなりました。

キー「E」と「R」はキーボード上で互いに隣に隣接しているため、誤ってCrontab -Eの代わりにCrontab -Rコマンドを実行し、瞬く間にCrontabエントリをすべて失いました。

不思議に思う人のために、Crontab -Rは、確認プロンプトなしで現在のユーザーのCrontabを削除します。これにより、スケジュールされたすべてのCronジョブが失われる可能性があります。

この間違いは、特に忙しい一日のプレッシャーやマルチタスクの気晴らしの下で簡単に行うことができます。

状況に対処し、将来の事件を防ぐ方法は次のとおりです。

ステップ1:呼吸して失われたクロンタブエントリを回復しようとする

まず、深呼吸をしてください。状況は見た目ほど悲惨ではないかもしれません。 UnixおよびLinuxシステムには、Crontab -Rの「元に戻す」ボタンがありませんが、バックアップを探すことができる場所がいくつかあります。

  • システムのスナップショットまたはバックアップ:あなたまたはあなたのシステム管理者がシステム全体のバックアップまたはスナップショットをセットアップした場合、それらを確認するのに良い時期です。 Crontabファイルを最近のバックアップから復元できる場合があります。
  • 編集者のバックアップ:Crontab -eを使用して前に保存せずに編集者を出た場合、編集者はシステムのどこかに一時ファイルを残した可能性があります。 /TMPディレクトリまたはエディターのデフォルトの一時ファイルの場所をご覧ください。
  • フォレンジックツール:極端な場合、データが重要である場合、データがディスクに上書きされていないと仮定して、削除されたファイルの回復を試みることができる法医学ツールがあります。これはより複雑であり、常に成功しているわけではありません。

ステップ2:クロンタブエントリをバックアップするバックアップルーチンを確立する

Crontabエントリを回復したら(または、残念ながら、もしそうでない場合)、将来の頭痛を避けるためにバックアップルーチンを開始することが重要です。

将来の損失を防ぐために、クロンタブエントリをバックアップするためのいくつかの戦略を次に示します。

2.1。手動バックアップ

編集する前に、Crontabエントリを手動でバックアップする習慣を身に付ける必要があります。手動のバックアップは何よりも優れていますが、彼らはあなたがそれらをすることを覚えていることに頼っています。

クロンタブを手動でバックアップするには、実行してください。

 $ crontab -l>〜/backup_crontab.txt
ログイン後にコピー

このバックアップを安全な場所、おそらくバージョン制御リポジトリまたはクラウドストレージサービスに保存してください。

2.2。 Cronを使用してCrontabエントリを自動的にバックアップします

Crontabエントリを自動的にバックアップするために毎日のCronジョブを設定することは、Cronジョブの最近のコピーを常に確保するための優れた方法です。

この慣行は、偶発的な削除またはその他の予期せぬ問題によるデータ損失のリスクを大幅に減らします。このようなCronジョブを設定する方法の簡単な例は次のとおりです。

Crontab -EコマンドでCrontabを編集し、特定の時間に自動的にCrontabエントリをバックアップするには、以下のような新しい行を追加します。

 0 1 * * * crontab -l>/path/to/backup/directory/crontab_backup _ $(日付\%y  -  \%m  -  \%d).txt
ログイン後にコピー

/path/to/backup/directory/を独自のパスに置き換えます。

このコマンドは、バックアップ日を含むファイル名を使用して、毎日午前1時にCrontabエントリのバックアップを作成し、必要に応じて簡単に追跡して復元できるようにします。

2.3。自動バックアップスクリプト

上記のアプローチには1つの問題があります。毎日午前1時に新しいファイルを作成し続けます。これは、バックアップディレクトリが無期限に成長するため、非効率的です。

これを防ぐために、バックアップ用の回転とクリーンアップシステムの実装を検討することができます。このようにして、最近のバックアップファイルの数のみを維持することにより、バックアップディレクトリが大きくなりすぎないようにします。

まさにこれを行う簡単なスクリプトを作成しました。 Crontabエントリを特定のディレクトリ内のファイルにバックアップします。さらに、しばらくすると古いバックアップを自動的に取り除きます。

このようにして、バックアップフォルダーはきちんとしたままで、もう必要ない古いファイルでいっぱいになりません。

バックアップスクリプトを作成します

まず、現在のCrontabエントリをファイルに保存するスクリプトを作成します。ファイル名にタイムスタンプを含めて、時間の経過とともにさまざまなバックアップを追跡することをお勧めします。

これが基本的なスクリプトの例です。

〜/cron_backup.shなどのファイルを作成します。次の内容があります。

 #!/bin/bash

#バックアップディレクトリとファイル名を定義します
backup_dir = "$ home/cron_backups"
file_name = "crontab_backup _ $(date '%y-%m-%d')。txt"

#バックアップを維持する日数
days_to_keep = 30

#バックアップディレクトリが存在することを確認してください
mkdir -p "$ backup_dir"

#crontabエントリをファイルに保存します
crontab -l> "$ backup_dir/$ file_name"

#指定された日数より古いバックアップファイルを削除する
"$ backup_dir" -name 'crontab_backup _*
ログイン後にコピー

このスクリプトは、Crontabエントリをバックアップし、それらのバックアップを管理して、バックアップディレクトリが古いファイルで乱雑になるのを防ぐように設計されています。

このスクリプトの仕組みの内訳は次のとおりです。

  • #!/bin/bash:この行は、このスクリプトをバッシュシェルで実行する必要があることをコンピューターに伝えます。
  • backup_dir = "$ home/cron_backups":この行は、バックアップが保存されるホームディレクトリのパスにbackup_dirという名前の変数を設定します。パスは〜/cron_backupsです。
  • file_name = "crontab_backup _ $(日付 '%y-%m-%d')。txt":この行は、現在の日付を含むバックアップファイルの一意の名前にfile_nameという名前の変数を設定します。たとえば、2024年2月27日にスクリプトを実行すると、ファイル名はcrontab_backup_2024-02-27.txtになります。
  • days_to_keep = 30:バックアップファイルを保持する日数を指定します。私たちの場合、スクリプトはバックアップファイルを30日間保持します。 30日後、古いバックアップを自動的に削除してスペースを節約します。
  • mkdir -p "$ backup_dir":このコマンドは、まだ存在しない場合にバックアップディレクトリを作成します。 -pオプションは、ディレクトリが既に存在する場合、コマンドがエラーを返さないことを保証し、必要に応じてネストされたディレクトリの作成を許可します。
  • crontab -l> "$ backup_dir/$ file_name":このコマンドは、crontab -l(現在のユーザーのすべてのcrontabエントリをリスト)の出力を取得し、バックアップディレクトリのファイルに保存します。ファイルは、file_name変数に従って命名されます。
  • "$ backup_dir" -name 'crontab_backup _* -nameオプションは、ファイル名を一致させるパターンを指定します。 -Type Fは、ファイル(ディレクトリではなく)のみが考慮されることを保証します。これらのファイルを削除します。

このスクリプトを実行することにより、毎回Crontabエントリの新しいバックアップを自動的に作成し、特定の日数よりも古いバックアップを削除してバックアップディレクトリを清潔に保ちます。このアプローチは、バックアップを手動で管理することなく、クロンタブエントリの最近の歴史を維持するのに役立ちます。

ファイルを保存して閉じます。そして、実行して実行可能にします:

 $ chmod x〜/cron_backup.sh
ログイン後にコピー

バックアップジョブをスケジュールします

次に、このスクリプトをスケジュールして、クロンタブを毎日実行します。 Crontab -EでCrontabを編集し、バックアップスクリプトの新しい行を追加します。たとえば、午前1時にバックアップを毎日実行するには、次のことを追加します。

 0 1 * * */bin/bash $ home/cron_backup.sh
ログイン後にコピー

このセットアップにより、毎日、指定されたディレクトリに安全に保存されているCrontabの新しいバックアップが確保されます。

2.4。バージョン制御

Gitのようなバージョン制御システム(VCS)にCrontabファイルを保存します。これはファイルをバックアップするだけでなく、変更の履歴を保持し、必要に応じて以前のバージョンに戻ることができます。

2.5。システム全体のバックアップソリューション

バックアップ戦略には、すべてのユーザークロンタブを含むシステム全体をキャプチャするシステムレベルのバックアップが含まれています。

ブログのさまざまなバックアップツールに関するガイドをレビューおよび公開しました。あなたのニーズに最適なアーカイブを見つけてください。

  • Linuxバックアップツールアーカイブ

追加のヒント:

  • リモートバックアップ:重要なシステムの場合、バックアップディレクトリをリモートの場所またはクラウドストレージサービスに同期することを検討して、ローカルデータの損失を防ぎます。
  • 監視とアラート:バックアップクロンジョブの実行のための監視を実装します。簡単な電子メールアラートまたはロギングは、バックアップのステータスについて情報を提供するのに役立ちます。

ステップ3:バックアップから削除されたcrontabエントリを復元します

誤ってCrontab -Rを実行してCrontabエントリを削除した場合、前のセクションで説明したように定期的にバックアップしている場合、Crontabの復元は簡単です。

クロンタブエントリをバックアップから復元する方法は次のとおりです。

1.最新のバックアップファイルを見つけます

まず、Crontabの最新のバックアップを見つける必要があります。バックアップ戦略のサンプルに従って、バックアップは特定のディレクトリ($ HOME/CRON_BACKUPSなど)に配置され、簡単に識別できるデートスタンプで名前を付けます。

2。バックアップコンテンツを確認します

復元する前に、バックアップファイルのコンテンツを確認して、予想されるCrontabエントリが含まれていることを確認することをお勧めします。猫以下のようなコマンドを使用して、ファイルを表示できます。

 $ cat $ home/cron_backups/crontab_backup _ $(日付 '%y-%m-%d')。txt
ログイン後にコピー

今日のバックアップがまだ作成されていない場合、または特定の日付から復元する必要がある場合は、それに応じてコマンドの日付を調整します。

3。バックアップからクロンタブを復元します

正しいバックアップファイルを特定してその内容を確認したら、バックアップファイルを入力としてcrontabコマンドを使用して、crontabエントリを復元できます。

 $ crontab $ home/cron_backups/crontab_backup _ $(date '%y-%m-%d')。txt
ログイン後にコピー

繰り返しますが、復元に使用するバックアップファイルに一致するように、コマンドの日付を調整します。

4。復元を確認します

復元後、Crontabが正しく復元され、すべての予想されるエントリが含まれていることを確認することが重要です。 Crontab -Lコマンドを使用して、現在のCrontabエントリをリストします。

 $ crontab -l
ログイン後にコピー

バックアップに対してリストされているエントリを確認して、修復プロセスが成功したことを確認してください。

修復のためのヒント:

  • 自動化:バックアップを頻繁に復元する必要があることに気付く場合は、エラーの可能性を減らすために復元プロセスをスクリプト化することを検討してください。
  • バックアップの整合性:バックアップの整合性(例えば、バックアップファイルを手動で確認することで)を定期的にチェックして、それらが正しく作成されていることを確認し、予想されるデータを封じ込めます。
  • 複数のバックアップ:更新頻度とストレージ容量に応じて、数日または数週間のバックアップを維持し、必要に応じてさまざまな時点から回復できるようにします。

ステップ4:クロンタブエントリの偶発的な削除を防ぎます

最後に、この間違いが将来起こらないようにする方法について話しましょう。

プロフィールスクリプトに-iオプションを使用してCrontabのエイリアスを追加することは、Crontabエントリの偶発的な削除を防ぐためのスマートで効果的な方法です。

Crontabの-iオプションは、Cronsabを削除する前に確認を求めるインタラクティブなプロンプトを提供します。

エイリアスのセットアップ:

シェルプロファイルにエイリアスを作成して、Crontab -Iを使用してCrontab -Rをオーバーライドできます。これにより、コマンドは何かを削除する前に確認を要求します。

〜/.bashrc、〜/.bash_profile、または同等の行に次の行を追加します。

エイリアスcrontab = 'crontab -i'
ログイン後にコピー

選択したプロファイルスクリプトにエイリアスを追加した後、変更を適用する必要があります。変更されるためには、次のいずれかができます。

  • ログアウトしてログインします。これにより、プロファイルスクリプトがリロードされます。
  • プロファイルスクリプトのソース:ログアウトせずに即座に効果を発揮するには、現在の端末セッションでプロファイルスクリプトを直接調達できます。

たとえば、エイリアスを〜/.bashrcに追加した場合、実行できます。

 $ source〜/.bashrc
ログイン後にコピー

エイリアスのテスト:

エイリアスが期待どおりに機能するようにするために、非批判的または一時的なクロンタブエントリを削除しようとすることにより、安全な方法でテストできます。 Crontab -Rを実行すると、確認を求めるプロンプトが表示されます。

 Crontab:Crontabを本当に削除しますか? (y/n)
ログイン後にコピー

Linuxでの偶発的な削除からCrontabエントリを防ぐ方法

このプロンプトは、エイリアスが正しく機能していることを確認し、将来の偶発的なクロンタブの削除を防ぐのに役立つことです。

習慣的なダブルチェック

Enterを押す前にコマンドをダブルチェックする習慣を育みます。それは小さなもののように思えるかもしれませんが、それはあなたに多くのトラブルを救うことができます。

結論

クロンタブエントリを誤って削除することはイライラする経験ですが、それは世界の終わりではありません。これらの手順とヒントに従うことにより、誤って削除されたCrontabエントリを簡単に回復できます。

また、Simple Shellスクリプトを使用してCrontabエントリを自動的にバックアップすることにより、将来この事故を回避することもできます。

以上がLinuxでの偶発的な削除からCrontabエントリを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート