मुख्य सामग्री पर जाएं

माइग्रेशन गाइड

यह गाइड डुप्लिस्टैटस के संस्करणों के बीच अपग्रेड करने का तरीका समझाता है। माइग्रेशन स्वचालित हैं - जब आप एक नया संस्करण शुरू करते हैं तो डेटाबेस स्कीमा स्वयं को अपडेट कर लेता है।

मैनुअल चरणों की केवल तब आवश्यकता होती है यदि आपने अनुकूलित अधिसूचना टेम्पलेट (संस्करण 0.8.x टेम्पलेट चर को बदल दिया) या अपडेट की आवश्यकता वाले बाहरी एपीआई एकीकरण (संस्करण 0.7.x एपीआई फ़ील्ड नाम बदल दिए, संस्करण 0.9.x प्रमाणीकरण की आवश्यकता है) को कस्टमाइज़ किया है।

अवलोकन​

डुप्लिस्टैटस अपग्रेड करते समय आपका डेटाबेस स्कीमा स्वचालित रूप से माइग्रेट करता है। सिस्टम:

  1. परिवर्तन करने से पहले आपके डेटाबेस का बैकअप बनाता है
  2. डेटाबेस स्कीमा को नवीनतम संस्करण पर अपडेट करता है
  3. सभी मौजूदा डेटा (सर्वर, बैकअप, कॉन्फ़िगरेशन) को सुरक्षित रखता है
  4. सत्यापित करता है कि माइग्रेशन सफलतापूर्वक पूरा हुआ

माइग्रेशन से पहले अपना डेटाबेस बैकअप लें​

नए संस्करण पर अपग्रेड करने से पहले, अपने डेटाबेस का बैकअप बनाना अनुशंसित है। यह सुनिश्चित करता है कि यदि माइग्रेशन प्रक्रिया के दौरान कुछ गलत हो जाता है तो आप अपना डेटा पुनर्स्थापित कर सकते हैं।

यदि आप संस्करण 1.2.1 या उसके बाद का उपयोग कर रहे हैं​

बिल्ट-इन डेटाबेस बैकअप फ़ंक्शन का उपयोग करें:

  1. वेब इंटरफ़ेस में सेटिंग्स → डेटाबेस रखरखाव पर नेविगेट करें
  2. डेटाबेस बैकअप अनुभाग में, एक बैकअप फ़ॉर्मेट चुनें:
    • डेटाबेस फ़ाइल (.db): बाइनरी फ़ॉर्मेट - सबसे तेज़ बैकअप, सभी डेटाबेस संरचना को सटीक रूप से संरक्षित रखता है
    • SQL डंप (.sql): टेक्स्ट फ़ॉर्मेट - मानव द्वारा पठनीय SQL कथन
  3. बैकअप डाउनलोड करें पर क्लिक करें
  4. बैकअप फ़ाइल आपके कंप्यूटर पर टाइमस्टैम्प वाले फ़ाइलनाम के साथ डाउनलोड हो जाएगी

अधिक विवरण के लिए, डेटाबेस रखरखाव दस्तावेज़ीकरण देखें।

यदि आप 1.2.1 से पहले का संस्करण चला रहे हैं​

बैकअप​

आगे बढ़ने से पहले आपको मैन्युअल रूप से डेटाबेस का बैकअप लेना होगा। डेटाबेस फ़ाइल कंटेनर के अंदर /app/data/backups.db पर स्थित है।

लिनक्स उपयोगकर्ताओं के लिए​

यदि आप लिनक्स पर हैं, तो हेल्पर कंटेनर चलाने के बारे में चिंता न करें। आप चल रहे कंटेनर से सीधे डेटाबेस को अपने होस्ट पर निकालने के लिए नेटिव cp कमांड का उपयोग कर सकते हैं।

डॉकर या पॉडमैन का उपयोग करना:​
# Replace 'duplistatus' with your actual container name if different
docker cp duplistatus:/app/data/backups.db ./duplistatus-backup-$(date +%Y%m%d).db

(यदि पॉडमैन का उपयोग कर रहे हैं, तो ऊपर के कमांड में docker को podman से बदल दें।)

विंडोज उपयोगकर्ताओं के लिए​

यदि आप विंडोज पर डॉकर डेस्कटॉप चला रहे हैं, तो कमांड लाइन का उपयोग किए बिना इसे संभालने के दो सरल तरीके हैं:

विकल्प ए: डॉकर डेस्कटॉप का उपयोग करें (सबसे आसान)​
  1. डॉकर डेस्कटॉप डैशबोर्ड खोलें।
  2. कंटेनर टैब पर जाएं और अपने डुप्लिस्टैटस कंटेनर पर क्लिक करें।
  3. फ़ाइल टैब पर क्लिक करें।
  4. /app/data/ पर नेविगेट करें।
  5. backups.db पर राइट-क्लिक करें और डाउनलोड करने के लिए अपने विंडोज फ़ोल्डर में Save as... चुनें।
विकल्प बी: पावरशेल का उपयोग करें​

यदि आप टर्मिनल को प्राथमिकता देते हैं, तो आप अपने डेस्कटॉप पर फ़ाइल कॉपी करने के लिए पावरशेल का उपयोग कर सकते हैं:

docker cp duplistatus:/app/data/backups.db $HOME\Desktop\duplistatus-backup.db
यदि आप बाइंड माउंट का उपयोग करते हैं​

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

  • लिनक्स: cp /path/to/your/folder/backups.db ~/backups.db
  • विंडोज़: सेटअप के दौरान आपके द्वारा निर्दिष्ट फ़ोल्डर से फ़ाइल एक्सप्लोरर में फ़ाइल कॉपी करें।

आपका डेटा पुनर्स्थापित करना​

यदि आपको पिछले बैकअप से अपना डेटाबेस पुनर्स्थापित करने की आवश्यकता है, तो अपने ऑपरेटिंग सिस्टम के आधार पर नीचे दिए गए चरणों का पालन करें।

महत्वपूर्ण

फ़ाइल दुर्घटना से बचने के लिए डेटाबेस को पुनर्स्थापित करने से पहले कंटेनर बंद करें।

लिनक्स उपयोगकर्ताओं के लिए​

पुनर्स्थापना का सबसे आसान तरीका कंटेनर के आंतरिक संग्रहण पथ में बैकअप फ़ाइल को वापस "पुश" करना है।

डॉकर या पॉडमैन का उपयोग करके:​
# stop the container
docker stop duplistatus

# Replace 'duplistatus-backup.db' with your actual backup filename
docker cp ./duplistatus-backup.db duplistatus:/app/data/backups.db

# Restart the container
docker start duplistatus
विंडोज़ उपयोगकर्ताओं के लिए​

यदि आप डॉकर डेस्कटॉप का उपयोग कर रहे हैं, तो आप जीयूआई या पावरशेल के माध्यम से पुनर्स्थापना कर सकते हैं।

विकल्प ए: डॉकर डेस्कटॉप (जीयूआई) का उपयोग करें​
  1. सुनिश्चित करें कि duplistatus कंटेनर चल रहा है (जीयूआई के माध्यम से फ़ाइल अपलोड करने के लिए डॉकर डेस्कटॉप को कंटेनर को सक्रिय होने की आवश्यकता होती है)।
  2. अपने कंटेनर सेटिंग्स में फ़ाइल टैब पर जाएं।
  3. /app/data/ पर नेविगेट करें।
  4. मौजूदा backups.db पर राइट-क्लिक करें और हटाएं चुनें।
  5. आयात बटन पर क्लिक करें (या फ़ोल्डर क्षेत्र में राइट-क्लिक करें) और अपने कंप्यूटर से अपनी बैकअप फ़ाइल चुनें।

यदि इसके नाम में टाइमस्टैम्प है तो आयातित फ़ाइल का नाम ठीक-ठीक backups.db रखें।

कंटेनर को पुनरारंभ करें।

विकल्प बी: पावरशेल का उपयोग करें​
# Copy the file from your Desktop back into the container
docker cp $HOME\Desktop\duplistatus-backup.db duplistatus:/app/data/backups.db

# Restart the container
docker start duplistatus
यदि आप बाइंड माउंट का उपयोग करते हैं​

यदि आप कंटेनर से मैप किए गए स्थानीय फ़ोल्डर का उपयोग कर रहे हैं, तो आपको कोई विशेष कमांड की आवश्यकता नहीं है।

  1. कंटेनर बंद करें।
  2. अपने मैप किए गए फ़ोल्डर में अपनी बैकअप फ़ाइल को मैन्युअल रूप से कॉपी करें (उदाहरण के लिए, /opt/duplistatus या C:\duplistatus_data)।
  3. सुनिश्चित करें कि फ़ाइल का नाम ठीक-ठीक backups.db है।
  4. कंटेनर शुरू करें।
नोट

यदि आप डेटाबेस को मैन्युअल रूप से पुनर्स्थापित करते हैं, तो आपको अनुमति त्रुटियों का सामना करना पड़ सकता है।

कंटेनर लॉग जांचें और आवश्यकता पड़ने पर अनुमतियां समायोजित करें। अधिक जानकारी के लिए नीचे समस्या निवारण खंड देखें।

स्वचालित माइग्रेशन प्रक्रिया​

जब आप एक नया संस्करण शुरू करते हैं, तो माइग्रेशन स्वचालित रूप से चलता है:

  1. बैकअप निर्माण: आपकी डेटा निर्देशिका में टाइमस्टैम्प वाला बैकअप बनाया जाता है
  2. स्कीमा अपडेट: डेटाबेस तालिकाएं और फ़ील्ड आवश्यकता के अनुसार अपडेट की जाती हैं
  3. डेटा माइग्रेशन: सभी मौजूदा डेटा संरक्षित और माइग्रेट किया जाता है
  4. सत्यापन: माइग्रेशन सफलता को लॉग किया जाता है

माइग्रेशन की निगरानी​

माइग्रेशन प्रगति की निगरानी करने के लिए डॉकर लॉग जांचें:

docker logs <container-name>

इन जैसे संदेश ढूंढें:

  • "Found X pending migrations"
  • "Running consolidated migration X.0..."
  • "Migration X.0 completed successfully"
  • "Database backup created: /path/to/backups-copy-YYYY-MM-DDTHH-MM-SS.db"
  • "All migrations completed successfully"

संस्करण-विशिष्ट माइग्रेशन नोट्स​

संस्करण 0.9.x या उच्चतर पर अपग्रेड करना (स्कीमा v4.0)​

चेतावनी

अब प्रमाणीकरण आवश्यक है। अपग्रेड करने के बाद सभी उपयोगकर्ताओं को लॉग इन करना होगा।

क्या स्वचालित रूप से बदल जाता है​

  • डेटाबेस स्कीमा v3.1 से v4.0 में माइग्रेट हो जाता है
  • नई तालिकाएं बनाई गईं: users, sessions, audit_log
  • डिफ़ॉल्ट एडमिन खाता स्वचालित रूप से बनाया गया
  • सभी मौजूदा सत्र अमान्य कर दिए गए

आपको क्या करना होगा​

  1. लॉग इन करें डिफ़ॉल्ट एडमिन क्रेडेंशियल्स के साथ:
    • उपयोगकर्ता नाम: admin
    • पासवर्ड: Duplistatus09
  2. पासवर्ड बदलें जब प्रॉम्प्ट किया जाए (पहले लॉग इन पर आवश्यक)
  3. अन्य उपयोगकर्ताओं के लिए उपयोगकर्ता खाते बनाएं (सेटिंग्स → उपयोगकर्ता)
  4. प्रमाणीकरण शामिल करने के लिए बाहरी एपीआई एकीकरण अपडेट करें (पीछे संगत एपीआई परिवर्तन देखें)
  5. यदि आवश्यक हो तो ऑडिट लॉग प्रतिधारण कॉन्फ़िगर करें (सेटिंग्स → ऑडिट लॉग)

यदि आप लॉक आउट हैं​

एडमिन रिकवरी टूल का उपयोग करें:

docker exec -it duplistatus /app/admin-recovery admin NewPassword123

विवरण के लिए एडमिन रिकवरी गाइड देखें।

संस्करण 0.8.x पर अपग्रेड करना​

क्या स्वचालित रूप से बदल जाता है​

  • डेटाबेस स्कीमा v3.1 पर अपडेट किया गया
  • एन्क्रिप्शन के लिए मास्टर कुंजी उत्पन्न की गई (.duplistatus.key में संग्रहीत)
  • सत्र अमान्य कर दिए गए (नए सीएसआरएफ-सुरक्षित सत्र बनाए गए)
  • नए सिस्टम का उपयोग करके पासवर्ड एन्क्रिप्ट किए गए

आपको क्या करना होगा​

  1. अधिसूचना टेम्पलेट अपडेट करें यदि आपने उन्हें कस्टमाइज़ किया है:
    • {backup_interval_value} और {backup_interval_type} को {backup_interval} से बदलें
    • डिफ़ॉल्ट टेम्पलेट स्वचालित रूप से अपडेट किए जाते हैं

सुरक्षा नोट्स​

  • सुनिश्चित करें कि .duplistatus.key फ़ाइल बैकअप की गई है (0400 अनुमतियां हैं)
  • 24 घंटे के बाद सत्र समाप्त हो जाते हैं

संस्करण 0.7.x पर अपग्रेड करना​

क्या स्वचालित रूप से बदल जाता है​

  • machines तालिका का नाम बदलकर servers कर दिया गया
  • machine_id फ़ील्ड का नाम बदलकर server_id कर दिया गया
  • नई फ़ील्ड जोड़ी गई: alias, notes, created_at, updated_at

आपको क्या करना चाहिए​

  1. बाहरी एपीआई एकीकरण अपडेट करें:
    • /api/summary में totalMachines → totalServers बदलें
    • एपीआई प्रतिक्रिया ऑब्जेक्ट में machine → server बदलें
    • /api/lastbackups/{serverId} में backup_types_count → backup_jobs_count बदलें
    • एंडपॉइंट पथ को /api/machines/... से /api/servers/... तक अपडेट करें
  2. सूचना टेम्पलेट अपडेट करें:
    • {machine_name} को {server_name} से बदलें

पिछड़े-असंगत एपीआई परिवर्तन विस्तृत एपीआई माइग्रेशन चरणों के लिए देखें।

पोस्ट-माइग्रेशन चेकलिस्ट​

अपग्रेड करने के बाद, सत्यापित करें:

  • डैशबोर्ड में सभी सर्वर सही ढंग से दिखाई दे रहे हैं
  • बैकअप इतिहास पूरा और सुलभ है
  • सूचनाएं काम कर रही हैं (NTFY/ईमेल जांचें)
  • बाहरी एपीआई एकीकरण काम कर रहे हैं (यदि लागू हो)
  • सेटिंग्स सुलभ और सही हैं
  • बैकअप निगरानी सही ढंग से काम कर रही है
  • सफलतापूर्वक लॉग इन किया गया (0.9.x+)
  • डिफ़ॉल्ट एडमिन पासवर्ड बदला गया (0.9.x+)
  • अन्य उपयोगकर्ताओं के लिए उपयोगकर्ता खाते बनाए गए (0.9.x+)
  • प्रमाणीकरण के साथ बाहरी एपीआई एकीकरण अपडेट किए गए (0.9.x+)

समस्या निवारण​

माइग्रेशन विफल​

  1. डिस्क स्थान जांचें (बैकअप को स्थान की आवश्यकता होती है)
  2. डेटा निर्देशिका पर लिखने की अनुमति सत्यापित करें
  3. विशिष्ट त्रुटियों के लिए कंटेनर लॉग समीक्षा करें
  4. आवश्यकता पड़ने पर बैकअप से पुनर्स्थापित करें (नीचे रोलबैक देखें)

माइग्रेशन के बाद डेटा गायब​

  1. सत्यापित करें कि बैकअप बनाया गया था (डेटा निर्देशिका जांचें)
  2. बैकअप निर्माण संदेशों के लिए कंटेनर लॉग समीक्षा करें
  3. डेटाबेस फ़ाइल अखंडता जांचें

प्रमाणीकरण समस्याएं (0.9.x+)​

  1. सत्यापित करें कि डिफ़ॉल्ट एडमिन खाता मौजूद है (लॉग जांचें)
  2. डिफ़ॉल्ट क्रेडेंशियल आज़माएं: admin / Duplistatus09
  3. लॉक आउट होने पर एडमिन पुनर्प्राप्ति उपकरण का उपयोग करें
  4. डेटाबेस में users तालिका मौजूद है यह सत्यापित करें

एपीआई त्रुटियां​

  1. एंडपॉइंट अपडेट के लिए पिछड़े-असंगत एपीआई परिवर्तन समीक्षा करें
  2. नई फ़ील्ड नामों के साथ बाहरी एकीकरण अपडेट करें
  3. एपीआई अनुरोधों में प्रमाणीकरण जोड़ें (0.9.x+)
  4. माइग्रेशन के बाद एपीआई एंडपॉइंट जांचें

मास्टर कुंजी समस्याएं (0.8.x+)​

  1. सुनिश्चित करें कि .duplistatus.key फ़ाइल एक्सेस योग्य है
  2. सत्यापित करें कि फ़ाइल अनुमतियाँ 0400 हैं
  3. कुंजी उत्पन्न करने में त्रुटियों के लिए कंटेनर लॉग जांचें

पॉडमैन डीएनएस कॉन्फ़िगरेशन​

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

रोलबैक प्रक्रिया​

यदि आपको पिछले संस्करण पर रोलबैक करने की आवश्यकता है:

  1. कंटेनर रोकें: docker stop <container-name> (या podman stop <container-name>)
  2. अपना बैकअप ढूंढें:
    • यदि आपने वेब इंटरफेस का उपयोग करके बैकअप बनाया है (संस्करण 1.2.1+), तो उस डाउनलोड किए गए बैकअप फ़ाइल का उपयोग करें
    • यदि आपने मैनुअल वॉल्यूम बैकअप बनाया है, तो पहले इसे निकालें
    • स्वचालित माइग्रेशन बैकअप डेटा निर्देशिका में स्थित हैं (टाइमस्टैम्प किए गए .db फ़ाइलें)
  3. डेटाबेस पुनर्स्थापित करें:
    • वेब इंटरफेस बैकअप के लिए (संस्करण 1.2.1+): Settings → Database Maintenance में पुनर्स्थापना फ़ंक्शन का उपयोग करें (देखें डेटाबेस रखरखाव)
    • मैनुअल बैकअप के लिए: अपनी डेटा निर्देशिका/वॉल्यूम में backups.db को बैकअप फ़ाइल के साथ बदल दें
  4. पिछला छवि संस्करण उपयोग करें: पिछली कंटेनर छवि को पुल करें और चलाएं
  5. कंटेनर प्रारंभ करें: पिछले संस्करण के साथ प्रारंभ करें
चेतावनी

रोलबैक करने से डेटा हानि हो सकती है यदि नया स्कीमा पुराने संस्करण के साथ असंगत है। रोलबैक करने से पहले हमेशा सुनिश्चित करें कि आपके पास हाल का बैकअप है।

अपने पुनर्स्थापना / रोलबैक के लिए ट्रबलशूटिंग​

यदि एप्लिकेशन प्रारंभ नहीं होता है या पुनर्स्थापना या रोलबैक के बाद आपका डेटा दिखाई नहीं देता है, तो निम्नलिखित सामान्य समस्याओं की जांच करें:

1. डेटाबेस फ़ाइल अनुमतियाँ (लिनक्स/पॉडमैन)​

यदि आपने फ़ाइल को root उपयोगकर्ता के रूप में पुनर्स्थापित किया है, तो कंटेनर के अंदर एप्लिकेशन के पास इसे पढ़ने या लिखने की अनुमति नहीं हो सकती है।

  • लक्षण: लॉग में "अनुमति अस्वीकृत" या "केवल पढ़ने के लिए डेटाबेस।" दिखाता है
  • ठीक करना: फ़ाइल की अनुमतियाँ कंटेनर के अंदर रीसेट करें ताकि यह सुनिश्चित हो सके कि यह एक्सेस योग्य है।
# Set ownership (usually UID 1000 or the app user)
docker exec -u 0 duplistatus chown 1000:1000 /app/data/backups.db
# Set read/write permissions
docker exec -u 0 duplistatus chmod 664 /app/data/backups.db

2. गलत फ़ाइल नाम​

एप्लिकेशन विशेष रूप से backups.db नामक फ़ाइल की तलाश करता है।

  • लक्षण: एप्लिकेशन प्रारंभ होता है लेकिन "खाली" दिखता है (एक ताज़ा स्थापना की तरह)।
  • ठीक करना: /app/data/ निर्देशिका की जांच करें। यदि आपकी फ़ाइल का नाम duplistatus-backup-2024.db है या इसमें .sqlite एक्सटेंशन है, तो ऐप इसे अनदेखा कर देगा। इसे ठीक से backups.db में नाम बदलने के लिए mv कमांड या डॉकर डेस्कटॉप जीयूआई का उपयोग करें।

3. कंटेनर पुनरारंभ नहीं किया गया​

कुछ सिस्टम पर, कंटेनर चल रहा होने पर docker cp का उपयोग करने से डेटाबेस के लिए एप्लिकेशन का कनेक्शन तुरंत "रीफ्रेश" नहीं हो सकता है।

  • ठीक करना: हमेशा पुनर्स्थापना के बाद एक पूर्ण पुनरारंभ करें:
docker restart duplistatus

4. डेटाबेस संस्करण मेल नहीं खाता​

यदि आप duplistatus के बहुत नए संस्करण से एक बैकअप को ऐप के पुराने संस्करण में पुनर्स्थापित कर रहे हैं, तो डेटाबेस स्कीमा असंगत हो सकती है।

  • समाधान: हमेशा सुनिश्चित करें कि आप उसी (या नए) संस्करण की duplistatus छवि को चला रहे हैं जिसने बैकअप बनाया था। इसके साथ अपना संस्करण जांचें:
docker inspect duplistatus --format '{{.Config.Image}}'

डेटाबेस स्कीमा संस्करण​

एप्लिकेशन संस्करणस्कीमा संस्करणप्रमुख परिवर्तन
0.6.x और इससे पहलेv1.0प्रारंभिक स्कीमा
0.7.xv2.0, v3.0कॉन्फ़िगरेशन जोड़े गए, मशीनों का नाम बदलकर सर्वर कर दिया गया
0.8.xv3.1बैकअप फ़ील्ड में सुधार, एन्क्रिप्शन समर्थन
0.9.x, 1.0.x, 1.1.x, 1.2.x, 1.3.xv4.0उपयोगकर्ता पहुंच नियंत्रण, प्रमाणीकरण, ऑडिट लॉगिंग

सहायता प्राप्त करना​