माझ्या बॅकअपमुळे सर्व फोटो हरवले
मी एका ऑफलाइन मूड ट्रॅकरसाठी बॅकअप बटण तयार केले होते.
ते डेटा JSON फाईलमध्ये एक्सपोर्ट करायचे. वापरकर्ते ती सेव्ह करू शकत होते आणि नवीन फोनमध्ये हलवू शकत होते. ते अगदी परिपूर्ण वाटत होते.
मग मी ॲपचा पॅकेज ID बदलला. मी एका नवीन डिव्हाइसवर फ्रेश इन्स्टॉल करण्याचा प्रयत्न केला आणि बॅकअप रिस्टोर केला.
मजकूर (text entries) परत आले. पण प्रत्येक फोटो गायब झाला होता.
मला माझी चूक समजली. तो बॅकअप खरा बॅकअप नव्हता. तो फक्त अशा फाईल्सच्या पॉइंटर्सची (pointers) यादी होती ज्या आता अस्तित्वात नव्हत्या.
ॲप फोटोंना डिस्कवर स्टोअर करत होते. डेटाबेसमध्ये फक्त फाईल पाथ (file path) साठवला जात होता.
तो पाथ असा दिसत होता:
file:///data/user/0/com.example.app/files/entry_media/image.jpg
जेव्हा मी JSON एक्सपोर्ट केला, तेव्हा मी फक्त तो पाथ सेव्ह केला. त्याच डिव्हाइसवर इम्पोर्ट व्यवस्थित काम करते कारण फाईल्स अजूनही तिथेच असतात.
नवीन डिव्हाइसवर, ते पाथ्स कशाकडेच निर्देश करत नाहीत. वापरकर्त्याला तुटलेले थंबनेल्स दिसतात आणि त्यांना वाटते की ॲपने त्यांच्या आठवणी पुसून टाकल्या आहेत.
जर तुमचा एक्सपोर्ट फक्त फाईल पाथ्स घेऊन जात असेल, तर तुमच्याकडे पोर्टेबल बॅकअप नाही. तुमच्याकडे असा बॅकअप आहे जो फक्त त्याच मशीनवर काम करतो ज्याला बॅकअपची गरजच नाही.
खरा बॅकअपामध्ये प्रत्यक्ष डेटा असणे आवश्यक आहे.
मी ही प्रक्रिया बदलली. आता, एक्सपोर्ट प्रत्येक फोटो वाचतो आणि त्याला JSON च्या आत Base64 स्ट्रिंगमध्ये रूपांतरित करतो.
या पद्धतीचे काही तोटे (trade-offs) आहेत: • फाईलचा आकार सुमारे ३३ टक्क्यांनी वाढतो. • मोठ्या लायब्ररीसाठी एक्सपोर्ट दरम्यान अधिक मेमरी लागते.
मी फाईलच्या आकारापेक्षा अचूकतेला महत्त्व दिले. मोठा बॅकअप उपयुक्त असतो. सर्व प्रतिमा गमावणारा छोटा बॅकअप निरर्थक असतो.
वेग आणि सुरक्षितता सुनिश्चित करण्यासाठी मी इम्पोर्ट हाताळण्याची पद्धत देखील बदलली:
- प्रथम सर्व फोटो नवीन डिव्हाइसच्या डिस्कवर लिहा. वेगवान ठेवण्यासाठी हे डेटाबेस ट्रान्झॅक्शनच्या (database transaction) बाहेर केले जाते.
- नवीन स्थानिक पाथ्सना एन्ट्रीजशी जोडण्यासाठी एक सिंगल डेटाबेस ट्रान्झॅक्शन चालवा.
मी सिस्टम अशी बनवली आहे की ती 'fail soft' होईल. जर एखादा फोटो गहाळ असेल किंवा वाचता येत नसेल, तर ॲप तो सोडून पुढच्या फोटोवर जाते. एका खराब इमेजमुळे संपूर्ण रिस्टोर प्रक्रिया क्रॅश होऊ नये.
शिकलेले धडे:
- योग्य पद्धतीने चाचणी करा. एका डिव्हाइसवर एक्सपोर्ट करा, ते पुसून टाका (wipe), आणि नवीन इन्स्टॉलेशनवर इम्पोर्ट करा. त्याच डिव्हाइसवर पुन्हा इम्पोर्ट केल्यास बग्स (bugs) लक्षात येत नाहीत.
- बाइट्स (bytes) सोबत न्या. जर डेटा डिव्हाइस बदलल्यानंतरही टिकवून ठेवायचा असेल, तर फक्त पत्ता (address) नाही, तर प्रत्यक्ष डेटा हलवा.
Source: https://dev.to/diven_rastdus_c5af27d68f3/my-offline-apps-backup-lost-every-photo-on-a-new-phone-3d36
