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

Zaloguj się, aby skomentować

Będziesz mógł dodać komentarz po zalogowaniu się



Zaloguj się
Zaloguj się, aby obserwować  

×