#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
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
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
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 :
-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
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 !
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