Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/05/2016, à 08:39

dr0fitch

Sauvegarde LAMP

Bonjour

Après pas mal de recherche infructueuses sur diverses forum et la déprime de matin pluvieux, je me sent obligé de vous demander votre aide pour ne pas aller me terrer a la machine a café...

Alors voila, j'ai un serveur LAMP que je souhaite sauvegarder sur un partage de fichier Windows.

J'ai donc fais un petit script fait avec des bouts de ficelles trouver sur ces fameux nombreux forum déjà visités.
J'utilise automysqlbackup pour la sauvegarde des fichiers MYSQL. All is OK !!
Et mon script crée juste une archive du repertoire html et le copie sur le share.

#!/bin/sh

#définitions des variables :
dateday=$(date +%Y%m%d)
datequinze=$(date -d '15 days ago' +%Y%m%d)

#on sauvegarde les fichiers du repertoire weba avec une date
tar -cvzf /backups/app/html_$dateday.tgz /var/www/

#on supprime le fichier d il y a 15 jours s'il existe
if test -d /backup/app/html_$datequinze.tgz; then
        rm -rf /backup/app/htlm_$datequinze.tgz
fi

#on copie de tous sur le repertoire partagé
smbclient //*server*/*share_folder* -A .smbclient -c "cd /app; lcd /backups/app; prompt; recurse; mput *; exit;"
smbclient //*server*/*share_folder* -A .smbclient -c "cd /database/daily; lcd /backups/daily; prompt; recurse; mput *; exit;"
smbclient //*server*/*share_folder* -A .smbclient -c "cd /database/monthly; lcd /backups/monthly; prompt; recurse; mput *; exit;"
smbclient //*server*/*share_folder* -A .smbclient -c "cd /database/weekly; lcd /backups/weekly; prompt; recurse; mput *; exit;"

Ce script fonction très bien....tant que je suis en root...
évidement je voulais lancer cette tache tout les jours dans la nuit (imaginez si il fallait que je lance le bouzin avant mes 3 café matinal....)

J'ai donc ajouté une tache Crontab avec contrab -e

0 0 * * * /backups/backups.sh

    (oué mon script s'appelle backups.sh, pas trés original)
Mais la... rien... sad

Bon tant que je vous tiens, je veux aussi lancer un script qui lui même exécute des scripts PHP.
le cron

0/5 0 * * * /var/www/html/*site_ultra_confidentiel*/cron/cron.sh

le script sh

#!/bin/sh

#Clean old tuple on each OCS server
php /var/www/html/*site_ultra_confidentiel*/cron/clean.php

#Record number of computers without OCS Agent
php /var/www/html/*site_ultra_confidentiel*/cron/compare.php

Alors voila si un spécialiste (ou pas d’ailler) passe par la et peux me donner un petit coup de main (petit hein, on est Lundi matin) ça me sauverais les neuronnes.
Merci big_smile

Hors ligne

#2 Le 23/05/2016, à 13:10

pires57

Re : Sauvegarde LAMP

Salut,

Ton script fonctionne t-il si tu le lances toi même?
C'est déjà le premier test à faire.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#3 Le 23/05/2016, à 13:33

dr0fitch

Re : Sauvegarde LAMP

dr0fitch a écrit :

Ce script fonction très bien....tant que je suis en root...

Hors ligne

#4 Le 23/05/2016, à 13:54

pires57

Re : Sauvegarde LAMP

As-tu essayer de configurer ta crontab avec les droits root?


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#5 Le 23/05/2016, à 14:01

bruno

Re : Sauvegarde LAMP

Dans les scripts appelés par des tâches cron il faut indiquer l’emplacement complet des exécutables :

pour ton premier script remplacer smbclient par :

/usr/bin/smbclient

pour le second, remplacer php par :

/usr/bin/php

Une tâche cron est exécutée dans un shell non interactif et non connecté, la variable PATH qui indique où se situent les exécutables, n'est donc en général pas connue.

EDIT : précisions pour essayer d'être plus clair wink

Dernière modification par bruno (Le 23/05/2016, à 14:44)

#6 Le 23/05/2016, à 14:28

dr0fitch

Re : Sauvegarde LAMP

pires57 a écrit :

As-tu essayer de configurer ta crontab avec les droits root?

J'ai lu qu'il ne fallait pas... pourquoi ? aucune idée
Mais j'ai quand même essayé. Et ça ce fonctionne quand même pas.
en fait je doit l"exécuter en root pour qu'il puisse lire le fichier .smbclient qui contient les identifiants de connexion au partage de fichier.

Aussi je ne reçois pas les mails que suis sensé recevoir pour confirmer ou non le fonctionnement du Crontab.

bruno a écrit :

Dans les tâches cron il faut indiquer l’emplacement complet des exécutables :

/usr/bin/smbclient

Une tâche cron est exécutée dans un shell non interactif et non connecté, le PATH n'est donc en général pas connu.

du coup la syntax serait ?

0 0 * * * /usr/bin/smbclient /backups/backups.sh

E fait je ne suis pas sur de savoir a quoi fait référence /usr/bin/smbclient

J'avoue que je n'ai jamais utilisé Crontab avant...

Dernière modification par dr0fitch (Le 23/05/2016, à 14:28)

Hors ligne

#7 Le 23/05/2016, à 14:33

pires57

Re : Sauvegarde LAMP

Non, c'est dans le script que tu dois donner le path pour toutes les commandes que tu appelles (rm, smbclient, php ... )

Dernière modification par pires57 (Le 23/05/2016, à 14:35)


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#8 Le 23/05/2016, à 14:36

dr0fitch

Re : Sauvegarde LAMP

Pas compris roll

Dans mon script ? ou dans le crontab ?
Peux tu me donner un exemple de syntax ?



[EDIT]
Autant pour moi j'ai encore lu trop vite..
J’essaye ça

Merci

Dernière modification par dr0fitch (Le 23/05/2016, à 14:37)

Hors ligne

#9 Le 23/05/2016, à 15:02

dr0fitch

Re : Sauvegarde LAMP

Comment je connais les PATH pour rm et tar ?

Hors ligne

#10 Le 23/05/2016, à 15:05

bruno

Re : Sauvegarde LAMP

whereis rm
whereis tar

#11 Le 23/05/2016, à 15:07

pires57

Re : Sauvegarde LAMP

Tu les trouveras avec la commande

which rm

Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#12 Le 23/05/2016, à 15:19

dr0fitch

Re : Sauvegarde LAMP

Bon j'ai ajouté les PATH complet dans mon script

#!/bin/sh

#définitions des variables :
dateday=$(date +%Y%m%d)
datequinze=$(date -d '15 days ago' +%Y%m%d)

#on sauvegarde les fichiers du repertoire web
/bin/tar -cvzf /backups/app/html_$dateday.tgz /var/www/

#on supprime le répertoire d il y a 15 jours s'il existe
if test -d /backup/app/html_$datequinze.tgz; then
       /bin/rm -rf /backup/app/htlm_$datequinze.tgz
fi

/usr/bin/smbclient //*server*/*share_folder* -A /backups/.smbclient -c "cd /app; lcd /backups/app; prompt; recurse; mput *; exit;"
/usr/bin/smbclient //*server*/*share_folder* -A /backups/.smbclient -c "cd /database/daily; lcd /backups/daily; prompt; recurse; mput *; exit;"
/usr/bin/smbclient //*server*/*share_folder* -A /backups/.smbclient -c "cd /database/monthly; lcd /backups/monthly; prompt; recurse; mput *; exit;"
/usr/bin/smbclient //*server*/*share_folder* -A /backups/.smbclient -c "cd /database/weekly; lcd /backups/weekly; prompt; recurse; mput *; exit;"

Et j'ai modifier mon Crontab pour ajouter root en user et qu'il s"exécute toutes les minutes.

0/1 * * * * root /backups/backups.sh

Mais ça ne fonctionne pas sad

Dernière modification par dr0fitch (Le 23/05/2016, à 15:20)

Hors ligne

#13 Le 23/05/2016, à 15:25

bruno

Re : Sauvegarde LAMP

Qu'est-ce qui ne fonctionne pas ? Tu vois quelque chose dans les logs ? Tu as utilisé le crontab de root ou un fichier dans /etc/cron.d  ? Le fichier backups.sh est-il bien exécutable ? Tu as vu que ton ton script il y a parfois /backup et d'autres fois /backups ?

Exécuter cela toute les minutes, c'est peut être un peu violent… Rien que ta commande tar peut prendre plusieurs minutes suivant la taille du dossier à compresser et les capacités du système.

Dernière modification par bruno (Le 23/05/2016, à 15:41)

#14 Le 23/05/2016, à 15:27

dr0fitch

Re : Sauvegarde LAMP

Toute les minutes c'est pour tester. Quand je le lance a la main, le script met moins d'une minutes.

Ensuite je ne sais pas ou sont les logs de crontab.
Et je comprend pas bien comment configurer l'envois de mail que devrait m'envoyer crontab a chaque execution

Hors ligne

#15 Le 23/05/2016, à 15:32

dr0fitch

Re : Sauvegarde LAMP

Quand je fait grep CRON /var/log/syslog c'est vraiment pas parlant

Hors ligne

#16 Le 23/05/2016, à 15:36

bruno

Re : Sauvegarde LAMP

J'ai ajouté des questions…
Pour les logs il faut regarder dans syslog
Pour l'envoi de mail, il suffit de regarder comment fonctionne la directive MAILTO dans la page de man de crontab

man 5 crontab a écrit :

En plus de LOGNAME, HOME, et SHELL, cron(8) prendra en compte la variable MAILTO s'il  doit  envoyer  le  résultat
       d'une  commande  exécutée  depuis « cette » crontab. Si MAILTO est définie (et non vide), le résultat est envoyé à
       l'utilisateur indiqué. MAILTO peut aussi servir à envoyer les courriers à plusieurs destinataires en séparant  les
       destinataires  par une virgule. Si MAILTO est définie mais vide (MAILTO=""), aucun courrier ne sera envoyé. Sinon,
       le courrier sera envoyé au propriétaire de la crontab.

#17 Le 23/05/2016, à 15:45

dr0fitch

Re : Sauvegarde LAMP

Qu'est-ce qui ne fonctionne pas ? Bonne question...
Tu vois quelque chose dans les logs ? Ils ne sont pas trés parlant. Du moins pour moi...

May 23 06:39:01 NEV1-SV00043 CRON[2481]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 07:09:01 NEV1-SV00043 CRON[2619]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 07:17:01 NEV1-SV00043 CRON[2681]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 07:39:01 NEV1-SV00043 CRON[2763]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 08:09:01 NEV1-SV00043 CRON[2913]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 08:17:01 NEV1-SV00043 CRON[2964]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 08:39:01 NEV1-SV00043 CRON[3060]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 09:09:01 NEV1-SV00043 CRON[3469]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 09:17:01 NEV1-SV00043 CRON[3529]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 09:39:01 NEV1-SV00043 CRON[3631]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 10:09:01 NEV1-SV00043 CRON[3803]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 10:17:01 NEV1-SV00043 CRON[3859]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 10:39:01 NEV1-SV00043 CRON[3942]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 11:09:01 NEV1-SV00043 CRON[8586]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 11:17:01 NEV1-SV00043 CRON[8637]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 11:39:01 NEV1-SV00043 CRON[8730]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 12:09:01 NEV1-SV00043 CRON[8878]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 12:17:01 NEV1-SV00043 CRON[8933]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 12:39:01 NEV1-SV00043 CRON[9019]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 13:09:01 NEV1-SV00043 CRON[9163]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 13:17:01 NEV1-SV00043 CRON[9216]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 13:39:01 NEV1-SV00043 CRON[9311]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 14:09:01 NEV1-SV00043 CRON[9466]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 14:17:01 NEV1-SV00043 CRON[9526]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 14:39:01 NEV1-SV00043 CRON[9619]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 15:09:01 NEV1-SV00043 CRON[9769]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 15:17:01 NEV1-SV00043 CRON[9819]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
May 23 15:39:02 NEV1-SV00043 CRON[10184]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 16:09:01 NEV1-SV00043 CRON[10445]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
May 23 16:17:01 NEV1-SV00043 CRON[10522]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Tu as bien utilisé le crontab de root ? il parait qu'il ne faut pas le faire. Mais je vais réessayer
Le fichier backups.sh est-il bien exécutable ? Heu.. si je fait sudo sh backups.sh, il fonctionne bien
Tu as vu que ton ton script il y a parfois /backup et d'autres fois /backups ? exact, petite erreur. Mais pas grave dans le sens que je n'ai encore de fichiers qui sont de plus de 2 semaines... Mais c'est corrigé.

Hors ligne

#18 Le 23/05/2016, à 16:15

bruno

Re : Sauvegarde LAMP

Bon on reprend à zéro.

Tu as un script /backups/backups.sh que tu veux exécuter à intervalles réguliers en tant que root.

Le script a été testé, il fonctionne.
On le rend exécutable :

sudo chmod +x /backups/backups.sh 

Tu supprimes les tâches cron que tu as tenté de mettre en place.

Tu crées en tant que root un fichier /etc/cron.d/backups, avec par exemple :

sudo nano /etc/cron.d/backups

et tu y mets en ajustant à tes besoins :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=tonadresse@tondomaine.com

0/1 * * * * root /backups/backups.sh

Le fait de renseigner PATH, évitera d'avoir à mettre les chemins complets dans ton script à l'avenir.
MAILTO permet d'envoyer un mail à l'adresse spécifiée
Le script sera exécuté toutes les minutes (0/1) en tant que root

Dernière modification par bruno (Le 23/05/2016, à 16:17)

#19 Le 23/05/2016, à 16:29

dr0fitch

Re : Sauvegarde LAMP

ls -l

-rwxr-xr-x 1 root root  944 mai   23 16:44 backups.sh

Il est bien executable

J'ai créé le fichier et changé mon adresse email.
ça ne semble pas fonctionner. Je ne vois pas les fichiers copier sur le partage et je ne reçois pas de mail.

Il n'y a rien dans les logs..
Il faut pas faire quelque chose pour dire a Crontab de lire ce fichier ou un truc du genre ?
Je n'avais pas vu parler de la création d'un fichier pour le Crontab

Hors ligne

#20 Le 23/05/2016, à 17:05

Rufus T. Firefly

Re : Sauvegarde LAMP

Salut,

Ce n'est pas plus simple de faire un lien vers le script dans /etc/cron.daily ?
Comme ça il s'exécute tous les jours tout seul comme un grand


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#21 Le 23/05/2016, à 17:34

bruno

Re : Sauvegarde LAMP

Si tu as bien suivi ce que j'ai indiqué en #18, je ne comprend pas pourquoi cela ne marche pas.

À tout hasard un petit :

sudo service cron restart

pour être sûr que le nouveau fichier sous /etc/cron.d/ soit bien pris en compte.

NB: l'envoi de mail vers l’extérieur ne fonctionne que si un serveur SMTP est installé et configuré)

EDIT Pour une exécution toutes les minutes la syntaxe est :

*/1 * * * *  root /backups/backups.sh

Dernière modification par bruno (Le 23/05/2016, à 17:44)

#22 Le 24/05/2016, à 11:16

dr0fitch

Re : Sauvegarde LAMP

Bon en fait j'ai modifier mon crontab pour qu'il s'execute a 1h du matin (mon besoin initial) avant de partir hier.
Et ça a fonctionné....

Enfin mon script de sauvegarde a fonctionné. Mais pas celui qui lance des scripts PHP

A savoir le script

#!/bin/sh

#Clean old tuple on each OCS server
/usr/bin/php /var/www/html/*site_ultra_confidentiel*/cron/clean.php

#Record number of computers without OCS Agent
/usr/bin/php /var/www/html/*site_ultra_confidentiel*/cron/compare.php

et le crontab

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/share
MAILTO=quentin.gouebault@g-ushin.com

0 1 * * * root /var/www/html/*site_ultra_confidentiel*/cron/cron.sh
0 1 * * * root /backups/backups.sh

Hors ligne

#23 Le 24/05/2016, à 11:54

pires57

Re : Sauvegarde LAMP

Et le script fonctionne sans la crontab? Que se passe til si tu l'exécute directement ?


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#24 Le 24/05/2016, à 12:15

dr0fitch

Re : Sauvegarde LAMP

Oui, il fonctionne quand le lance a la main en root.
Les deux pages php sont bien exécute et j'ai le résultat attendu.

Mais rien avec le Crontab

Hors ligne

#25 Le 24/05/2016, à 12:49

pires57

Re : Sauvegarde LAMP

et c'est quoi le résultat attendu? parce que si tu attends un message il n'arrivera jamais dans ton terminal


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne