Question

Je viens de découvrir que les décharges automatiques que j'ai crée de mon dépôt SVN ont été se couper tôt et au fond que la moitié de la décharge est là. Ce n'est pas une urgence, mais je déteste être dans cette situation. Il contrecarre le but de faire des sauvegardes automatisées en premier lieu.

La commande J'utilise est ci-dessous. Si je le faire manuellement dans le terminal, il complète très bien; le fichier est sortie.txt 16 mégas de taille avec les 335 révisions. Mais si je le laisse à crontab, il renfloue à la marque à mi-chemin, à environ 8,1 mégas et seules les premières 169 révisions.

# m h  dom mon dow   command
18 00 * * * svnadmin dump /var/svn/repos/myproject > /home/andrew/output.txt 

En fait, j'enregistrer dans un fichier du gzip, et il ne manque pas d'espace sur le serveur, ce n'est pas un problème d'espace disque. Il semble caution après deux secondes, cela pourrait être une question de temps, mais la taille du fichier est le même à chaque fois pour le mois passé, donc je ne pense pas que ce soit non plus. Est-ce que crontab exécuter dans un espace mémoire limité?

Était-ce utile?

La solution

Alors, je ne sais pas ce que la vraie question est ici, mais si je voie le STDERR de svnadmin / dev / null quand je fais la décharge, tout se passe bien. J'ai essayé d'utiliser le drapeau « calme » (-q) et il réussit aussi. Je suppose que quand un script shell en cours d'exécution d'un texte assez crontab rencontre dans STRERR, il arrête l'exécution de ce qu'il est en cours d'exécution et va à l'instruction suivante. Je l'ai fait un MD5 sur un fichier manuel et un fichier prévu et ils sont identiques. Cela semble être résolu. Donc, si quelqu'un rencontre ce problème eux-mêmes, c'est le script shell je pour obtenir avec succès passé la troncature tôt. Il est un peu bavard. Pardon.

#!/bin/sh
echo "STARTING AT $(date +\%Y/\%m/\%d/T%I:\%M:\%S)" >> /home/andrew/svnlog.txt
rm /tmp/andrewMobileApp.dump
svnadmin dump /var/svn/repos/andrewMobileApp > /tmp/andrewMobileApp.dump 2>/dev/null
echo "svnadmin exited with code $?" >> /home/andrew/svnlog.txt
gzip -c /tmp/andrewMobileApp.dump > "/home/andrew/svnbackups/andrewMobileApp.dump.$(date +\%Y\%m\%d\%I\%M\%S).txt.gz"
echo "gzip exited with code $?" >> /home/andrew/svnlog.txt
echo "DONE AT $(date +\%Y/\%m/\%d/T%I:\%M:\%S)" >> /home/andrew/svnlog.txt
echo  "-----" >> /home/andrew/svnlog.txt

Ce script est appelé par un crontab super-utilisateur.

Autres conseils

Tout d'abord, assurez-vous que svnadmin est la variable d'environnement PATH du travail cron. Vous devrez peut-être spécifier un chemin complet pour /usr/bin/svnadmin ou tout ce qui est approprié.

En outre, plutôt que svnadmin dump, vous pouvez regarder dans svnadmin hotcopy qui est un outil destiné aux sauvegardes du référentiel.

J'ai présenté cela comme un bug dans le paquet Debian Cron, depuis que je ressentais là aussi (sous vserver). Voir bug # 577133 dans Debian. Christian Kastner patché le bug, en ajoutant du code pour contourner tout le code de traitement du courrier si MTA se trouve.

Avez-vous des limites de taille sur le répertoire des utilisateurs? Voudrez peut-essayer de le jeter à la température d'abord.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top