سؤال

لقد اكتشفت للتو أن المقالب الآلية التي قمت بإنشائها من مستودع SVN الخاص بي قد تم قطعه مبكرًا وبشكل أساسي فقط نصف التفريغ موجود. إنها ليست حالة طوارئ ، لكنني أكره أن أكون في هذا الموقف. تهزم الغرض من صنع نسخ احتياطية آلية في المقام الأول.

الأمر الذي أستخدمه أدناه. إذا قمت بتنفيذها يدويًا في المحطة ، فإنها تكمل بشكل جيد ؛ ملف output.txt هو 16 ميجا في الحجم مع جميع المراجعات 335. ولكن إذا تركت الأمر لـ Crontab ، فإنه ينفجر في منتصف الطريق ، عند حوالي 8.1 ميج ، و 169 مراجعة فقط.

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

أنا في الواقع حفظ إلى ملف gzipped مؤرخ ، وليس هناك نقص في المساحة على الخادم ، لذلك ليست مشكلة مساحة القرص. يبدو أن الكفالة بعد ثانيتين ، لذلك قد يكون هذا مشكلة الوقت ، ولكن حجم الملف هو نفسه في كل مرة في الشهر الماضي ، لذلك لا أعتقد أن الأمر كذلك. هل تنفذ Crontab ضمن مساحة ذاكرة محدودة؟

هل كانت مفيدة؟

المحلول

لذا ، لا أعرف ما هي المشكلة الحقيقية هنا ، ولكن إذا قمت بتوجيه Stderr of Svnadmin إلى /dev /null عندما أقوم بالتفريغ ، فإن كل شيء يسير على ما يرام. حاولت استخدام العلم "الهادئ" (-Q) وينجح أيضًا. أفترض أنه عندما يواجه البرنامج النصي Shell الذي يمتد من Crontab نصًا كافيًا في Strerr ، فإنه يتوقف عن تنفيذ كل ما يتم تشغيله ويذهب إلى التعليمات التالية. لقد قمت بعمل MD5 على ملف يدوي وملف مجدول وهي متطابقة. يبدو أن هذا يتم حله. لذلك إذا واجه أي شخص هذه القضية بنفسه ، فهذا هو البرنامج النصي الذي اعتدت عليه أن أتخطى الاقتطاع المبكر بنجاح. إنه مطول قليلاً. آسف.

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

يتم استدعاء هذا البرنامج النصي من خلال crontab مستخدم فائق.

نصائح أخرى

بادئ ذي بدء ، تأكد من ذلك svnadmin هو على متغير بيئة المسار من وظيفة cron. قد تضطر إلى تحديد مسار كامل /usr/bin/svnadmin أو كل ما هو مناسب.

أيضا ، بدلا من svnadmin dump, ، قد ترغب في النظر في svnadmin hotcopy وهي أداة مخصصة للنسخ الاحتياطية للمستودع.

لقد قدمت هذا على أنه خطأ في حزمة Debian Cron ، لأنني كنت أواجهها هناك أيضًا (تحت Vserver). انظر الخطأ #577133 في دبيان. قام كريستيان كاستنر بتصحيح الخطأ ، عن طريق إضافة رمز لتجاوز جميع رمز معالجة البريد إذا لم يتم العثور على MTA.

هل لديك حد حجم على دليل المستخدمين؟ قد ترغب في محاولة لتفريغها إلى درجة الحرارة أولاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top