Bagaimana memulihkan crontab yang dihapus

11

Aku mencoba untuk mengedit crontab di terminal, dan saya sengaja mengetik crontab -rbukan crontab -e. Siapa yang menganggap perintah berbahaya seperti itu akan duduk tepat di sebelah surat untuk mengedit crontab? Selain itu, saya masih berusaha mencari tahu bagaimana crontab -rtidak meminta Anda untuk konfirmasi?

Terlepas dari kurangnya kredibilitas saya tentang bagaimana ini mungkin, pertanyaan saya adalah: apakah saya dapat memulihkan crontab yang hilang?

Miguel Mesquita Alfaiate
sumber
Sekadar informasi, crontab -r akan menghapus crontab tanpa diminta dan crontab -i akan meminta konfirmasi.
Raman Sailopal
@RamanSailopal terima kasih atas informasinya. yang benar-benar berbahaya, mengingat fakta bahwa -e dan -r bersebelahan (setidaknya pada qwerty) ...
Miguel Mesquita Alfaiate
1
Hal-hal seperti ini adalah salah satu alasan mengapa saya menggunakan etckeeper.
David Foerster
2
Kembalikan dari cadangan
PiedPiper
@ PiedPiper jika saya memiliki cadangan, ini tidak akan menjadi masalah. Saya memiliki folder rumah yang dicadangkan, tetapi bukan crontab root ini.
Miguel Mesquita Alfaiate

Jawaban:

7

Anda dapat menemukan pekerjaan cron dari log jika sudah dijalankan sebelumnya. Periksa /var/log/cron.

Anda tidak memiliki opsi pemulihan apa pun selain alat pemulihan pihak ketiga.

Muhammed Sherief
sumber
Adakah petunjuk tentang bagaimana saya dapat memeriksa bahwa saya tidak melewatkan sesuatu? Bagaimana jika ada tugas mingguan, atau bulanan? Apakah saya harus pergi baris demi baris sampai awal bulan lalu untuk mencari tahu apakah saya menjalankan cronjob yang kurang umum?
Miguel Mesquita Alfaiate
Saya pikir Anda harus pergi baris demi baris selama satu bulan terakhir. Maaf
Muhammed Sherief
Tidak perlu untuk "baris demi baris". Gunakan grepdengan salah satu -oatau disalurkan ke sed/ awk/ cut/ etc untuk mengekstrak hanya perintah, dan kemudian disalurkan ke sort -u.
Patrick
3
Anda masih harus pergi baris demi baris untuk menyelesaikan jadwal jika tidak hanya harian atau mingguan. Sesuatu seperti awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8akan menampilkan entri untuk usernamediurutkan berdasarkan perintah, yang seharusnya membuatnya lebih mudah untuk melihat interval di antara mereka sehingga Anda dapat membuat kembali jadwal mereka.
James Sneeringer
@ JamesSneeringer yang pasti santet! jempol untuk itu!
Miguel Mesquita Alfaiate
2

Saya tidak yakin, mungkin untuk memulihkan crontabfile tanpa cadangan. Tapi, saya cukup yakin Anda dapat mengembalikan crontabfile Anda dari cronlog. Sejauh yang saya ingat, cepat setiap perintah terdaftar di sana dengan pengguna.


sumber
2

Jika Anda mengingat garis tertentu, Anda dapat menangkap seluruh perangkat untuk menemukan kembali data Anda, dengan syarat tidak ada data lain yang menimpanya. Ini berfungsi untuk semua file.

grep -a -B100 -A100 "command/you remember" /dev/sda1 > /tmp/cron.ressurected

Sesuaikan -B (efore) dan -A (fter) dengan ukuran file Anda, tetapi 100 baris sekitar sudah cukup untuk file cron. Parameter -a diperlukan untuk memaksa grep mempertimbangkan perangkat Anda sebagai teks.

Anda kemudian harus membersihkan kekacauan biner sebelum dan sesudah data Anda di file yang dihasilkan.

Dan itu membutuhkan banyak waktu. Semoga berhasil.

Anda juga dapat merujuk ke jawaban ini: Membatalkan penghapusan / memulihkan file yang dihapus | Unix & Linux Stack Exchange

Hexdump
sumber