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 28/01/2011, à 22:43

rquennec

Différence entre un script exécuté par une tache cron et en console

Bonjour à tous

Je n'arrive pas à comprendre pourquoi j'ai une différence de résultat entre un script que j'exécute manuellement et le même script exécuté automatiquement par une tache cron

Ce script sauvegarde un dossier dans une archive TAR (sauvegarde incrémentielle)

tar --create --file=/backup/archive.`date +%Y_%m_%d_%s`.tar --listed-incremental=/backup/backup.list /home/ronan

Première exécution du script :
Manuellement, l'archive fait 2 GO
Via la tache cron, l'archive ne fait que 300 MO

Vraiment étrange surtout que c'est le même script.

Merci pour votre aide


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#2 Le 28/01/2011, à 22:56

wido

Re : Différence entre un script exécuté par une tache cron et en console

Bonjour,
est-ce que le lap de temps entre deux cron de ton script est suffisant pour compresser ton dossier?

Hors ligne

#3 Le 28/01/2011, à 22:56

Bousky

Re : Différence entre un script exécuté par une tache cron et en console

Es-tu sûr que la sauvegarde manuelle n'est pas complète alors que celle du cron ne contient que l'incrément ?


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#4 Le 28/01/2011, à 23:00

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

wido a écrit :

Bonjour,
est-ce que le lap de temps entre deux cron de ton script est suffisant pour compresser ton dossier?

Alors là, bonne question. J'avoue que je n'en sais rien.
Par contre c'est un script que je veux exécuter une seule fois par jour

Dernière modification par rquennec (Le 28/01/2011, à 23:07)


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#5 Le 28/01/2011, à 23:01

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

Bousky a écrit :

Es-tu sûr que la sauvegarde manuelle n'est pas complète alors que celle du cron ne contient que l'incrément ?

Non car entre les 2 tests (manuel et auto) j'ai pris soin de supprimer le fichier backup.list


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#6 Le 28/01/2011, à 23:14

Postmortem

Re : Différence entre un script exécuté par une tache cron et en console

Salut,
Rajoute l'option --verbose et redirige vers un fichier log ta commande tar
Tu verras ainsi quels fichiers sont inclus dans l'archive à chaque fois.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#7 Le 29/01/2011, à 12:53

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

Postmortem a écrit :

Salut,
Rajoute l'option --verbose et redirige vers un fichier log ta commande tar
Tu verras ainsi quels fichiers sont inclus dans l'archive à chaque fois.

Bonjour,
Je viens de faire un test en rajoutant --verbose et en redirigeant vers le fichier /backup/tar.log

Résultat :

En manuel
tar.log --> 2 MB
archive.tar --> 2847 MB
backup.list --> 969 KB

En auto
tar.log --> 0 B
archive.tar --> 0 B
backup.list --> 0 B

J'ai donc supprimé l'option --verbose mais en laissant la redirection vers tar.log

En manuel
idem

En auto
tar.log --> 0 B
archive.tar --> 674 MB
backup.list --> 0 B

Je ne sais vraiment plus quoi faire


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#8 Le 29/01/2011, à 14:59

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

J'ai résolu mon problème en cherchant un peu partout sur le net et je suis tombé sur cette solution

/bin/tar --create --file=/backup/archive.`date +%Y_%m_%d_%s`.tar --listed-incremental=/backup/backup.list /home/ >> /backup/tar.`date +%Y_%m_%d_%s`.log 2>&1

Mais j'avoue ne pas comprendre pourquoi cela fonctionne en rajoutant simplement 2>&1 à la fin de ma ligne de commande

Si quelqu'un pouvait m'expliquer, ce serait sympa.


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#9 Le 29/01/2011, à 16:28

Postmortem

Re : Différence entre un script exécuté par une tache cron et en console

Salut,
Le '2>&1' sert juste à envoyer les messages d'erreurs au même endroit que les messages normaux... Ça ne devrait donc rien changer, si ce n'est te rajouter les éventuels messages d'erreurs dans le log.
Par contre, dans ta dernière commande, je vois que tu n'as pas mis '/home/ronan' mais seulement '/home'.
La différence vient peut-être de là à moins que tu n'aies fait qu'une erreur de copie en postant sur le forum ??
Sinon, que permet l'option '--listed-incremental=/backup/backup.list'
Je vois ça dans la man mais je pige pas trop :

man tar a écrit :

-g, --listed-incremental FILE
           handle new GNU-format incremental backup


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 29/01/2011, à 17:21

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

Postmortem a écrit :

Par contre, dans ta dernière commande, je vois que tu n'as pas mis '/home/ronan' mais seulement '/home'.
La différence vient peut-être de là à moins que tu n'aies fait qu'une erreur de copie en postant sur le forum ??

Effectivement, c'est juste une erreur de recopie. Par contre, j'ai également oublié de préciser que j'ai modifié la redirection vers le fichier log.
Avant j'avais ... > /backup/tar.log et après ... >> /backup/tar.log
Peut-être est-ce dû à ça alors !

Postmortem a écrit :

Sinon, que permet l'option '--listed-incremental=/backup/backup.list'
Je vois ça dans la man mais je pige pas trop :

man tar a écrit :

-g, --listed-incremental FILE
           handle new GNU-format incremental backup

Cette option permet d'effectuer une sauvegarde TAR en incrémentielle en lui indiquant le nom du fichier (backup.list) contenant les info des sauvegardes précédentes.
La première sauvegarde (fichier backup.list inexistant) est effectuée en totalité.
Les suivantes sont effectuées en incrémentielles grâce au fichier backup.list. Seulement les fichiers nouveaux et/ou modifiés sont ajoutés dans la nouvelle archive.

Je me sers de cette commande pour effectuer une sauvegarde journalière de mes fichiers.
Une fois par semaine, je supprime le fichier backup.list afin de recréer une archive complète tout en conservant les précédentes.

Pour la restauration, j'utilise cette commande

tar --extract --listed-incremental=/dev/null --file archive.tar

Il faut juste savoir que dans mon exemple, 1 semaine de sauvegarde représente 7 archives TAR.
La première archive complète (archive principale)
Les 6 archives suivantes (incrémentielles) contenant uniquement les fichiers nouveaux et/ou modifiés depuis l'archive principale.
Donc, dans le cas d'un plantage système, si je souhaite récupérer l'intégralité de mes fichiers, je suis obligé de restaurer en premier l'archive principale puis toutes les autres dans le même ordre chronologique.


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne

#11 Le 29/01/2011, à 17:43

Postmortem

Re : Différence entre un script exécuté par une tache cron et en console

Merci pour l'explication du '--listed-incremental'
Sinon, je ne pense pas que la différence de fonctionnement vienne de '>>' ; quand on fait une redirection '>>', ça ajoute à la fin du fichier les messages.
Si on redirige avec '>', le fichier est remis à 0 avant l'ajout des messages.
Cela ne devrait donc pas impacter ton archive mais seulement le log. Et vu que ton log contient la date d'exécution de ta commande, '>' et '>>' devraient revenir au même.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 30/01/2011, à 10:39

rquennec

Re : Différence entre un script exécuté par une tache cron et en console

Je ne savais pas pour le >> et >.
Donc à la finale, je pense que le problème vient de la redirection des messages d'erreurs grâce à la commande '2>&1'.
Je ne vois que ça car c'est depuis que je l'ai rajouté dans ma commande que tout fonctionne parfaitement.
Vraiment étrange.
Merci quand même


Proxmox pve-manager/3.4-11/6502936f (running kernel: 2.6.32-40-pve)
Debian 7.9
Ubuntu 10.04.4 LTS / 12.04.5 LTS / 14.04.3 LTS
CentOS release 5.11 (Final)

Hors ligne