あなたが誤ってすべてのクランタブエントリを削除したことに気付いたとき、あなたは今までにその心を落とす瞬間を経験したことがありますか?あなたが頭をうなずいているなら、あなたは一人ではありません。私もこの間違いをしました。
誤ってCrontab -Rを実行することは、「R」と「E」キーが近接していることを考えると、経験豊富なLinuxユーザーでさえも発生する可能性のある間違いです。
スケジュールされたすべてのCronジョブを削除するCrontab -Rコマンドは、特にこれらのエントリを編集するコマンドであるCrontab -Eに危険にさらされているため、誤って実行するのは簡単です。
しかし、心配しないでください!この投稿では、失われたクロンタブエントリを回復する方法、クロンタブエントリを定期的にバックアップする方法、および将来の偶発的な削除からクランタブエントリを防ぐための戦略を説明します。
目次
しばらく前に、私はクロンタブ-eを実行して予定されているジョブを編集するつもりでしたが、指は私を裏切り、代わりにクロンタブ-Rに行きました。突然、私の慎重に計画されたクロンの仕事はすべてなくなりました。
キー「E」と「R」はキーボード上で互いに隣に隣接しているため、誤ってCrontab -Eの代わりにCrontab -Rコマンドを実行し、瞬く間にCrontabエントリをすべて失いました。
不思議に思う人のために、Crontab -Rは、確認プロンプトなしで現在のユーザーのCrontabを削除します。これにより、スケジュールされたすべてのCronジョブが失われる可能性があります。
この間違いは、特に忙しい一日のプレッシャーやマルチタスクの気晴らしの下で簡単に行うことができます。
状況に対処し、将来の事件を防ぐ方法は次のとおりです。
まず、深呼吸をしてください。状況は見た目ほど悲惨ではないかもしれません。 UnixおよびLinuxシステムには、Crontab -Rの「元に戻す」ボタンがありませんが、バックアップを探すことができる場所がいくつかあります。
Crontabエントリを回復したら(または、残念ながら、もしそうでない場合)、将来の頭痛を避けるためにバックアップルーチンを開始することが重要です。
将来の損失を防ぐために、クロンタブエントリをバックアップするためのいくつかの戦略を次に示します。
編集する前に、Crontabエントリを手動でバックアップする習慣を身に付ける必要があります。手動のバックアップは何よりも優れていますが、彼らはあなたがそれらをすることを覚えていることに頼っています。
クロンタブを手動でバックアップするには、実行してください。
$ crontab -l>〜/backup_crontab.txt
このバックアップを安全な場所、おそらくバージョン制御リポジトリまたはクラウドストレージサービスに保存してください。
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エントリのバックアップを作成し、必要に応じて簡単に追跡して復元できるようにします。
上記のアプローチには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エントリをバックアップし、それらのバックアップを管理して、バックアップディレクトリが古いファイルで乱雑になるのを防ぐように設計されています。
このスクリプトの仕組みの内訳は次のとおりです。
このスクリプトを実行することにより、毎回Crontabエントリの新しいバックアップを自動的に作成し、特定の日数よりも古いバックアップを削除してバックアップディレクトリを清潔に保ちます。このアプローチは、バックアップを手動で管理することなく、クロンタブエントリの最近の歴史を維持するのに役立ちます。
ファイルを保存して閉じます。そして、実行して実行可能にします:
$ chmod x〜/cron_backup.sh
バックアップジョブをスケジュールします:
次に、このスクリプトをスケジュールして、クロンタブを毎日実行します。 Crontab -EでCrontabを編集し、バックアップスクリプトの新しい行を追加します。たとえば、午前1時にバックアップを毎日実行するには、次のことを追加します。
0 1 * * */bin/bash $ home/cron_backup.sh
このセットアップにより、毎日、指定されたディレクトリに安全に保存されているCrontabの新しいバックアップが確保されます。
Gitのようなバージョン制御システム(VCS)に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
バックアップに対してリストされているエントリを確認して、修復プロセスが成功したことを確認してください。
修復のためのヒント:
最後に、この間違いが将来起こらないようにする方法について話しましょう。
プロフィールスクリプトに-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)
このプロンプトは、エイリアスが正しく機能していることを確認し、将来の偶発的なクロンタブの削除を防ぐのに役立つことです。
習慣的なダブルチェック:
Enterを押す前にコマンドをダブルチェックする習慣を育みます。それは小さなもののように思えるかもしれませんが、それはあなたに多くのトラブルを救うことができます。
クロンタブエントリを誤って削除することはイライラする経験ですが、それは世界の終わりではありません。これらの手順とヒントに従うことにより、誤って削除されたCrontabエントリを簡単に回復できます。
また、Simple Shellスクリプトを使用してCrontabエントリを自動的にバックアップすることにより、将来この事故を回避することもできます。
以上がLinuxでの偶発的な削除からCrontabエントリを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。