Jak odzyskać usunięte crontab

11

Próbowałem edytować crontab w terminalu i przypadkowo wpisałem crontab -rzamiast crontab -e. Kto by pomyślał, że takie niebezpieczne polecenie usiadłoby obok litery, aby edytować crontab? Co więcej, wciąż próbuję dowiedzieć się, jak crontab -rnie prosić o potwierdzenie?

Niezależnie od mojego braku wiarygodności co do tego, w jaki sposób jest to możliwe, moje pytanie brzmi: czy jestem w stanie odzyskać zagubiony plik crontab?

Miguel Mesquita Alfaiate
źródło
Tylko dla informacji, crontab -r usunie crontab bez monitowania, a crontab -i poprosi o potwierdzenie.
Raman Sailopal,
@RamanSailopal dziękuję za informację. to naprawdę niebezpieczne, biorąc pod uwagę fakt, że -e i -r są obok siebie (przynajmniej na qwerty) ...
Miguel Mesquita Alfaiate
1
Takie rzeczy to jeden z powodów, dla których używam etckeeper.
David Foerster,
2
Przywróć z kopii zapasowej
PiedPiper
@PiedPiper gdybym miał to na kopii zapasowej, nie byłoby problemu. Kopia zapasowa folderów domowych jest wykonywana, ale nie ma tego katalogu głównego.
Miguel Mesquita Alfaiate

Odpowiedzi:

7

Możesz znaleźć swoje zadania crona z dziennika, jeśli raz je wykonałeś. Sprawdzić /var/log/cron.

Nie masz innej opcji odzyskiwania niż narzędzia do odzyskiwania innych firm.

Muhammed Sherief
źródło
Wszelkie wskazówki, jak mogę sprawdzić, czy czegoś nie umknie? Co się stanie, jeśli będzie jakieś zadanie tygodniowe lub miesięczne? Czy musiałbym iść linia po linii do początku zeszłego miesiąca, aby dowiedzieć się, czy mam jakieś rzadziej wykonywane cronjob?
Miguel Mesquita Alfaiate,
Myślę, że musisz iść linia po linii przez ostatni miesiąc. Przepraszam
Muhammed Sherief
Nie ma potrzeby „linia po linii”. Użyj grepz albo -oalbo do sed/ awk/ cut/ etc, aby wyodrębnić tylko polecenie, a następnie do sort -u.
Patrick
3
Nadal będziesz musiał przejść linia po linii, aby opracować harmonogramy, jeśli nie są one po prostu codzienne lub tygodniowe. Coś w rodzaju awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8pokaże wpisy do usernameposortowania według polecenia, co powinno ułatwić zobaczenie odstępów między nimi, aby można było odtworzyć ich harmonogramy.
James Sneeringer,
@JamesSneeringer to zdecydowanie czary! kciuki za to!
Miguel Mesquita Alfaiate,
2

Nie jestem pewien, możliwe jest odzyskanie crontabpliku bez kopii zapasowej. Ale jestem pewien, że możesz przywrócić crontabplik z crondzienników. O ile pamiętam, szybko każde polecenie jest tam wymienione z użytkownikiem.


źródło
2

Jeśli pamiętasz określoną linię, możesz grepować całe urządzenie, aby znaleźć twoje dane, pod warunkiem, że żadne inne dane nie nadpisały go. Działa to dla każdego pliku.

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

Dostosuj -B (efore) i -A (fter) do swojego rozmiaru pliku, ale 100 linii wokół powinno wystarczyć na plik cron. Parametr -a jest potrzebny, aby zmusić grep do uznania twojego urządzenia za tekst.

Będziesz wtedy musiał wyczyścić binarny bałagan przed i po danych w wynikowym pliku.

I zajmuje to dużo czasu. Powodzenia.

Możesz również odnieść się do tej odpowiedzi: Cofnąć / odzyskać usunięte pliki | Wymiana stosów Unix i Linux

Hexdump
źródło