Skocz do zawartości
Zaloguj się, aby obserwować  
MEXXIO

Zadanie cron na linuxpl.com

Polecane posty

Chciałbym prosić was o pomoc co zrobić aby właśnie na tym hostingu automatycznie robił całkowity backup i pakował go powiedzmy do tar raz w tygodniu o godzinie piątej i niech to będzie środa trzeci dzień tygodnia, zrobiłem coś takiego:

Minuta: 0
Godzina: 5
Miesiąc: 7
Miesiąc: *
Dzień tygodnia: 3

lecz nie wiem jaką dodać komendę, domyślam się że ścieżkę do pliku który będzie się zawsze uruchamiał o tym samym czasie jak napisałem wyżej. Tylko jaka zawartość tego pliku? ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja osobiście - choć na innych hostingach - stosuję coś na kształt:

 

/bin/tar -czf /home/username/domains/example.com/backup_files.tar.gz /home/username/domains/example.com/public_html

dla plików, a dla baz danych MySQL:

 

/usr/local/mysql/bin/mysqldump -u username_backup -pHASLO --all-databases --default-character-set=utf8 | /bin/gzip > /home/username/domains/example.com/backup_db.sql.gz

(przy czym zalecam utworzenie osobnego użytkownika bazy danych dla backupu mającego jedynie uprawnienia 'select' i 'lock tables')

 

Dodatkowo bazując na przykładzie podanym w komentarzach na stronie php.net/mail skleciłem prosty skrypt PHP wysyłający wskazane pliki - jeśli zajmują one odpowiednio mało miejsca, by zmieścić się w mailu - na swój email, który to skrypt wywoływany jest przez:

 

/usr/local/bin/php /home/username/domains/example.com/backup-to-my-email-script.php

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dziękuję za pomoc Panie Piotrze, ale pytanie mam jeszcze co do tej komendy czy można dodać aby tworzył folder z godziną i datą utworzenia?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Który z tych jest dobry i poprawny:

#!/bin/sh
DIR="/home/username/domains/moja_domena/backup/"			# katalog źródłowy
BACKUPDIR="/home/username/domains/moja_domena/public_html"		# katalog docelowy pliku kopii zapasowej
NOW=`date +%y-%m-%d-godz.%H:%M:%S`					# aktualny czas wykonania archiwum

echo "Wykonuję kopię zapasową z datą: ${NOW}"
tar -czf ${BACKUPDIR}/backup_danych-${NOW}.tar ${DIR}

lub może ten, zmieniona ostatnia linijka:

#!/bin/sh
DIR="/home/username/domains/moja_domena/backup/"				# katalog źródłowy
BACKUPDIR="/home/username/domains/moja_domena/public_html"	# katalog docelowy pliku kopii zapasowej
NOW=`date +%y-%m-%d-godz.%H:%M:%S`					# aktualny czas wykonania archiwum

echo "Wykonuję kopię zapasową z datą: ${NOW}"
/bin/tar -czf ${BACKUPDIR}/backup_danych-${NOW}.tar ${DIR}

Na tej stronie co podał koelga wyżej skasowałem ze skryptu te logi bo chyba ine są potrzebne.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Obydwa są poprawne. W drugim odwołujesz się do ścieżki absolutnej, czyli nie interesuje cię w ogóle $PATH, podczas gdy w przykładzie pierwszym uznajesz, że system wykryje o co Ci chodzi podczas używania komendy tar.

 

Zasadniczo różnicy nie odczujesz, w kwestii kompatybilności polecam pierwsze rozwiązanie bo jest bardziej uniwersalne.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A jakie wartości wpisać aby wykonywał skrypt .sh powiedzmy co 2 dzień? Mam coś takiego teraz:

 

Minuta: 0

Godzina: 5

Dzień miesiąca: *

Miesiąc: *

Dzień tygodnia: */2

Komenda: /home/username/domains/domena/backup/backup.sh

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Można to zrobić agresywniej :)

 

crontab -e

i w nim dać:

0 5 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 * * cd /home/username/domains/domena/backup && ./backup.sh

edit: poprawiłem błąd godzin i

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Musi robić o godz 5 gdzieś bo na linuxpl.com jest ograniczenie, więc coś takiego:

0 5 */2 * *

 

a i czy komenda jest ok?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Powinna być. Ew. możesz sobie stworzyć jakiś plik typu /home/user/testcrona.txt, a w skrypcie.sh wrzucić komendę echo "cron dziala" >> /home/user/testcrona.txt. Po 4 dniach wejdziesz i powinieneś zobaczyć dwa wpisy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra dodałem skrypt zobacze czy zrobi backup i wtedy się pomyśli jesli coś będzie nie tak, ale dzięki wam za pomoc ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale czemu czekać 4 dni?...

Gdy mam wątpliwości co do uruchamianej komendy, to ustawiam zadanie, aby wykonało się za minutę (jest 19:40? to ustawiam 41 * * * *) i po chwili mam odpowiedź czy wszystko gra czy nie. Jeśli nie to poprawiam i sprawdzam raz jeszcze, jeśli działa, to ustawiam docelowy przedział czasowy.

 

Co do ścieżki - czy absolutna czy nie - to po prostu trzeba sprawdzić, bo spotkałem się z sytuacjami, że system nie chciał znaleźć tar czy gzip czy mysqldump w inny sposób niż z właściwą absolutną ścieżką (która oczywiście może być różna na różnych maszynach).

 

Edytowano przez Piotr GRD (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Musi robić o godz 5 gdzieś bo na linuxpl.com jest ograniczenie, więc coś takiego:

0 5 */2 * *

 

a i czy komenda jest ok?

 

To tak w gwoli ścisłości czemu akurat 2 dni @Piotr :).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No nie wiem ustawiłem na 20:41 i nic się nie działo, a co 2 dni bo nie chcę mieć za dużo tego i za często

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×