سؤال
أتساءل عما إذا كانت هناك طريقة سهلة ، أي مثل وظيفة كرون بسيطة ، بانتظام يحذب من مستودع GIT عن بُعد إلى مرآة قراءة محلية فقط لأغراض النسخ الاحتياطي؟
من الناحية المثالية ، فإنه سيسحب جميع الفروع والعلامات ، لكن السيد/الجذع/الرأس سيكون كافياً.
أنا فقط بحاجة إلى طريقة للتأكد من أنه إذا مات خادم GIT الرئيسي ، فلدينا موقع احتياطي يمكن أن نفشل يدويًا.
المحلول
أولا قم بإنشاء مرآة مع
git clone --mirror git@somewhere.com:repo.git
ثم قم بإعداد وظيفة كرون مثل هذا:
*/1 * * * * gitbackup cd /backup/repo.git && git fetch -q --tags
هذا سيؤدي إلى النسخ الاحتياطي لنسخ التغييرات كل دقيقة. ربما تريد أن تفعل هذا بشكل متكرر.
نصائح أخرى
كما لاحظ أندرو ، فإن كل استنساخ من ريبو غيت هو نسخة احتياطية كاملة من الريبو. ومع ذلك ، إذا كنت تريد شيئًا ما يتم نسخه تلقائيًا إلى جهاز معين ، فيمكنك إنشاء ريبو عاري على خادم النسخ الاحتياطي ، وادفعه مع جميع الفروع التي تريد نسخها احتياطيًا في البداية. ثم قم فقط بإعداد خطاف تحديث منشور على الريبو "الرئيسي" بحيث بمجرد دفع الالتزامات ، فإنه يمضي قدما ويدفعهم إلى الريبو الاحتياطي. لا حاجة إلى وظيفة cron أو rsync ، ونسخة حية تقريبا.
هل لديك وصول مباشر إلى الخادم؟ ثم يمكنك فقط rsync
ال .git
الدليل