सामग्री पर जाएँ

बैकअप ​

बैकअप एजेंट आपके इंस्टॉलेशन के डेटाबेस और संग्रहीत फ़ाइलों को एक vault (बैकअप स्टोरेज) में कॉपी करता है: किसी दूसरी डिस्क या नेटवर्क शेयर पर बनी एक डायरेक्टरी। यह तब भी काम करता है जब लोग अपलोड और डाउनलोड करते रहते हैं। हर पूरा हुआ बैकअप एक पुनर्स्थापना बिंदु है जिसे आप सत्यापित और पुनर्स्थापित कर सकते हैं।

यह पृष्ठ vault, शेड्यूल, प्रतिधारण, सत्यापन, स्थिति स्क्रीन और पुनर्स्थापना प्रक्रिया को कवर करता है। पुनर्स्थापना एक कमांड है जिसे आप सर्वर पर चलाते हैं। कंसोल में पुनर्स्थापना का कोई बटन नहीं है।

बैकअप कैसे काम करते हैं ​

एजेंट किसी इंस्टॉलेशन की API और worker के बाद तीसरी सेवा है। Linux पर इसका नाम arkvory-backup, Windows पर Arkvorybackup और Docker Compose में backup है। एक समय पर केवल एक एजेंट काम करता है। दूसरा एजेंट प्रतीक्षा करता है और पहला रुकने पर कार्यभार सँभाल लेता है।

एजेंट तीन काम करता है:

  • योजना चालू होने पर यह दैनिक योजना चलाता है।
  • यह वे जॉब चलाता है जो आप कंसोल में, arkvoryctl से या API के ज़रिए अनुरोध करते हैं।
  • यह हर नए पुनर्स्थापना बिंदु की जाँच करता है और प्रतिधारण लागू करता है।

एक पुनर्स्थापना बिंदु किसी क्षण T पर इंस्टॉलेशन की प्रकाशित स्थिति रखता है, जिसे स्नैपशॉट समय कहते हैं। T के बाद लोग जो फ़ाइलें प्रकाशित करते हैं, वे अगले बैकअप में जाती हैं। कंसोल बैकअप की आयु T से गिनता है, कॉपी पूरी होने के समय से नहीं।

इन तथ्यों को ध्यान में रखें:

  • बैकअप अपलोड या डाउनलोड नहीं रोकता। इसके चलने के दौरान भौतिक क्लीनअप उन फ़ाइलों को छोड़ देता है जिनकी बैकअप को ज़रूरत है और उन्हें बाद के चक्र में हटा देता है।
  • vault में एक फ़ाइल एक ही बार संग्रहीत होती है, चाहे उसे कितने ही पुनर्स्थापना बिंदु रखते हों। पहला बैकअप सब कुछ कॉपी करता है, इसलिए टेराबाइट्स सामग्री के साथ इसमें लंबा समय लगता है। बाद के बैकअप केवल नई फ़ाइलें कॉपी करते हैं।
  • पुनर्स्थापना बिंदु तभी दिखता है जब उसकी कॉपी पूरी हो जाती है। विफल या बाधित बैकअप पहले के पुनर्स्थापना बिंदुओं को कभी नुकसान नहीं पहुँचाता।
  • बैकअप point-in-time recovery सिस्टम नहीं है और high availability भी नहीं है। आप एक पुनर्स्थापना बिंदु की स्थिति को पुनर्स्थापित करते हैं, और उसके T के बाद के बदलाव खो देते हैं।

बैकअप में क्या होता है ​

एक पुनर्स्थापना बिंदु में होता है:

  • डेटाबेस की कैटलॉग तालिकाएँ: artifacts, packages, फ़ाइल पथ और उनका इतिहास, labels और metadata, stages, attachments, accounts, groups और grants, service accounts और keys, audit trails, storage और cleanup policies, container image, Git LFS और npm registry डेटा, और mirrors की स्थिति।
  • हर प्रकाशित फ़ाइल की सामग्री।

एक पुनर्स्थापना बिंदु में नहीं होता:

  • साइन-इन sessions, download links और read gateways की रनटाइम स्थिति।
  • वे अपलोड जो पूरे नहीं हुए। पुनर्स्थापना उन्हें रद्द कर देती है, और clients उन्हें फिर से शुरू करते हैं।
  • बैकअप योजना और एजेंट की स्थिति। पुनर्स्थापित इंस्टॉलेशन बैकअप बंद के साथ शुरू होता है।
  • इंस्टॉलेशन की config/ डायरेक्टरी: settings, TLS फ़ाइलें, mirror keys, recovery key। इन फ़ाइलों की प्रतियाँ स्वयं रखें।
  • Arkvory प्रोग्राम। पहले एक रिलीज़ इंस्टॉल करें, फिर पुनर्स्थापित करें।

vault तैयार करें ​

आवश्यकताएँ ​

आवश्यकताक्यों
एक नई या खाली डायरेक्टरी, सेवाएँ शुरू होने से पहले माउंट की गईएजेंट वहाँ vault.json और पुनर्स्थापना बिंदु लिखता है
इंस्टॉलेशन डायरेक्टरी के बाहर और स्टोरेज डायरेक्टरी के बाहर, links, junctions और short names के ज़रिए भीस्टोरेज के अंदर बना vault उसके साथ ही चला जाता है। जाँच ऐसे पथ को अस्वीकार करती है जो उन्हें समाहित करता है या उनके अंदर है
सेवा खाते द्वारा लिखने योग्यLinux पर arkvory। Windows पर NT AUTHORITY\LocalService। arkvory configure आपके लिए अधिकार सेट करता है
कॉपी किए जा रहे डेटा के अतिरिक्त कम से कम 1 GiB खाली जगहvault यह आरक्षित जगह रखता है। भरा हुआ वॉल्यूम बैकअप को vault_full के साथ समाप्त करता है, और पहले के बिंदु बरकरार रहते हैं
Linux पर, /home, /root, /run/user, /tmp या /var/tmp के अंतर्गत नहींसेवा का sandbox इन वृक्षों को छिपा देता है
Windows पर, ड्राइव अक्षर वाला स्थानीय या iSCSI वॉल्यूमLocalService SMB शेयर में साइन इन नहीं कर सकता, इसलिए \\nas\share जैसे पथ अस्वीकार कर दिए जाते हैं

किसी दूसरी डिस्क या NAS पर वॉल्यूम इस्तेमाल करें, ताकि स्टोरेज डिस्क विफल होने पर बैकअप साथ न चले जाएँ। स्टोरेज की उसी भौतिक डिस्क पर बना vault गलतियों से बचाता है, डिस्क विफलता से नहीं।

vault डिफ़ॉल्ट रूप से एन्क्रिप्टेड है। Arkvory फ़ाइलों, कैटलॉग और रिस्टोर पॉइंट के विवरण को एन्क्रिप्ट करता है (देखें vault एन्क्रिप्ट करें)। बिना एन्क्रिप्शन बना vault कैटलॉग, पासवर्ड हैश और सभी प्रकाशित फ़ाइलें सादे रूप में रखता है: उसे एन्क्रिप्टेड वॉल्यूम (LUKS, BitLocker, NAS एन्क्रिप्शन) पर रखें और पहुँच केवल सेवा खाते और बैकअप प्रशासक को दें।

vault एन्क्रिप्ट करें ​

vault बनते समय एन्क्रिप्ट होता है और वैसा ही रहता है। Arkvory फ़ाइलों की सामग्री, कैटलॉग और पॉइंट के विवरण को AES-256-GCM से एन्क्रिप्ट करता है, और vault पढ़ते समय बदली हुई, कटी हुई या बदल दी गई फ़ाइल पकड़ लेता है। वह फ़ाइलों के नाम, उनके आकार और पॉइंट की संख्या नहीं छिपाता।

सर्वर पर arkvory-backup प्रोग्राम से vault बनाएँ (देखें शुरू करने से पहले)। दोनों फ़ाइलें नई होनी चाहिए और vault तथा स्टोरेज के बाहर होनी चाहिए:

bash
arkvory-backup vault init /mnt/backup/arkvory \
  --kit-file /root/arkvory-recovery-kit.txt \
  --agent-key-file /root/arkvory-agent.key
  1. कमांड दो कुंजियों वाला vault बनाती है: एजेंट की कुंजी (arkvory-agent.key) और रिकवरी किट में रिकवरी कुंजी। सफलता बताने से पहले वह हर कुंजी से vault खोलकर देखती है।
  2. रिकवरी किट को अभी इस सर्वर से बाहर ले जाएँ: पासवर्ड मैनेजर या तिजोरी में। किट या एजेंट की कुंजी के बिना कोई भी बैकअप नहीं पढ़ सकता, और कोई आपके लिए उन्हें रिस्टोर नहीं कर सकता। जिसके पास किट और vault की प्रति है, वह उसमें के सभी बैकअप पढ़ सकता है।
  3. अगले भाग में दिखाए अनुसार एजेंट की कुंजी से vault जोड़ें, और कुंजी फ़ाइल की अपनी प्रति मिटा दें। इंस्टॉलेशन अपनी प्रति config/backup/vault.key में रखता है, जिसे केवल सेवा खाता पढ़ सकता है।

किट की रिकवरी कुंजी केवल इसी vault को खोलती है। यह इंस्टॉलेशन की रिकवरी कुंजी (config/bootstrap-token.txt) नहीं है।

अभी जाँचें कि किट vault खोलता है, और कुंजियाँ बदलने के बाद हर बार फिर जाँचें:

bash
arkvory-backup vault key verify --vault /mnt/backup/arkvory --key-file /root/arkvory-recovery-kit.txt

हर कुंजी एक स्लॉट की होती है, और हर स्लॉट अपनी कुंजी से vault खोलता है। ये कमांड स्लॉट बदलती हैं। कोई भी कुंजी नहीं दिखाती:

कमांडप्रभाव
vault key list --vault DIRस्लॉट सूचीबद्ध करती है: id, प्रकार (agent या recovery) और बनने का समय। कुंजी नहीं चाहिए।
vault key add-recovery --vault DIR --key-file KEY --kit-file NEWरिकवरी स्लॉट जोड़ती है और उसका किट लिखती है, किसी दूसरे व्यक्ति या दूसरी तिजोरी के लिए।
vault key rotate-agent --vault DIR --key-file KEY --agent-key-file NEWएजेंट की कुंजी की नई फ़ाइल और स्लॉट बनाती है। पुरानी एजेंट कुंजी काम करती रहती है: नई कुंजी फ़ाइल के साथ arkvory configure चलाएँ, फिर पुराने स्लॉट (आउटपुट में backup.vault.key.previous) को vault key remove से हटाएँ।
vault key remove --vault DIR --key-file KEY --slot IDस्लॉट हटाती है। आख़िरी स्लॉट और आख़िरी रिकवरी स्लॉट बने रहते हैं।

स्लॉट हटाने से वह vault उस व्यक्ति के लिए बंद हो जाता है जिसके पास केवल वही कुंजी है। इससे पुराने पॉइंट दोबारा एन्क्रिप्ट नहीं होते: जिसने पहले vault और कोई कुंजी कॉपी की थी, वह उस प्रति को अब भी पढ़ सकता है। यदि कोई कुंजी लीक हुई हो सकती है, तो नई कुंजियों के साथ नया vault बनाएँ और वहाँ नए पॉइंट शुरू करें।

बिना एन्क्रिप्शन का vault संभव है: arkvory-backup vault init DIR --no-encryption। वह कैटलॉग, पासवर्ड हैश और सभी फ़ाइलें सादे रूप में रखता है, इसलिए उसे एन्क्रिप्टेड वॉल्यूम और केवल सेवा खाते की पहुँच चाहिए।

vault कनेक्ट करें ​

कमांड को सर्वर पर root या administrator के रूप में चलाएँ। यह कुछ भी बदलने से पहले डायरेक्टरी की जाँच करता है।

bash
sudo arkvory configure --root /opt/proanima-arkvory --backup-vault /mnt/backup/arkvory --vault-key-file /root/arkvory-agent.key
powershell
$root = 'C:\ProgramData\ProAnima\Arkvory'
& 'C:\Program Files\ProAnima\Arkvory\arkvory.ps1' configure --root $root --backup-vault D:\Backup\Arkvory --vault-key-file C:\Private\arkvory-agent.key

Windows पर स्क्रिप्ट इंस्टॉलेशन के लिए, manage.mjs को Windows में बताए अनुसार शुरू करें।

  1. कमांड पथ की जाँच करता है: absolute, मौजूद लिखने योग्य डायरेक्टरी, इंस्टॉलेशन और स्टोरेज के बाहर, और सेवा के लिए दिखने योग्य।
  2. एन्क्रिप्टेड vault, जो डिफ़ॉल्ट है, पहले से मौजूद है: आपने उसे arkvory-backup vault init से बनाया, और --vault-key-file सेवा को उसकी कुंजी देती है (AK1-… कुंजी, कभी रिकवरी कुंजी नहीं)। --init-vault --vault-no-encryption के साथ वह इसके बजाय ख़ाली डायरेक्टरी में बिना एन्क्रिप्शन का vault बनाती है। वह किसी डायरेक्टरी को दो बार इनिशियलाइज़ नहीं करती। vault.json और --init-vault दोनों के बिना वह मना कर देती है, ताकि माउंट न हुए NAS को ख़ाली vault न समझ लिया जाए।
  3. वह सेवा खाते को पहुँच देती है, कुंजी को config/backup/vault.key में कॉपी करती है, ARKVORY_BACKUP_VAULT और ARKVORY_BACKUP_VAULT_KEY_FILE को config/runtime.json में लिखती है और केवल एजेंट को पुनः आरंभ करती है।
  4. यह 150 सेकंड तक प्रतीक्षा करता है जब तक एजेंट इस vault को उपलब्ध न बता दे। यह जाँच config/bootstrap-token.txt पढ़ती है, इसलिए उस फ़ाइल को हटाएँ नहीं।
  5. अगर कुछ भी विफल हो, तो यह पिछली सेटिंग्स और पिछली पहुँच बहाल करता है, और एजेंट को रीस्टार्ट करता है।

पहले से मौजूद vault इस्तेमाल करने के लिए, उदाहरण के लिए नए सर्वर पर, --vault-key-file से उसकी कुंजी दें और --init-vault छोड़ दें। vault को अलग करने के लिए --backup-vault-off का उपयोग करें: डायरेक्टरी और उसकी फ़ाइलें जस की तस रहती हैं और इंस्टॉलेशन की कुंजी फ़ाइल हटा दी जाती है। पुनः आरंभ चल रहे बैकअप को रोक देता है, और एजेंट उसे दोहराता है।

Docker Compose में, vault config/compose.vault.yml से एक bind mount है। जब आप स्वयं Compose कमांड चलाएँ, तो -f config/compose.vault.yml जोड़ें। इसके बिना up एजेंट कंटेनर बिना vault के बना देता है।

नेटवर्क शेयर पर vault ​

Linux पर, NAS SMB 3 और NFS 4 के ज़रिए काम करता है। शेयर को इस तरह माउंट करें कि फ़ाइलें सेवा खाते की हों, वरना एजेंट लिख नहीं सकता, और configure इनकार करके पुरानी सेटिंग्स बहाल कर देता है।

bash
sudo mount -t cifs //nas/arkvory /mnt/backup/arkvory \
  -o credentials=/etc/arkvory/smb.credentials,uid=$(id -u arkvory),gid=$(id -g arkvory),file_mode=0600,dir_mode=0700,vers=3.1.1
  • क्रेडेंशियल फ़ाइल को 0600 मोड दें।
  • NFS के लिए, owners को इस तरह मैप करें कि फ़ाइलें arkvory की हों। export पर no_root_squash इस्तेमाल करें, या दोनों तरफ़ एक ही user ID रखें।
  • माउंट को _netdev के साथ /etc/fstab में जोड़ें। SMB के लिए nofail जोड़ें जब बूट के समय NAS उपलब्ध न हो सके।
  • अगर NAS गिर जाए, तो एजेंट vault_unavailable बताता है। यह खाली माउंट पॉइंट में नहीं लिखता, क्योंकि vault की पहचान vault.json में संग्रहीत होती है।

शेड्यूल और प्रतिधारण ​

शेड्यूल सेट करें ​

बैकअप खोलें और शेड्यूल और प्रतिधारण इस्तेमाल करें। आपको बैकअप प्रबंधित करने का अधिकार चाहिए। इसके बिना फ़ॉर्म बैकअप बदलने के लिए बैकअप प्रबंधन की अनुमति आवश्यक है। दिखाता है।

सेटिंगअर्थडिफ़ॉल्ट
शेड्यूल के अनुसार रोज़ बैकअप लेंदैनिक योजना चालू करता है। इसे चालू करने से बैकअप तुरंत शुरू नहीं होताबंद
स्थानीय समयदैनिक बैकअप का स्थानीय समय, मिनट तक02:00
समय क्षेत्र (IANA)उस स्थानीय समय का IANA समय क्षेत्र, जैसे Europe/Moscow या UTC। +03:00 जैसे offsets स्वीकार नहीं किए जातेUTC
दिन, सप्ताह, महीनेकितने दिनों, हफ़्तों और महीनों के पुनर्स्थापना बिंदु रखने हैं। प्रतिधारण देखें। सीमाएँ: 0–366, 0–260, 0–1207, 4, 6

योजना सहेजें चुनें। अगर इस बीच किसी और ने योजना बदली हो, तो कंसोल वर्तमान योजना लोड करता है, और आप उसे देखकर फिर से सहेजते हैं।

शेड्यूल इन नियमों का पालन करता है:

  • घड़ी बदलने के दिन मौजूद न रहने वाला स्थानीय समय बदलाव के क्षण पर चलता है। दो बार आने वाला स्थानीय समय एक बार, पहली बार चलता है।
  • डाउनटाइम के बाद, एजेंट एक catch-up बैकअप बनाता है, हर छूटे दिन के लिए एक नहीं। शेड्यूल बदलने से पहले के समय के लिए catch-up शुरू नहीं होता।
  • किसी इंस्टॉलेशन की डिफ़ॉल्ट अपडेट विंडो 03:00 UTC है। अपडेट एजेंट को रोक देता है, और चल रहा बैकअप बाधित होकर बाद में दोहराया जाता है। ऐसा बैकअप समय चुनें जो अपडेट विंडो में न पड़े। अपडेट देखें।

प्रतिधारण ​

प्रतिधारण पिछले N स्थानीय दिनों में से हर एक का, पिछले N ISO हफ़्तों में से हर एक का और पिछले N महीनों में से हर एक का सबसे नया पुनर्स्थापना बिंदु रखता है, जिन्हें योजना के समय क्षेत्र में गिना जाता है। तीनों समूह मिला दिए जाते हैं, इसलिए 7, 4 और 6 अधिकतम 17 बिंदु रखते हैं, और आमतौर पर कम।

प्रतिधारण हमेशा रखता है:

  • पिन किए गए बिंदु।
  • सबसे नया बिंदु, इसलिए कम से कम एक बिंदु हमेशा बचा रहता है।

प्रतिधारण ऐसे बिंदु को कभी नहीं हटाता जो सत्यापन में विफल हुआ, और उसी vault में किसी दूसरे इंस्टॉलेशन के बिंदुओं को कभी नहीं छूता।

हर बैकअप के बाद, एजेंट प्रतिधारण को एक अलग जॉब के रूप में कतार में लगाता है। आप प्रतिधारण लागू करें भी चुन सकते हैं। कंसोल पहले दिखाता है कि कौन-से बिंदु रहेंगे और कौन-से हटेंगे। हटाना पूर्ववत नहीं किया जा सकता। फिर एजेंट बिंदु को और उसके बाद वे फ़ाइलें हटाता है जिनकी किसी बचे बिंदु को ज़रूरत नहीं। अगर vault में कोई क्षतिग्रस्त बिंदु हो (ऐसी बिंदु डायरेक्टरी जिसमें COMMITTED न हो या अमान्य manifest हो), तो हटाना invalid_manifest के साथ रुक जाता है। vault को वैसा ही छोड़ दें, कारण खोजें, फिर क्षतिग्रस्त डायरेक्टरी हाथ से हटाएँ।

बैकअप प्रतिधारण आपकी रिपॉज़िटरी में builds के प्रतिधारण को नहीं बदलता। स्टोरेज देखें।

पुनर्स्थापना बिंदु पिन करें ​

पिन किया गया बिंदु प्रतिधारण नियमों से आगे भी रखा जाता है। उदाहरण के लिए, किसी बड़े माइग्रेशन से पहले का बिंदु पिन करें।

  • कंसोल: पुनर्स्थापना बिंदु में बिंदु की पंक्ति में पिन करें चुनें। अनपिन करें उसे छोड़ देता है।
  • CLI: arkvoryctl backup pin POINT_ID, और arkvoryctl backup pin POINT_ID --off.
  • API: setBackupPointPin.

सत्यापन ​

सत्यापन दो प्रकार के होते हैं:

प्रकारयह क्या जाँचता हैयह कब चलता है
त्वरित (कंसोल संरचना जाँची गई कहता है)बिंदु की हर फ़ाइल को उसके manifest के digest से मिलाता है, और यह कि हर संग्रहीत फ़ाइल सही आकार के साथ मौजूद हैहर बैकअप के बाद अपने-आप
पूर्ण (पूरी तरह सत्यापित)त्वरित जाँचें, और यह हर संग्रहीत फ़ाइल पढ़कर उसका SHA-256 जाँचता हैसबसे नए बिंदु के लिए हर 7 दिन में एक बार अपने-आप। अनुरोध पर पूरी तरह सत्यापित करें, arkvoryctl backup verify POINT_ID या arkvory-backup verify --deep के साथ

पूर्ण सत्यापन पूरा बिंदु पढ़ता है, इसलिए बड़े vault के साथ इसे समय और डिस्क throughput चाहिए। अगर कोई बिंदु विफल हो, तो कंसोल त्रुटि कोड के साथ सत्यापन विफल दिखाता है, और चेतावनी verify_failed सक्रिय हो जाती है। कारण जानने तक vault न बदलें।

जिस बिंदु की अभी जाँच नहीं हुई वह सत्यापित नहीं दिखाता है। सबसे नए बिंदु का पूर्ण सत्यापन यह सबसे अच्छी नियमित जाँच भी है कि vault पढ़ने योग्य है।

अभी बैकअप चलाएँ ​

इनमें से कोई भी इस्तेमाल करें:

  • कंसोल: बैकअप में अभी बैकअप बनाएँ।
  • CLI: arkvoryctl backup run.
  • API: requestBackupRun कतार में लगी जॉब के साथ 202 उत्तर देता है।

एजेंट हर 15 सेकंड में अपनी कतार जाँचता है (ARKVORY_BACKUP_POLL_SECONDS), इसलिए जॉब थोड़ी ही देर में शुरू होती है। जॉब एक समय पर एक चलती है, और कंसोल बंद करने से वे नहीं रुकतीं। रीस्टार्ट या टकराव के कारण रुकी जॉब दोहराई जाती है, अधिकतम 5 प्रयास तक। एजेंट सेटिंग्स के लिए एनवायरनमेंट वेरिएबल देखें, जिनमें कॉपी दर सीमा ARKVORY_BACKUP_BYTES_PER_SECOND भी है।

बैकअप इन चरणों से गुज़रता है, जिन्हें कंसोल चरण में दिखाता है: तैयारी, कैटलॉग स्नैपशॉट, फ़ाइलें कॉपी हो रही हैं, पूरा किया जा रहा है और हो गया। त्वरित जाँच संरचना जाँच दिखाती है, और पूर्ण जाँच पूर्ण जाँच।

बैकअप के दौरान database migrations या offline tools gc और scrub न चलाएँ। वे उसकी प्रतीक्षा करते हैं या busy के साथ इनकार कर देते हैं।

स्थिति देखें ​

कंसोल में ​

बैकअप व्यवस्थापकों और recovery key को दिखता है। Service keys और personal access tokens इसे कभी नहीं देखते। पृष्ठ दिखाता है:

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

जॉब की इनमें से एक स्थिति होती है: कतार में, चल रहा है, पूरा हो रहा है, पूरा हुआ, विफल या बाधित। जॉब चलने के दौरान पृष्ठ रीफ़्रेश होता है। किसी भी समय स्थिति रीफ़्रेश करें इस्तेमाल करें।

चेतावनियाँ ​

कोडस्तरक्या करें
vault_not_configuredचेतावनीvault कनेक्ट करें। vault कनेक्ट करें देखें
agent_offlineगंभीर2 मिनट से कोई संकेत नहीं। एजेंट सेवा शुरू करें और उसका log पढ़ें
schedule_disabledचेतावनीदैनिक बैकअप चाहिए तो योजना चालू करें
no_backup_yetचेतावनीपहला बैकअप बनाएँ
backup_staleगंभीरयोजना चालू रहते हुए सबसे नया बिंदु 26 घंटे से पुराना है। जॉब के त्रुटि कोड और एजेंट log पढ़ें
last_run_failedचेतावनीअंतिम बैकअप विफल हुआ। त्रुटि कोड जॉब सूची में है
vault_unavailableगंभीरवॉल्यूम माउंट नहीं है, vault.json नहीं है, vault में लिखा नहीं जा सकता, या एन्क्रिप्टेड vault की कोई वैध कुंजी नहीं है (एजेंट लॉग में vault_key_missing या vault_key_invalid दिखता है)
vault_low_spaceचेतावनीवॉल्यूम का 10% से कम खाली है, या अंतिम बैकअप के नए डेटा से कम दोगुना खाली है। जगह खाली करें या कम बिंदु रखें
verify_failedगंभीरकोई बिंदु सत्यापन में विफल हुआ। vault न बदलें; जाँच करें
never_deep_verifiedचेतावनी8 दिन से अधिक समय से कोई पूर्ण सत्यापन नहीं। जाँचें कि एजेंट चल रहा है, या पूर्ण सत्यापन शुरू करें

CLI और API के साथ ​

bash
arkvoryctl backup status
arkvoryctl backup jobs
arkvoryctl backup points
arkvoryctl backup status --json || echo "backup problem"

backup status गंभीर चेतावनी सक्रिय रहने पर एग्ज़िट कोड 9 के साथ समाप्त होता है, इसलिए आप इसे किसी मॉनिटर में इस्तेमाल कर सकते हैं। इन कमांड के लिए owner file key या खाता व्यवस्थापक सत्र चाहिए। कमांड-लाइन क्लाइंट और TypeScript SDK देखें। HTTP ऑपरेशन बैकअप API संदर्भ में हैं।

Prometheus के लिए, API arkvory_backup_last_success_timestamp_seconds (सबसे नए बिंदु का T), arkvory_backup_agent_last_seen_timestamp_seconds और code लेबल वाला arkvory_backup_warnings उपलब्ध कराता है। मॉनिटरिंग देखें।

पुनर्स्थापना ​

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

शुरू करने से पहले ​

  • प्रोग्राम। पुनर्स्थापना कमांड इंस्टॉल किए गए रिलीज़ का प्रोग्राम arkvory-backup है। इसे इंस्टॉलेशन के Node.js से शुरू करें:

    • Linux पैकेज: /opt/proanima-arkvory/runtime/node /opt/proanima-arkvory/releases/VERSION/apps/backup/dist/main.js COMMAND
    • Windows ग्राफ़िकल इंस्टॉलर: & "$root\runtime\node.exe" "$root\releases\VERSION\apps\backup\dist\main.js" COMMAND

    VERSION installation.json से इंस्टॉल किया गया संस्करण है। इस पृष्ठ के बाकी हिस्से में, arkvory-backup इस पूरी कमांड लाइन को दर्शाता है। Docker Compose उपयोगकर्ता वही प्रोग्राम रिलीज़ इमेज के कंटेनर से चलाते हैं। स्क्रिप्ट इंस्टॉलेशन के लिए, runtime/ के अंतर्गत Node.js फ़ोल्डर इस्तेमाल करें।

  • रिलीज़। वह रिलीज़ इस्तेमाल करें जिसने बिंदु बनाया या उससे नई। किसी नई रिलीज़ का बिंदु schema_mismatch के साथ अस्वीकार कर दिया जाता है।

  • खाता। कमांड ऐसे खाते के रूप में चलाएँ जो vault पढ़ सके। Linux पर vault arkvory का है और उसका मोड 0700 है, इसलिए sudo -u arkvory इस्तेमाल करें। Windows पर elevated PowerShell इस्तेमाल करें। नई स्टोरेज डायरेक्टरी का स्वामित्व उस खाते के पास होना चाहिए जो API चलाएगा।

  • कुंजी। एन्क्रिप्टेड vault को उसकी कुंजी चाहिए। नीचे की हर कमांड को रिकवरी किट या कुंजी फ़ाइल --key-file FILE के रूप में दें, या ARKVORY_BACKUP_VAULT_KEY_FILE सेट करें। कुंजी हमेशा फ़ाइल होती है, कभी आर्गुमेंट नहीं।

  • लक्ष्य। एक खाली डेटाबेस बनाएँ, जैसे CREATE DATABASE arkvory_restore OWNER arkvory;. ऐसी स्टोरेज डायरेक्टरी चुनें जो मौजूद न हो या खाली हो, vault से अलग वॉल्यूम पर और स्रोत स्टोरेज के अंदर न हो।

  • डेटाबेस URL। इसे एनवायरनमेंट में दें, आर्गुमेंट के रूप में नहीं, क्योंकि आर्गुमेंट process list में दिखते हैं।

चरण-दर-चरण पुनर्स्थापना ​

  1. पुनर्स्थापना बिंदु सूचीबद्ध करें और एक चुनें। बिंदु ID कॉपी करें।

    bash
    arkvoryctl backup points
    arkvory-backup list --vault /mnt/backup/arkvory
  2. बिंदु का पूरा सत्यापन करें।

    bash
    arkvory-backup verify --vault /mnt/backup/arkvory --point POINT_ID --deep
  3. एनवायरनमेंट में लक्ष्य डेटाबेस सेट करें।

    bash
    export ARKVORY_RESTORE_DATABASE_URL='postgresql://arkvory@db.example/arkvory_restore'
  4. --yes के बिना पुनर्स्थापना चलाएँ। यह dry run है। यह बिंदु, फ़ाइल hashes, schema संस्करण और यह कि लक्ष्य खाली है, जाँचता है, और कुछ नहीं लिखता।

    bash
    arkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restore

    पास हुई जाँच एग्ज़िट कोड 0 और log पंक्ति backup.restore.planned के साथ समाप्त होती है।

  5. वही कमांड --yes के साथ चलाएँ। report फ़ाइल रखने के लिए --report जोड़ें। फ़ाइल अभी मौजूद नहीं होनी चाहिए।

    bash
    arkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restore --yes --report /root/restore-report.json

    पुनर्स्थापना verify, content, schema, tables, migrate और done चरणों से गुज़रती है। यह हर फ़ाइल कॉपी करती है और उसका SHA-256 जाँचती है, schema बनाती है, सभी तालिकाएँ एक लेन-देन में लोड करती है, normalization लागू करती है और फिर बाकी migrations चलाती है। report में केवल identifiers और counts होते हैं, पथ या credentials कभी नहीं।

  6. पुनर्स्थापित डेटा पर एक अलग API इंस्टेंस शुरू करें: नए डेटाबेस का ARKVORY_DATABASE_URL, नई डायरेक्टरी का ARKVORY_DATA_DIR, उसका अपना ARKVORY_KEYS_FILE और दूसरा पोर्ट। जाँचें कि /health/ready उत्तर देता है, कि आप साइन इन कर सकते हैं, कि कैटलॉग पूरा है और कि एक control file उसी SHA-256 के साथ डाउनलोड होता है।

अगर पुनर्स्थापना विफल हो, तो लक्ष्य डेटाबेस और डायरेक्टरी हटाकर उन्हें फिर से बनाएँ। गैर-खाली लक्ष्य target_not_empty के साथ अस्वीकार कर दिया जाता है, जो मौजूद डेटा की रक्षा करता है।

पुनर्स्थापना क्या बदलती है ​

पुनर्स्थापना बदलावों का एक निश्चित समूह लागू करती है, ताकि नया इंस्टेंस किसी भी चल रहे काम को आगे न बढ़ाए और कोई पुराना credential सक्रिय न करे:

  • अपूर्ण अपलोड रद्द कर दिए जाते हैं और अपना कोटा छोड़ देते हैं। कतार में लगी और चल रही completion jobs विफल के रूप में conflict कोड के साथ समाप्त होती हैं। अधूरे promotions छोड़ दिए जाते हैं।
  • कोई session पुनर्स्थापित नहीं होता। हर कोई फिर से साइन इन करता है।
  • सभी personal access tokens निरस्त कर दिए जाते हैं, और सभी service keys revoked हो जाती हैं। नई keys जारी करें।
  • हर रिपॉज़िटरी में storage retention और भौतिक क्लीनअप बंद कर दिए जाते हैं। उन्हें जान-बूझकर फिर से चालू करें।
  • बैकअप बंद रहते हैं, और कोई vault कॉन्फ़िगर नहीं होता। download links और read gateway सेटिंग्स आगे नहीं ले जाई जातीं।
  • Accounts, groups और grants बने रहते हैं, T तक के password hashes के साथ। T के बाद बदला गया password अपने पुराने रूप में फिर चलता है, इसलिए अपनी नीति से passwords reset करें।
  • recovery key और file keys उस इंस्टॉलेशन की key फ़ाइल से आते हैं जो पुनर्स्थापित डेटा चलाता है।
  • Mirrors अपनी स्थिति रखते हैं, लेकिन mirror सेटिंग्स config/ में होती हैं। उन्हें फिर से कनेक्ट करें। मिरर देखें।
  • एक security audit प्रविष्टि backup.restored बिंदु और counts दर्ज करती है।

किसी दूसरे सर्वर पर ले जाएँ ​

आप किसी इंस्टॉलेशन को दूसरे सर्वर पर ले जाने के लिए बैकअप का उपयोग कर सकते हैं:

  1. नए सर्वर पर उसी रिलीज़ या उससे नई के साथ Arkvory इंस्टॉल करें। इंस्टॉलेशन चुनें देखें।
  2. उसी vault, या उसकी किसी प्रति, को नए सर्वर से कनेक्ट करें। मौजूद vault के लिए --init-vault इस्तेमाल न करें।
  3. सबसे नए बिंदु को नए खाली डेटाबेस और खाली डायरेक्टरी में पुनर्स्थापित करें, जैसा ऊपर बताया गया है, और परिणाम जाँचें।
  4. इंस्टॉलेशन को पुनर्स्थापित डेटा की ओर इंगित करें: config/runtime.json में ARKVORY_DATABASE_URL और ARKVORY_DATA_DIR सेट करें और सेवाएँ रीस्टार्ट करें। कॉन्फ़िगरेशन देखें।
  5. नई keys जारी करें, retention और cleanup policies फिर से सेट करें, mirrors और बैकअप योजना कनेक्ट करें, और clients को नया पता बताएँ।

अंतिम दो चरण मैनुअल हैं और guided switch-over का हिस्सा नहीं हैं। पूरे क्रम का पहले किसी अतिरिक्त सर्वर पर अभ्यास करें। T के बाद पुराने सर्वर पर किए गए बदलाव खो जाते हैं, इसलिए clients के स्थानांतरण से पहले पुराना सर्वर रोक दें।

पुनर्स्थापना का नियमित परीक्षण करें ​

जिस बैकअप को आपने कभी पुनर्स्थापित नहीं किया, वह केवल आशा है। उत्पाद किसी बिंदु के बाइट सत्यापित करता है, लेकिन test restore दर्ज नहीं करता। तारीख और परिणाम स्वयं रखें।

कम से कम इन पर परीक्षण करें:

  • पहले बैकअप के बाद।
  • हर उस अपडेट के बाद जो डेटाबेस schema बदलता है।
  • अपने शेड्यूल पर, उदाहरण के लिए हर तिमाही।

हर परीक्षण किसी अतिरिक्त सर्वर या scratch डेटाबेस पर चरण-दर-चरण पुनर्स्थापना का पालन करता है, और यह साइन-इन, कैटलॉग पर एक नज़र और एक control file के डाउनलोड के साथ समाप्त होता है। बाद में scratch डेटाबेस और डायरेक्टरी हटा दें।

एग्ज़िट कोड और log पंक्तियाँ ​

एग्ज़िट कोड ​

प्रोग्राम arkvory-backup अपने standard output पर हर पंक्ति में एक JSON object लिखता है, और विफलता पर standard error पर एक संकेत पंक्ति।

कोडअर्थ
0सफलता। --yes के बिना restore के लिए, जाँच पास हुई
1रन विफल: डेटाबेस या डिस्क अनुपलब्ध, lease या snapshot खोया, vault या लक्ष्य भरा। पुनर्स्थापना बिंदु क्षतिग्रस्त नहीं होते
2गलत आर्गुमेंट या एनवायरनमेंट वेरिएबल
3एक सुरक्षा जाँच ने इनकार किया: vault.json नहीं, अतिव्यापी डायरेक्टरियाँ, ऐसा लक्ष्य जो खाली नहीं है, असमर्थित schema, ऐसा बिंदु नहीं
4अखंडता विफलता: hash, गायब फ़ाइल या बदला हुआ manifest। समझने तक vault अपरिवर्तित छोड़ दें
5व्यस्त: कोई और बैकअप या maintenance चल रहा है, या हटाना समय पर पूरा नहीं हुआ। बाद में फिर प्रयास करें

log पंक्तियाँ ​

हर पंक्ति में component backup पर सेट होता है। Paths, URLs और secrets कभी नहीं लिखे जाते। सबसे उपयोगी पंक्तियाँ:

कोडअर्थ
backup.phaseबैकअप एक चरण में जाता है: barrier, pins, tables, blobs, manifest, commit, done
backup.capture.completedबैकअप पूरा हुआ। फ़ील्ड: pointId, outcome, blobs, copied, reused, copiedBytes, contentBytes, durationMs
backup.pointlist के आउटपुट में एक पुनर्स्थापना बिंदु
backup.verify.point, backup.verify.problemसत्यापन का परिणाम, और हर समस्या उसके errorCode के साथ
backup.restore.phase, backup.restore.planned, backup.restore.completedपुनर्स्थापना की प्रगति और परिणाम, पंक्तियों की गिनती और ऊपर सूचीबद्ध बदलावों के साथ
backup.failedएक कमांड विफल हुआ। errorCode पढ़ें
backup.agent.started, .standby, .lease_acquired, .lease_lost, .stopped, .failedएजेंट का जीवनकाल
backup.request.started, .done, .failed, .requeuedएजेंट की एक जॉब, kind और errorCode के साथ
backup.schedule.dueयोजना ने बैकअप शुरू किया
backup.retention.appliedप्रतिधारण पूरा हुआ। फ़ील्ड: forgotten, blobs, freedBytes

एजेंट log Linux पर journalctl -u arkvory-backup से पढ़ें, Windows पर इंस्टॉलेशन रूट की logs\ में, और Compose में docker compose logs backup से।

त्रुटि कोड ​

errorCodeएग्ज़िटक्या करें
vault_missing3डायरेक्टरी में vault.json नहीं है। वॉल्यूम माउंट करें, या एक बार vault init चलाएँ
vault_key_missing3vault एन्क्रिप्टेड है और कोई कुंजी नहीं दी गई। --key-file FILE या ARKVORY_BACKUP_VAULT_KEY_FILE इस्तेमाल करें
vault_key_invalid3यह कुंजी इस vault को नहीं खोलती: फ़ाइल, vault, या स्लॉट हटा तो नहीं दिया गया, जाँचें। टाइपो कुंजी के चेकसम से पकड़ा जाता है
unsafe_path3vault, स्टोरेज और पुनर्स्थापना लक्ष्य को अलग डायरेक्टरी वृक्षों में रखें
target_not_empty3पुनर्स्थापना केवल खाली डेटाबेस और खाली डायरेक्टरी में लिखती है
schema_mismatch3बिंदु रिलीज़ से नया है, या समर्थित पुनर्स्थापना से पुराना। दूसरी रिलीज़ इस्तेमाल करें
upgrade_required3इंस्टॉलेशन के हर API और maintenance प्रोसेस को अपडेट करें
point_not_found, storage_mismatch3गलत point ID, या ARKVORY_DATA_DIR इस इंस्टॉलेशन की इनिशियलाइज़ की गई storage डायरेक्टरी नहीं है
integrity_mismatch, invalid_manifest, blob_missing4vault अपरिवर्तित रखें। verify --deep चलाएँ और जाँच करें
busy, barrier_timeout5कोई और ऑपरेशन चल रहा है। बाद में फिर प्रयास करें
vault_full, storage_full1जगह खाली करें। पहले के बिंदु बरकरार हैं
attempts_exhausted3इस अनुरोध ने अपने 5 प्रयास इस्तेमाल कर लिए। नया बैकअप शुरू करें

सीमाएँ ​

  • हर इंस्टॉलेशन के लिए एक योजना और एक vault। vault किसी डिस्क या माउंट किए गए शेयर पर एक डायरेक्टरी है, जिसमें S3 नहीं और offsite या immutable profile नहीं।
  • एन्क्रिप्शन सामग्री और कैटलॉग छिपाता है, फ़ाइलों के नाम, आकार और पॉइंट की संख्या नहीं। खोई हुई कुंजियों का मतलब खोए हुए बैकअप। कुंजी स्लॉट हटाने से पुराने पॉइंट दोबारा एन्क्रिप्ट नहीं होते।
  • आप बैकअप जॉब को रोक या रद्द नहीं सकते, और कंसोल में कोई restore wizard या restore test status नहीं है।
  • पुनर्स्थापना को खाली लक्ष्य चाहिए, और पुनर्स्थापित डेटा पर switch-over एक मैनुअल चरण है।
  • बैकअप एजेंट high availability सिस्टम नहीं है। दूसरा एजेंट केवल spare के रूप में प्रतीक्षा करता है।

Arkvory · ProAnimaStudio