पूरी तरह से एक बैकअप रेपो बैकअप?


136

क्या सभी शाखाओं और टैगों सहित संपूर्ण गिट रेपो का बैकअप लेने का एक सरल तरीका है?


2
मुझे लगता है कि आप यहां एक स्थानीय गिट रेपो का उल्लेख कर रहे हैं।
१२:४१ पर जिटेक्स


3
इसका सही उत्तर है: git clone --mirror git@example.com/your-repo.it। यह आपके पूरे रिपॉजिटरी, नोट्स, ब्रांच, ट्रैकिंग आदि को कॉपी करेगा
जॉन

कुछ वेब खोजें जो मैंने चलाईं, उनके परिणामों में इस प्रश्न को शामिल नहीं किया गया: "बिल्कुल क्लोन सब कुछ शाखाओं टैग नोट"; "रिपॉजिटरी में सब कुछ क्लोन करें"; "सभी टैग नोटों के साथ एक रेपो क्लोन git"।
केनी एविट

जवाबों:


64

इसके बारे में सिर्फ एक क्लोन बनाने के लिए क्या?

git clone --mirror other/repo.git

हर रिपॉजिटरी अपने रिमोट का एक बैकअप है।


7
@ डैनियल: यदि आप एक रिपॉजिटरी को क्लोन करते हैं, तो आप हर शाखा को प्राप्त करते हैं, लेकिन केवल डिफ़ॉल्ट ही चेकआउट किया जाता है। कोशिश करो git branch -a। शायद यह इस तरह से अधिक स्पष्ट है: एक रिपॉजिटरी को क्लोन करने के बाद आप हर शाखा को नहीं लाते हैं, आप हर प्रतिबद्धता को प्राप्त करते हैं। शाखाएँ केवल एक मौजूदा प्रतिबद्ध का संदर्भ देती हैं।
किंगक्रंच

1
मुझे लगता है कि वह क्लोन कमांड को अच्छी तरह से जानता है, अगर वह ऐसा सवाल पूछ सकता है, और यह स्पष्ट रूप से उसके लिए पर्याप्त नहीं है (क्योंकि यह एक क्लोन है, और डंप नहीं है)। डंप अलग-अलग चीजें हैं सरल प्रतियां, उदाहरण के लिए: 1) उन्हें सामान्य काम के लिए इष्टतम (या यहां तक ​​कि सक्षम) होने की आवश्यकता नहीं है) लेकिन उन्हें डेटा भ्रष्टाचार के खिलाफ एक अच्छा प्रतिरोध और मरम्मत करने की आवश्यकता है।
पेटेर -

@peterh ज़रूर, लेकिन git cloneवह सब कवर करता है। (1) वैकल्पिक है, आवश्यकता नहीं है। यदि परिणाम अभी भी अनुकूलित है, तो यह अभी भी एक बैकअप है (2) पहले से ही गिट द्वारा कवर किया गया है। - मैं जो बिंदु देना चाहूंगा, वह यह है कि यदि आपको git cloneपहले से ही एक अलग टूल की जरूरत है, तो संबंधित बिंदुओं को कवर करें? हालांकि मैं यह भी पसंद करता git bundleहूं कि मुझे नहीं लगता कि मेरा जवाब गलत है, या अमान्य है। आप हॉट-बनाम कोल्ड-बैकअप के रूप में दोनों दृष्टिकोण देख सकते हैं।
किंगक्रंच

फ़ाइल अनुमतियों के बारे में क्या? जरूरी है कि क्लोन क्लोन उन पर नकल करता है? मुझे विश्वास है कि विकल्पों पर निर्भर करता है
antirealm

192
git bundle

मुझे वह तरीका पसंद है, क्योंकि इसके परिणामस्वरूप केवल एक फ़ाइल होती है, जिसे कॉपी करना आसान होता है। प्रोगिट
देखें : आनंद का छोटा बंडल
यह भी देखें कि " मैं किसी को गिट रिपॉजिटरी कैसे ईमेल कर सकता हूं? ", जहां कमांड है

git bundle create /tmp/foo-all --all

विस्तृत है:

git bundleकेवल उन संदर्भों को पैकेज करेगा जो git शो-रेफ द्वारा दिखाए जाते हैं : इसमें हेड, टैग और रिमोट हेड शामिल हैं।
यह बहुत महत्वपूर्ण है कि गंतव्य के आधार का उपयोग किया जाए।
यह सावधानी के साथ ठीक करने के लिए ठीक है, जिससे बंडल फ़ाइल गंतव्य में पहले से ही ऑब्जेक्ट्स को समाहित कर लेती है, क्योंकि गंतव्य पर अनपैक करते समय इन पर ध्यान नहीं दिया जाता है।


उस बंडल का उपयोग करने के लिए, आप इसे क्लोन कर सकते हैं, एक गैर-मौजूद फ़ोल्डर निर्दिष्ट कर सकते हैं (किसी भी गिट रेपो के बाहर):

git clone /tmp/foo-all newFolder

11
add --all for
full

1
यह, git bundleमेरी राय पर सही उत्तर है, और स्वीकृत नहीं है। मुझे लगता है कि वह क्लोन कमांड को अच्छी तरह से जानता है, अगर वह ऐसा सवाल पूछ सकता है, और यह स्पष्ट रूप से उसके लिए पर्याप्त नहीं है (क्योंकि यह एक क्लोन है, और डंप नहीं है)। डंप अलग-अलग चीजें हैं सरल प्रतियां, उदाहरण के लिए: 1) उन्हें सामान्य काम के लिए इष्टतम (या यहां तक ​​कि सक्षम) होने की आवश्यकता नहीं है) लेकिन उन्हें डेटा भ्रष्टाचार 3 के खिलाफ एक अच्छा प्रतिरोध और मरम्मत करने की आवश्यकता है) यह अक्सर उपयोगी होता है अगर वे आसानी से वृद्धिशील बैकअप के लिए सक्षम हैं, जबकि यह प्रतियों पर एक लक्ष्य नहीं है।
पीटर - मोनिका

3
नोट है कि न तो git bundleया git cloneहो जाता है सब कुछ , उदाहरण के लिए हुक लिपियों।
ज़िट्रैक्स

2
@Zitrax हाँ, यह डिज़ाइन द्वारा है। हुक खतरनाक हो सकते हैं या संवेदनशील जानकारी शामिल कर सकते हैं।
वॉनज

क्या मैं git bundleरिमोट रेपो के खिलाफ इस्तेमाल कर सकता हूं ?
रेयान

24

कुछ अन्य उत्तरों पर विस्तार करते हुए, यही मैं करता हूँ:

रेपो सेट करें: git clone --mirror user@server:/url-to-repo.git

फिर जब आप बैकअप को रिफ्रेश करना चाहते हैं: git remote updateक्लोन लोकेशन से।

यह उन सभी शाखाओं और टैगों का समर्थन करता है, जिनमें नए शामिल हैं जो बाद में जुड़ जाते हैं, हालांकि यह ध्यान देने योग्य है कि जो शाखाएं हटा दी जाती हैं वे क्लोन से नष्ट नहीं होती हैं (जो बैकअप के लिए अच्छी बात हो सकती हैं)।

यह परमाणु है इसलिए इसमें समस्याएं नहीं हैं जो एक सरल प्रतिलिपि होगी।

Http://www.garron.me/en/bits/backup-git-bare-repo.html देखें


20

KingCrunch और VonC द्वारा शानदार उत्तरों पर विस्तार

मैंने उन दोनों को मिला दिया:

git clone --mirror git@some.origin/reponame reponame.git
cd reponame.git
git bundle create reponame.bundle --all

उसके बाद आपके पास एक फाइल होती है जिसे reponame.bundleआसानी से कॉपी किया जा सकता है। फिर आप उस उपयोग से एक नया सामान्य गिट रिपॉजिटरी बना सकते हैं git clone reponame.bundle reponame

ध्यान दें कि git bundleकेवल प्रतियाँ हैं जो भंडार में कुछ संदर्भ (शाखा या टैग) को ले जाती हैं। इसलिए टेंगलिंग कम्यूट बंडल के लिए संग्रहीत नहीं हैं।


1
अच्छा सारांश। +1।
वॉन

2
मुझे लगता है कि आपका मतलब है git bundle create reponame.bundle --all?
जो

धन्यवाद @joe कि सूचना के लिए। निश्चित रूप से। मैं जवाब अपडेट कर दूंगा।
किममो अहोकस

4

सब कुछ .gitनिर्देशिका में निहित है । जैसा कि आप किसी भी फ़ाइल के साथ अपने प्रोजेक्ट के साथ ही वापस करेंगे।


2
क्या इसका मतलब यह है कि, Git प्रोजेक्ट वाली डायरेक्टरी की सभी सामग्री पर्याप्त है?
रवींद्रनाथ अकीला

1
सुनील के साथ सहमत - यह एक परमाणु ऑपरेशन प्रतीत नहीं होता है।
jia103

1
और आप यह कैसे सुनिश्चित करते हैं कि बैकअप बनाते समय उस निर्देशिका की फ़ाइलों में कोई बदलाव नहीं किया गया है?
राेडवल्ड

जैसा कि रायडवल्ड ने संकेत दिया है, इस पद्धति के परिणामस्वरूप असंगत बैकअप हो सकता है और इसलिए डेटा हानि हो सकती है। इसलिए इस जवाब को हटा दिया जाना चाहिए, या बहुत कम से कम, डेटा हानि की संभावना के बारे में चेतावनी दें।
अभिषेक आनंद

मुझे लगता है कि वह जानता है copyया cpबहुत अच्छी तरह से आज्ञा देता है और यह उसकी जरूरतों के अनुरूप नहीं है। और मुझे भी लगता है, वह एक नंगे भंडार पर सोचता है (हालाँकि इसे कॉपी भी किया जा सकता है, मुझे लगता है कि यह पूर्ण रूप से बैकअप नहीं है)।
पीटर - मोनिका

4

git बंडल, या क्लोन का उपयोग करें

git डायरेक्टरी को कॉपी करना एक अच्छा समाधान नहीं है क्योंकि यह परमाणु नहीं है। यदि आपके पास एक बड़ी रिपॉजिटरी है, जिसे कॉपी करने में लंबा समय लगता है और कोई आपकी रिपॉजिटरी में धकेलता है, तो यह आपकी बैक को प्रभावित करेगा। क्लोनिंग या बंडल बनाने से यह समस्या नहीं होगी।


3

आप न्यूनतम स्टोरेज साइज़ पर git-copy के साथ git रेपो का बैकअप ले सकते हैं ।

git copy /path/to/project /backup/project.repo.backup

तब आप के साथ अपने प्रोजेक्ट को पुनर्स्थापित कर सकते हैं git clone

git clone /backup/project.repo.backup project

2
github.com/cybertk/git-copy/blob/master/bin/git-copy#L8-L36 : यह एक साधारण git clone --bare+ के लिए बहुत काम लगता है git push --force
वॉन

@VonC हां, लेकिन इसमें रीपैकेजिंग के दौरान कुछ अतिरिक्त सुविधा हो सकती है, या यह गिट रेपो की आंतरिक संरचना को माइन कर सकता है, जिसका उपयोग यह कुछ अनुकूलन (गंतव्य के पुनर्गठन, या गति में वृद्धि, आदि) के लिए कर सकता है।
पीटर - मोनिका

3

सही उत्तर IMO है git clone --mirror । यह आपके रेपो का पूरी तरह से बैकअप लेगा।

Git क्लोन मिरर पूरे रिपॉजिटरी, नोट्स, हेड्स, रेफ्स इत्यादि को क्लोन करेगा और आम तौर पर एक नए git सर्वर के लिए संपूर्ण रिपॉजिटरी को कॉपी करने के लिए उपयोग किया जाता है। यह एक सभी शाखाओं और सब कुछ, पूरे भंडार को नीचे खींच देगा ।

git clone --mirror git@example.com/your-repo.git
  • आम तौर पर एक रेपो क्लोनिंग में सभी शाखाएं शामिल नहीं होती हैं, केवल मास्टर।

  • रेपो फोल्डर को कॉपी करने से केवल उन शाखाओं को "कॉपी" किया जाएगा जिन्हें अंदर खींचा गया है ... इसलिए डिफ़ॉल्ट रूप से केवल मास्टर शाखा या अन्य शाखाएं जिन्हें आपने पहले चेक-आउट किया है।

  • Git बंडल कमांड भी वह नहीं है जो आप चाहते हैं: "बंडल कमांड उन सभी चीजों का पैकेज करेगा जो सामान्य रूप से एक git पुश कमांड के साथ एक बाइनरी फ़ाइल में वायर पर धकेल दिए जाएंगे जिसे आप किसी को ईमेल कर सकते हैं या फ्लैश ड्राइव पर डाल सकते हैं, फिर एक और रिपॉजिटरी में असंबद्ध। " ( Git क्लोन - मिरर और git क्लोन --bare के बीच अंतर क्या है )


क्या git clone --mirror एक सुसंगत बिंदु-इन-टाइम बैकअप बनाता है? एक उपयोगकर्ता बैकअप के दौरान एक प्रतिबद्ध धक्का क्या है? क्या इसे अस्वीकृत, कतारबद्ध या बैकअप में शामिल किया गया है?
बेंजामिन गुडाक्रे

3

यह थ्रेड कुछ अंतर्दृष्टि प्राप्त करने में बहुत मददगार था कि git repos का बैकअप कैसे किया जा सकता है। मुझे लगता है कि अभी भी अपने आप के लिए "सही तरीका" (tm) खोजने के लिए कुछ संकेत, जानकारी या निष्कर्ष का अभाव है। इसलिए दूसरों की मदद करने के लिए अपने विचारों को यहाँ साझा करना और उन्हें बढ़ाने के लिए चर्चाओं के लिए रखा। धन्यवाद।

तो मूल प्रश्न को उठाकर शुरू करना:

  • लक्ष्य एक रिपॉजिटरी के "पूर्ण" बैकअप के लिए जितना संभव हो उतना करीब पाने के लिए है।

फिर इसे विशिष्ट इच्छाओं के साथ समृद्ध करना और कुछ नुस्खे निर्दिष्ट करना:

  • "हॉट-कॉपी" के माध्यम से बैकअप सेवा डाउनटाइम से बचने के लिए पसंद किया जाता है।
  • अतिरिक्त कमांड द्वारा git की कमियों के आसपास काम किया जाएगा।
  • एक स्क्रिप्ट को एक बैकअप के लिए कई चरणों को संयोजित करने और मानवीय गलतियों (टाइपो, आदि) से बचने के लिए बैकअप करना चाहिए।
  • इसके अतिरिक्त एक स्क्रिप्ट को डंप को टारगेट मशीन के अनुकूल बनाने के लिए रिस्टोर करना चाहिए, जैसे कि बैकअप के बाद से मूल मशीन का कॉन्फ़िगरेशन भी बदल गया होगा।
  • एक लिनक्स सिस्टम पर एक फाइल सिस्टम के साथ पर्यावरण एक git सर्वर है जो हार्डलिंक का समर्थन करता है।

1. "पूर्ण" गिट रेपो बैकअप क्या है?

देखने का बिंदु यह है कि "100%" बैकअप क्या है। यहाँ दो विशिष्ट हैं।

# 1 डेवलपर की बात

  • सामग्री
  • संदर्भ

git एक डेवलपर टूल है और इस बिंदु को git clone --mirrorऔर के माध्यम से देखने का समर्थन करता है git bundle --all

# 2 प्रशासन का दृष्टिकोण

  • सामग्री फ़ाइलें
    • विशेष मामला "पैकफाइल": कचरा संग्रहण के दौरान गिट्स को वस्तुओं में मिला देता है और कॉम्पैक्ट करता है (देखें git gc)
  • गिट विन्यास
    • देख https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain
    • डॉक्स: मैन गिट-कॉन्फिग, मैन जीटिग्नोर
    • .git / config
    • .it / विवरण (हुक और टूल्स के लिए, उदाहरण के लिए-पोस्ट-ईमेल हुक, गिटोलिट, गिटवेब, आदि)
    • .git / हुक /
    • .it / जानकारी / (रिपॉजिटरी फ़ाइल को छोड़कर, आदि)
  • वैकल्पिक: OS कॉन्फ़िगरेशन (फ़ाइल सिस्टम अनुमतियाँ, आदि)

git एक डेवलपर टूल है और इसे एडमिन को छोड़ देता है। Git कॉन्फ़िगरेशन और OS कॉन्फ़िगरेशन के बैकअप को सामग्री के बैकअप से अलग करके देखा जाना चाहिए।

2. तकनीक

  • "शीत-कॉपी"
    • सेवा को उसकी फ़ाइलों तक अनन्य पहुंच के लिए रोकें। डाउनटाइम!
  • 'हॉट-कॉपी "
    • सेवा बैकअप उद्देश्यों के लिए एक निश्चित स्थिति प्रदान करती है। चालू होने वाले परिवर्तन उस स्थिति को प्रभावित नहीं करते हैं।

3. अन्य विषयों के बारे में सोचने के लिए

उनमें से अधिकांश बैकअप के लिए सामान्य हैं।

  • क्या पूर्ण बैकअप रखने के लिए पर्याप्त जगह है? कितनी पीढ़ियों को संग्रहीत किया जाएगा?
  • क्या वृद्धिशील दृष्टिकोण चाहता है? कितनी पीढ़ियों को संग्रहीत किया जाएगा और फिर से पूर्ण बैकअप कब बनाया जाएगा?
  • यह कैसे सत्यापित करें कि निर्माण या समय के बाद एक बैकअप दूषित नहीं है?
  • क्या फ़ाइल सिस्टम हार्डलिंक का समर्थन करता है?
  • एक एकल संग्रह फ़ाइल में बैकअप रखें या निर्देशिका संरचना का उपयोग करें?

4. git बैकअप सामग्री को क्या प्रदान करता है

  • git gc --auto

    • डॉक्स: मैन गिट-जीसी
    • साफ करता है और एक भंडार को संकुचित करता है।
  • git bundle --all

    • डॉक्स: मैन गिट-बंडल, मैन गिट-रेव-लिस्ट
    • परमाणु = "हॉट-कॉपी"
    • बंडल डंप फाइलें हैं और इसे सीधे गिट (सत्यापन, क्लोन, आदि) के साथ उपयोग किया जा सकता है।
    • वृद्धिशील निष्कर्षण का समर्थन करता है।
    • के माध्यम से सत्यापित करने योग्य git bundle verify
  • git clone --mirror

    • डॉक्स: मैन गिट-क्लोन, मैन गिट- फॉक्स, गिट क्लोन के बीच क्या अंतर है - सिर और गिट क्लोन - शब्द
    • परमाणु = "हॉट-कॉपी"
    • दर्पण वास्तविक गिट रिपोजिटरी हैं।
    • इस कमांड का प्राथमिक उद्देश्य पूर्ण सक्रिय दर्पण का निर्माण करना है, जो समय-समय पर मूल रिपॉजिटरी से अपडेट प्राप्त करता है।
    • अंतरिक्ष बर्बाद करने से बचने के लिए एक ही फाइल सिस्टम पर दर्पण के लिए हार्डलिंक का समर्थन करता है।
    • के माध्यम से सत्यापित करने योग्य git fsck
    • दर्पण का उपयोग पूर्ण फ़ाइल बैकअप स्क्रिप्ट के लिए आधार के रूप में किया जा सकता है।

5. कोल्ड-कॉपी

एक कोल्ड-कॉपी बैकअप हमेशा एक पूर्ण फ़ाइल बैकअप कर सकता है: git repos के सभी एक्सेस को अस्वीकार करें , बैकअप करें और फिर से एक्सेस की अनुमति दें।

  • संभव मुद्दे
    • सभी एक्सेस को अस्वीकार करने के लिए आसान नहीं है - या यहां तक ​​कि संभव नहीं है - उदाहरण के लिए फ़ाइल सिस्टम के माध्यम से साझा की गई एक्सेस।
    • यहां तक ​​कि अगर रेपो क्लाइंट-ओनली मशीन पर एकल उपयोगकर्ता के साथ है, तब भी उपयोगकर्ता स्वचालित बैकअप रन के दौरान कुछ कर सकता है :(
    • डाउनटाइम सर्वर पर स्वीकार्य नहीं हो सकता है और कई विशाल रिपोज का बैकअप लेने में लंबा समय लग सकता है।
  • शमन के लिए विचार:
    • सामान्य रूप से फ़ाइल सिस्टम के माध्यम से डायरेक्ट रेपो एक्सेस को रोकें, भले ही ग्राहक एक ही मशीन पर हों।
    • SSH / HTTP एक्सेस के लिए git ऑथराइजेशन मैनेजर्स (जैसे gitolite) का उपयोग स्क्रिप्टिंग तरीके से ऑथेंटिकेशन फाइल को डायनामिक रूप से प्रबंधित या संशोधित करने के लिए करते हैं।
    • बैकअप प्रत्येक रेपो के लिए डाउनटाइम को कम करने के लिए एक-एक करके बैकअप देता है। एक रेपो को अस्वीकार करें, बैकअप करें और फिर से एक्सेस की अनुमति दें, फिर अगले रेपो के साथ जारी रखें।
    • डेवलपर्स की परेशान से बचने के लिए रखरखाव कार्यक्रम की योजना बनाई है।
    • केवल बैकअप जब रिपॉजिटरी बदल गया है। शायद इसे लागू करने के लिए बहुत मुश्किल है, उदाहरण के लिए वस्तुओं की सूची और मन में पैकफाइल्स होने के कारण, कॉन्फ़िगरेशन और हुक के चेकसम आदि।

6. हॉट-कॉपी

ऑन-गोइंग कमिट्स द्वारा दूषित डेटा के जोखिम के कारण सक्रिय बैकअप के साथ फ़ाइल बैकअप नहीं किया जा सकता है। एक हॉट-कॉपी बैकअप प्रयोजनों के लिए एक सक्रिय भंडार का एक निश्चित राज्य प्रदान करता है। ऑन-गोइंग कमिट्स उस प्रति को प्रभावित नहीं करते हैं। जैसा कि git के क्लोन और बंडल फ़ंक्शंस से ऊपर सूचीबद्ध है, इसका समर्थन करते हैं, लेकिन "100% व्यवस्थापक" बैकअप के लिए कई चीजें अतिरिक्त कमांड के माध्यम से करनी पड़ती हैं।

"100% व्यवस्थापक" हॉट-कॉपी बैकअप

  • विकल्प 1: git bundle --allसामग्री की पूर्ण / वृद्धिशील डंप फ़ाइलें बनाने के लिए उपयोग करें और कॉपी / बैकअप कॉन्फ़िगरेशन फ़ाइलों को अलग से।
  • विकल्प 2: git clone --mirrorअलग से कॉन्फ़िगरेशन का उपयोग करें , संभाल और कॉपी करें, फिर दर्पण का पूर्ण फ़ाइल बैकअप करें।
    • टिप्पणियाँ:
    • एक दर्पण एक नया भंडार है, जो निर्माण पर वर्तमान गिट टेम्पलेट के साथ आबादी है।
    • कॉन्फ़िगरेशन फ़ाइलों और निर्देशिकाओं को साफ़ करें, फिर मूल स्रोत भंडार से कॉन्फ़िगरेशन फ़ाइलों की प्रतिलिपि बनाएँ।
    • बैकअप स्क्रिप्ट दर्पण पर फ़ाइल अनुमतियों की तरह ओएस कॉन्फ़िगरेशन भी लागू कर सकती है।
    • एक फाइलसिस्टम का उपयोग करें जो हार्डलिंक का समर्थन करता है और उसी फाइल सिस्टम पर दर्पण का निर्माण करता है जो बैकअप के लिए गति प्राप्त करने और अंतरिक्ष की खपत को कम करने के लिए स्रोत रिपॉजिटरी है।

7. पुनर्स्थापित करें

  • मशीन को लक्षित करने और नवीनतम "दर्शन करने का तरीका" दर्शन की जाँच करें और अपनाएँ।
  • मशीन और नवीनतम "करने का तरीका" दर्शन को लक्षित करने के लिए OS कॉन्फ़िगरेशन की जाँच करें और अपनाएं।

0
cd /path/to/backupdir/
git clone /path/to/repo
cd /path/to/repo
git remote add backup /path/to/backupdir
git push --set-upstream backup master

यह एक बैकअप बनाता है और सेटअप बनाता है, ताकि आप अपने बैकअप को अपडेट करने के लिए एक git पुश कर सकें, कि आप क्या करना चाहते हैं। बस यह सुनिश्चित करें, कि / path / to / backupdir और / path / to / repo कम से कम अलग-अलग हार्ड ड्राइव हैं, अन्यथा यह ऐसा करने के लिए बहुत अधिक समझ में नहीं आता है।


मुझे लगता है कि वह क्लोन कमांड को अच्छी तरह से जानता है, अगर वह ऐसा सवाल पूछ सकता है, और यह स्पष्ट रूप से उसके लिए पर्याप्त नहीं है (क्योंकि यह एक क्लोन है, और डंप नहीं है)। डंप अलग-अलग चीजें हैं सरल प्रतियां, उदाहरण के लिए: 1) उन्हें सामान्य काम के लिए इष्टतम (या यहां तक ​​कि सक्षम) होने की आवश्यकता नहीं है) लेकिन उन्हें डेटा भ्रष्टाचार 3 के खिलाफ एक अच्छा प्रतिरोध और मरम्मत करने की आवश्यकता है) यह अक्सर उपयोगी होता है अगर वे आसानी से वृद्धिशील बैकअप के लिए सक्षम हैं, जबकि यह प्रतियों पर एक लक्ष्य नहीं है।
पेटेर -

0

यहाँ दो विकल्प हैं:

  1. आप सीधे git रेपो डायरेक्टरी का एक टार ले सकते हैं क्योंकि इसमें रेपो की पूरी नंगी सामग्री सर्वर पर है। थोड़ी संभावना है कि कोई बैकअप लेते समय रेपो पर काम कर रहा हो।

  2. निम्न कमांड आपको रेपो का नंगे क्लोन देगा (जैसा कि यह सर्वर में है), तो आप उस स्थान का एक टार ले सकते हैं जहां आपने बिना किसी समस्या के क्लोन किया है।

    git clone --bare {your backup local repo} {new location where you want to clone}
    

मुझे लगता है कि वह क्लोन या टार कमांड को अच्छी तरह से जानता है, अगर वह ऐसा सवाल पूछ सकता है, और यह स्पष्ट रूप से उसके लिए पर्याप्त नहीं है (क्योंकि यह एक क्लोन है, और डंप नहीं है)। डंप अलग-अलग चीजें हैं सरल प्रतियां, उदाहरण के लिए: 1) उन्हें सामान्य काम के लिए इष्टतम (या यहां तक ​​कि सक्षम) होने की आवश्यकता नहीं है) लेकिन उन्हें डेटा भ्रष्टाचार 3 के खिलाफ एक अच्छा प्रतिरोध और मरम्मत करने की आवश्यकता है) यह अक्सर उपयोगी होता है अगर वे आसानी से वृद्धिशील बैकअप के लिए सक्षम हैं, जबकि यह प्रतियों पर एक लक्ष्य नहीं है।
पीटर -

3
पीटर, निश्चित रूप से वह टार या क्लोन कमांड के लिए नहीं कह रहा था। यदि आप बारीकी से देखते हैं, तो मैं उन आदेशों की व्याख्या नहीं कर रहा था। जो मैं समझाने की कोशिश कर रहा था वह विभिन्न बैकअप के माध्यम से Git बैकअप है जिसमें विभिन्न लिनक्स कमांड शामिल हो सकते हैं जिसका मतलब यह नहीं है कि मैं उन लिनक्स कमांडों को पढ़ा रहा हूं। मैं यहां कुछ विचार रखने की कोशिश कर रहा हूं।
विह्वल सहस्रबुद्धे

0

यदि यह गितुब पर है, तो बिटबकेट पर नेविगेट करें और एक निजी रेपो के रूप में अपने गितूब रेपो को आयात करने के लिए "आयात भंडार" विधि का उपयोग करें।

अगर यह बिटकॉइन में है, तो दूसरे रास्ते के आसपास करें।

यह एक पूर्ण बैकअप है लेकिन क्लाउड में रहता है जो मेरी आदर्श विधि है।


-7

जहाँ तक मुझे पता है आप सिर्फ उस निर्देशिका की एक प्रति बना सकते हैं जो आपके रेपो में है, बस!

cp -r project project-backup

क्या कोई इसकी पुष्टि कर सकता है? मुझे लगता है कि उचित बैकअप बनाने के लिए यह सही तरीका है।
रवींद्रनाथ अकीला

5
मुझे लगता है कि आप एक असंगत स्नैपशॉट के साथ समाप्त हो सकते हैं जब कॉपी ऑपरेशन के दौरान परिवर्तन किए जाते हैं या रिपॉजिटरी को धकेल दिया जाता है। जैसे git कमांड का उपयोग करना git clone --bareआपको एक सुसंगत स्नैपशॉट देगा।
इल्के जुले

1
सुनील के साथ सहमत - यह परमाणु प्रतीत नहीं होता है।
jia103

1
@ jia103 यह हमेशा एक समस्या नहीं है यदि यह परमाणु नहीं है - आपको केवल यह जानने की आवश्यकता है, और सक्षम होने की आवश्यकता है, इस बात की गारंटी देने के लिए कि जब आप इस पर काम कर रहे हैं, तो कोई भी अन्य व्यक्ति रेपो तक नहीं पहुंच सकता है। लेकिन मुझे लगता है कि ओपी एक विशिष्ट चाहता है, टास्क के लिए गिट रिपॉज अनुकूलित टूल के लिए, सरल फ़ाइल कॉपी शायद उसके लिए अच्छी तरह से जानी जाती है।
पीटर - मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.