ਮੇਰੇ ਬੈਕਅੱਪ ਨੇ ਹਰ ਇੱਕ ਫੋਟੋ ਗੁਆ ਦਿੱਤੀ
ਮੈਂ ਇੱਕ ਆਫਲਾਈਨ ਮੂਡ ਟ੍ਰੈਕਰ ਲਈ ਇੱਕ ਬੈਕਅੱਪ ਬਟਨ ਬਣਾਇਆ।
ਇਹ ਡੇਟਾ ਨੂੰ ਇੱਕ JSON ਫਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰਦਾ ਸੀ। ਯੂਜ਼ਰਸ ਇਸਨੂੰ ਸੇਵ ਕਰਕੇ ਨਵੇਂ ਫੋਨ ਵਿੱਚ ਟ੍ਰਾਂਸਫਰ ਕਰ ਸਕਦੇ ਸਨ। ਇਹ ਬਿਲਕੁਲ ਸਹੀ ਲੱਗ ਰਿਹਾ ਸੀ।
ਫਿਰ ਮੈਂ ਐਪ ਦਾ ਪੈਕੇਜ ID ਬਦਲ ਦਿੱਤਾ। ਮੈਂ ਇੱਕ ਨਵੇਂ ਡਿਵਾਈਸ 'ਤੇ ਫਰੈਸ਼ ਇੰਸਟਾਲ ਕਰਕੇ ਬੈਕਅੱਪ ਰਿਸਟੋਰ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।
ਟੈਕਸਟ ਐਂਟਰੀਆਂ ਵਾਪਸ ਆ ਗਈਆਂ। ਪਰ ਹਰ ਇੱਕ ਫੋਟੋ ਗਾਇਬ ਸੀ।
ਮੈਨੂੰ ਆਪਣੀ ਗਲਤੀ ਦਾ ਅਹਿਸਾਸ ਹੋਇਆ। ਉਹ ਬੈਕਅੱਪ ਅਸਲ ਵਿੱਚ ਬੈਕਅੱਪ ਨਹੀਂ ਸੀ। ਇਹ ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਫਾਈਲਾਂ ਦੇ ਪੁਆਇੰਟਰਾਂ (pointers) ਦੀ ਇੱਕ ਸੂਚੀ ਸੀ ਜੋ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ ਸਨ।
ਐਪ ਫੋਟੋਆਂ ਨੂੰ ਡਿਸਕ 'ਤੇ ਸਟੋਰ ਕਰਦੀ ਸੀ। ਡੇਟਾਬੇਸ ਵਿੱਚ ਫਾਈਲ ਦਾ ਪਾਥ (path) ਸੁਰੱਖਿਅਤ ਸੀ।
ਪਾਥ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਸੀ:
file:///data/user/0/com.example.app/files/entry_media/image.jpg
ਜਦੋਂ ਮੈਂ JSON ਐਕਸਪੋਰਟ ਕੀਤਾ, ਤਾਂ ਮੈਂ ਸਿਰਫ਼ ਉਸ ਪਾਥ ਨੂੰ ਹੀ ਸੇਵ ਕੀਤਾ। ਉਸੇ ਡਿਵਾਈਸ 'ਤੇ ਇੰਪੋਰਟ ਕੰਮ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਫਾਈਲਾਂ ਉੱਥੇ ਹੀ ਹੁੰਦੀਆਂ ਹਨ।
ਨਵੇਂ ਡਿਵਾਈਸ 'ਤੇ, ਉਹ ਪਾਥ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਵੱਲ ਇਸ਼ਾਰਾ ਨਹੀਂ ਕਰਦੇ। ਯੂਜ਼ਰ ਨੂੰ ਟੁੱਟੇ ਹੋਏ ਥੰਬਨੇਲ (thumbnails) ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਐਪ ਨੇ ਉਹਨਾਂ ਦੀਆਂ ਯਾਦਾਂ ਮਿਟਾ ਦਿੱਤੀਆਂ ਹਨ।
ਜੇਕਰ ਤੁਹਾਡਾ ਐਕਸਪੋਰਟ ਸਿਰਫ਼ ਫਾਈਲ ਪਾਥ ਹੀ ਲੈ ਕੇ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਪੋਰਟੇਬਲ ਬੈਕਅੱਪ ਨਹੀਂ ਹੈ। ਤੁਹਾਡੇ ਕੋਲ ਅਜਿਹਾ ਬੈਕਅੱਪ ਹੈ ਜੋ ਸਿਰਫ਼ ਉਸੇ ਮਸ਼ੀਨ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਸ ਨੂੰ ਬੈਕਅੱਪ ਦੀ ਲੋੜ ਹੀ ਨਹੀਂ ਹੈ।
ਇੱਕ ਅਸਲੀ ਬੈਕਅੱਪ ਵਿੱਚ ਅਸਲ ਡੇਟਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
ਮੈਂ ਪ੍ਰਕਿਰਿਆ ਬਦਲ ਦਿੱਤੀ। ਹੁਣ, ਐਕਸਪੋਰਟ ਹਰ ਫੋਟੋ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ ਉਸਨੂੰ JSON ਦੇ ਅੰਦਰ ਇੱਕ Base64 ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।
ਇਸ ਤਰੀਕੇ ਦੇ ਕੁਝ ਨੁਕਸਾਨ ਵੀ ਹਨ: • ਫਾਈਲ ਦਾ ਸਾਈਜ਼ ਲਗਭਗ 33 ਫੀਸਦੀ ਵਧ ਜਾਂਦਾ ਹੈ। • ਵੱਡੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਐਕਸਪੋਰਟ ਦੌਰਾਨ ਵਧੇਰੇ ਮੈਮੋਰੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਮੈਂ ਫਾਈਲ ਸਾਈਜ਼ ਦੀ ਬਜਾਏ ਸਹੀ ਹੋਣ ਨੂੰ ਚੁਣਿਆ। ਇੱਕ ਵੱਡਾ ਬੈਕਅੱਪ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ। ਪਰ ਇੱਕ ਅਜਿਹਾ ਛੋਟਾ ਬੈਕਅੱਪ ਜੋ ਸਾਰੀਆਂ ਤਸਵੀਰਾਂ ਗੁਆ ਦਿੰਦਾ ਹੈ, ਉਹ ਬੇਕਾਰ ਹੈ।
ਮੈਂ ਸਪੀਡ ਅਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇੰਪੋਰਟ ਨੂੰ ਸੰਭਾਲਣ ਦੇ ਤਰੀਕੇ ਨੂੰ ਵੀ ਬਦਲ ਦਿੱਤਾ:
- ਪਹਿਲਾਂ ਸਾਰੀਆਂ ਫੋਟੋਆਂ ਨੂੰ ਨਵੇਂ ਡਿਵਾਈਸ ਦੀ ਡਿਸਕ 'ਤੇ ਲਿਖੋ। ਇਸਨੂੰ ਤੇਜ਼ ਰੱਖਣ ਲਈ ਇਹ ਡੇਟਾਬੇਸ ਟ੍ਰਾਂਜੈਕਸ਼ਨ (database transaction) ਤੋਂ ਬਾਹਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
- ਨਵੇਂ ਲੋਕਲ ਪਾਥਾਂ ਨੂੰ ਐਂਟਰੀਆਂ ਨਾਲ ਜੋੜਨ ਲਈ ਇੱਕ ਸਿੰਗਲ ਡੇਟਾਬੇਸ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਚਲਾਓ।
ਮੈਂ ਸਿਸਟਮ ਨੂੰ 'ਫੇਲ ਸੌਫਟ' (fail soft) ਬਣਾਇਆ। ਜੇਕਰ ਕੋਈ ਇੱਕ ਫੋਟੋ ਗਾਇਬ ਹੈ ਜਾਂ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ, ਤਾਂ ਐਪ ਉਸਨੂੰ ਛੱਡ ਕੇ ਅਗਲੀ ਫੋਟੋ 'ਤੇ ਚਲੀ ਜਾਂਦੀ ਹੈ। ਇੱਕ ਟੁੱਟੀ ਹੋਈ ਤਸਵੀਰ ਕਾਰਨ ਪੂਰਾ ਰਿਸਟੋਰ ਪ੍ਰਕਿਰਿਆ ਫੇਲ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ।
ਸਿੱਖੇ ਗਏ ਸਬਕ:
- ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਟੈਸਟ ਕਰੋ। ਇੱਕ ਡਿਵਾਈਸ 'ਤੇ ਐਕਸਪੋਰਟ ਕਰੋ, ਉਸਨੂੰ ਵਾਈਪ (wipe) ਕਰੋ, ਅਤੇ ਫਿਰ ਇੱਕ ਸਾਫ਼ ਇੰਸਟਾਲੇਸ਼ਨ 'ਤੇ ਇੰਪੋਰਟ ਕਰੋ। ਉਸੇ ਡਿਵਾਈਸ 'ਤੇ ਦੁਬਾਰਾ ਇੰਪੋਰਟ ਕਰਨ ਨਾਲ ਬੱਗ (bugs) ਲੁਕ ਜਾਂਦੇ ਹਨ।
- ਬਾਈਟਸ (bytes) ਨੂੰ ਨਾਲ ਲੈ ਕੇ ਚੱਲੋ। ਜੇਕਰ ਡੇਟਾ ਨੂੰ ਡਿਵਾਈਸ ਬਦਲਣ ਵੇਲੇ ਬਚਾਉਣਾ ਹੈ, ਤਾਂ ਸਿਰਫ਼ ਪਤਾ (address) ਨਹੀਂ, ਸਗੋਂ ਅਸਲ ਡੇਟਾ ਨੂੰ ਮੂਵ ਕਰੋ।
ਸਰੋਤ: https://dev.to/diven_rastdus_c5af27d68f3/my-offline-apps-backup-lost-every-photo-on-a-new-phone-3d36
