Korzystam z najnowszej Linux Mint. Zastanawiałem się, czy jest możliwe utworzenie specjalnego kronika dla kopii zapasowej bazy danych.
W moim /etc/cronjob
pliku mam następujący kod:
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
30 4 * * 1-6 /home/users/backup.sh
W moim /home/users/backup.sh
mam:
mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql
Zamiast tego full_myDB.sql
chciałbym mieć coś takiego, 2014-04-04_full_myDB.sql
gdzie data jest dodawana dynamicznie w zależności od naszej daty.
Jeśli plik SQL Backup jest starszy niż jeden tydzień Chciałbym cron aby usunąć automatycznie go.
Wykorzystałem powyższe informacje i chciałem dostarczyć jeszcze jedną drobną aktualizację, która faktycznie obciąża jedną z naprawdę dużych tabel, która spowalniała nasze kopie zapasowe.
Mam nadzieję, że pomoże to komuś innemu.
Korzystając z powyższych informacji, stworzyłem podstawowy skrypt powłoki o nazwie mysqlbackup.sh o następującej treści:
Pamiętaj, aby uruchomić: chmod + x mysqlbackup.sh
Umieściłem to również w moim crontabie -e:
źródło
Wiem, że to duży stary, ale użyłem powyższych odpowiedzi i dodałem instrukcję kompresji pliku. Mam nadzieję, że ktoś inny uzna to za przydatne.
1) Badając nieco, 7-zip wydaje się najlepszą dostępną sprężarką. Jeśli twoja dystrybucja linuksowa to obsługuje, możesz użyć apt installera:
Alternatywnie możesz użyć tar.gz, jeśli czujesz się z tym lepiej.
2) Następnie tworzysz skrypt, na przykład
/home/users/backup.sh
z zawartością:Ten skrypt znajdzie pliki na więcej niż 7 dni i usunie je, następnie wykona zrzut SQL, następnie 7-zip wszystkich plików .sql w katalogu, a następnie usunie wszystkie .sql w katalogu ( BTW, możesz opcjonalnie dodać komendę mysql przed zrzutem, jak wspomniano w poprzedniej odpowiedzi, jeśli jej potrzebujesz)
3) Robimy
chmod +x /home/users/backup.sh
tak, aby można go było wykonać.3.1) Powinieneś przetestować skrypt, jeśli działa zgodnie z przeznaczeniem
4) Programujemy zadanie za pomocą
crontab -e
I to wszystko. Wykona kopię zapasową bazy danych MySQL każdego dnia w tygodniu o 4:30 (z wyjątkiem niedziel) i skompresuje kopię zapasową
źródło
Aby dodać do odpowiedzi @ Graeme, warto zauważyć, że czasami może być konieczne ucieczka od znaku „%” w zadaniu cron, aby wyglądał następująco:
źródło