बैकअप
बैकअप एजेंट आपके इंस्टॉलेशन के डेटाबेस और संग्रहीत फ़ाइलों को एक 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 तथा स्टोरेज के बाहर होनी चाहिए:
arkvory-backup vault init /mnt/backup/arkvory \
--kit-file /root/arkvory-recovery-kit.txt \
--agent-key-file /root/arkvory-agent.key- कमांड दो कुंजियों वाला vault बनाती है: एजेंट की कुंजी (
arkvory-agent.key) और रिकवरी किट में रिकवरी कुंजी। सफलता बताने से पहले वह हर कुंजी से vault खोलकर देखती है। - रिकवरी किट को अभी इस सर्वर से बाहर ले जाएँ: पासवर्ड मैनेजर या तिजोरी में। किट या एजेंट की कुंजी के बिना कोई भी बैकअप नहीं पढ़ सकता, और कोई आपके लिए उन्हें रिस्टोर नहीं कर सकता। जिसके पास किट और vault की प्रति है, वह उसमें के सभी बैकअप पढ़ सकता है।
- अगले भाग में दिखाए अनुसार एजेंट की कुंजी से vault जोड़ें, और कुंजी फ़ाइल की अपनी प्रति मिटा दें। इंस्टॉलेशन अपनी प्रति
config/backup/vault.keyमें रखता है, जिसे केवल सेवा खाता पढ़ सकता है।
किट की रिकवरी कुंजी केवल इसी vault को खोलती है। यह इंस्टॉलेशन की रिकवरी कुंजी (config/bootstrap-token.txt) नहीं है।
अभी जाँचें कि किट vault खोलता है, और कुंजियाँ बदलने के बाद हर बार फिर जाँचें:
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 के रूप में चलाएँ। यह कुछ भी बदलने से पहले डायरेक्टरी की जाँच करता है।
sudo arkvory configure --root /opt/proanima-arkvory --backup-vault /mnt/backup/arkvory --vault-key-file /root/arkvory-agent.key$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.keyWindows पर स्क्रिप्ट इंस्टॉलेशन के लिए, manage.mjs को Windows में बताए अनुसार शुरू करें।
- कमांड पथ की जाँच करता है: absolute, मौजूद लिखने योग्य डायरेक्टरी, इंस्टॉलेशन और स्टोरेज के बाहर, और सेवा के लिए दिखने योग्य।
- एन्क्रिप्टेड vault, जो डिफ़ॉल्ट है, पहले से मौजूद है: आपने उसे
arkvory-backup vault initसे बनाया, और--vault-key-fileसेवा को उसकी कुंजी देती है (AK1-…कुंजी, कभी रिकवरी कुंजी नहीं)।--init-vault --vault-no-encryptionके साथ वह इसके बजाय ख़ाली डायरेक्टरी में बिना एन्क्रिप्शन का vault बनाती है। वह किसी डायरेक्टरी को दो बार इनिशियलाइज़ नहीं करती।vault.jsonऔर--init-vaultदोनों के बिना वह मना कर देती है, ताकि माउंट न हुए NAS को ख़ाली vault न समझ लिया जाए। - वह सेवा खाते को पहुँच देती है, कुंजी को
config/backup/vault.keyमें कॉपी करती है,ARKVORY_BACKUP_VAULTऔरARKVORY_BACKUP_VAULT_KEY_FILEकोconfig/runtime.jsonमें लिखती है और केवल एजेंट को पुनः आरंभ करती है। - यह 150 सेकंड तक प्रतीक्षा करता है जब तक एजेंट इस vault को उपलब्ध न बता दे। यह जाँच
config/bootstrap-token.txtपढ़ती है, इसलिए उस फ़ाइल को हटाएँ नहीं। - अगर कुछ भी विफल हो, तो यह पिछली सेटिंग्स और पिछली पहुँच बहाल करता है, और एजेंट को रीस्टार्ट करता है।
पहले से मौजूद 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 इनकार करके पुरानी सेटिंग्स बहाल कर देता है।
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–120 | 7, 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 के साथ
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
VERSIONinstallation.jsonसे इंस्टॉल किया गया संस्करण है। इस पृष्ठ के बाकी हिस्से में,arkvory-backupइस पूरी कमांड लाइन को दर्शाता है। Docker Compose उपयोगकर्ता वही प्रोग्राम रिलीज़ इमेज के कंटेनर से चलाते हैं। स्क्रिप्ट इंस्टॉलेशन के लिए,runtime/के अंतर्गत Node.js फ़ोल्डर इस्तेमाल करें।- Linux पैकेज:
रिलीज़। वह रिलीज़ इस्तेमाल करें जिसने बिंदु बनाया या उससे नई। किसी नई रिलीज़ का बिंदु
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 में दिखते हैं।
चरण-दर-चरण पुनर्स्थापना
पुनर्स्थापना बिंदु सूचीबद्ध करें और एक चुनें। बिंदु ID कॉपी करें।
basharkvoryctl backup points arkvory-backup list --vault /mnt/backup/arkvoryबिंदु का पूरा सत्यापन करें।
basharkvory-backup verify --vault /mnt/backup/arkvory --point POINT_ID --deepएनवायरनमेंट में लक्ष्य डेटाबेस सेट करें।
bashexport ARKVORY_RESTORE_DATABASE_URL='postgresql://arkvory@db.example/arkvory_restore'--yesके बिना पुनर्स्थापना चलाएँ। यह dry run है। यह बिंदु, फ़ाइल hashes, schema संस्करण और यह कि लक्ष्य खाली है, जाँचता है, और कुछ नहीं लिखता।basharkvory-backup restore --vault /mnt/backup/arkvory --point POINT_ID --storage /srv/arkvory-restoreपास हुई जाँच एग्ज़िट कोड 0 और log पंक्ति
backup.restore.plannedके साथ समाप्त होती है।वही कमांड
--yesके साथ चलाएँ। report फ़ाइल रखने के लिए--reportजोड़ें। फ़ाइल अभी मौजूद नहीं होनी चाहिए।basharkvory-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 कभी नहीं।पुनर्स्थापित डेटा पर एक अलग 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 दर्ज करती है।
किसी दूसरे सर्वर पर ले जाएँ
आप किसी इंस्टॉलेशन को दूसरे सर्वर पर ले जाने के लिए बैकअप का उपयोग कर सकते हैं:
- नए सर्वर पर उसी रिलीज़ या उससे नई के साथ Arkvory इंस्टॉल करें। इंस्टॉलेशन चुनें देखें।
- उसी vault, या उसकी किसी प्रति, को नए सर्वर से कनेक्ट करें। मौजूद vault के लिए
--init-vaultइस्तेमाल न करें। - सबसे नए बिंदु को नए खाली डेटाबेस और खाली डायरेक्टरी में पुनर्स्थापित करें, जैसा ऊपर बताया गया है, और परिणाम जाँचें।
- इंस्टॉलेशन को पुनर्स्थापित डेटा की ओर इंगित करें:
config/runtime.jsonमेंARKVORY_DATABASE_URLऔरARKVORY_DATA_DIRसेट करें और सेवाएँ रीस्टार्ट करें। कॉन्फ़िगरेशन देखें। - नई 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.point | list के आउटपुट में एक पुनर्स्थापना बिंदु |
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_missing | 3 | डायरेक्टरी में vault.json नहीं है। वॉल्यूम माउंट करें, या एक बार vault init चलाएँ |
vault_key_missing | 3 | vault एन्क्रिप्टेड है और कोई कुंजी नहीं दी गई। --key-file FILE या ARKVORY_BACKUP_VAULT_KEY_FILE इस्तेमाल करें |
vault_key_invalid | 3 | यह कुंजी इस vault को नहीं खोलती: फ़ाइल, vault, या स्लॉट हटा तो नहीं दिया गया, जाँचें। टाइपो कुंजी के चेकसम से पकड़ा जाता है |
unsafe_path | 3 | vault, स्टोरेज और पुनर्स्थापना लक्ष्य को अलग डायरेक्टरी वृक्षों में रखें |
target_not_empty | 3 | पुनर्स्थापना केवल खाली डेटाबेस और खाली डायरेक्टरी में लिखती है |
schema_mismatch | 3 | बिंदु रिलीज़ से नया है, या समर्थित पुनर्स्थापना से पुराना। दूसरी रिलीज़ इस्तेमाल करें |
upgrade_required | 3 | इंस्टॉलेशन के हर API और maintenance प्रोसेस को अपडेट करें |
point_not_found, storage_mismatch | 3 | गलत point ID, या ARKVORY_DATA_DIR इस इंस्टॉलेशन की इनिशियलाइज़ की गई storage डायरेक्टरी नहीं है |
integrity_mismatch, invalid_manifest, blob_missing | 4 | vault अपरिवर्तित रखें। verify --deep चलाएँ और जाँच करें |
busy, barrier_timeout | 5 | कोई और ऑपरेशन चल रहा है। बाद में फिर प्रयास करें |
vault_full, storage_full | 1 | जगह खाली करें। पहले के बिंदु बरकरार हैं |
attempts_exhausted | 3 | इस अनुरोध ने अपने 5 प्रयास इस्तेमाल कर लिए। नया बैकअप शुरू करें |
सीमाएँ
- हर इंस्टॉलेशन के लिए एक योजना और एक vault। vault किसी डिस्क या माउंट किए गए शेयर पर एक डायरेक्टरी है, जिसमें S3 नहीं और offsite या immutable profile नहीं।
- एन्क्रिप्शन सामग्री और कैटलॉग छिपाता है, फ़ाइलों के नाम, आकार और पॉइंट की संख्या नहीं। खोई हुई कुंजियों का मतलब खोए हुए बैकअप। कुंजी स्लॉट हटाने से पुराने पॉइंट दोबारा एन्क्रिप्ट नहीं होते।
- आप बैकअप जॉब को रोक या रद्द नहीं सकते, और कंसोल में कोई restore wizard या restore test status नहीं है।
- पुनर्स्थापना को खाली लक्ष्य चाहिए, और पुनर्स्थापित डेटा पर switch-over एक मैनुअल चरण है।
- बैकअप एजेंट high availability सिस्टम नहीं है। दूसरा एजेंट केवल spare के रूप में प्रतीक्षा करता है।