Backup and restore using ubports-installer
maintainer of the installer here
Kudos on how far you've come already, that's really cool! This is very similar to what we had planned in this issue. The commands there should work pretty much on every device with enough storage. Could you maybe open a PR soon, so we can coordinate the code to not conflict with the other things we have planned in the installer?
- You might want to avoid streaming output of adb commands to tar directly to the disk of your machine, but rather tar on the device. Even though it'll take up some space on the device, it'll be worth the added stability. Adb is very unreliable when it comes to exit codes and what buffer to write to. You don't want it to silently write "waiting for devices" to your precious backup file and corrupting it without you knowing.
- You'll need to implement
adb pullin the promise-android-tools module. It'd be great if you could open a pr for that rather sooner than later.
- This is not a small undertaking, so in try to aim to get your changes in early wherever possible to avoid merge conflicts going forward. You might for example want to get your pull animation in now already.
- Avoid device-specific hacks and workarounds in the installer code. You'll have heard about the config file format introduced in 0.3.x-beta, which aims to pave the way to make the installer code device- and os-agnostic. I could imagine adding another field like
actions, which holds steps like this, to the entry in
operating_systems. We might even want to introduce some braking changes to the file strucutre to do this really right.
Hope i did not overwhelm you, just excited for community contributions to my pet project XD
If you need any help, hints or pointers, please let me know.
Hi @Flohack: My reply to your answers :
- Please try on a Meizu Pro5, if you have the same recovery.img than me, you will see that thoses folders aren't mounted by default, the /data folder is empty. But ok for the other devices.
2.Thanks ! For now I only write the code to backup on the computer and restore from the computer. Again because I only have a Pro5 as ubuntu phone and while in recovery, the sd card isn't mounted. But this can be done in the code for other devices.
- Ok perfect, thanks for the contact ! I'll do that.
thanks to you for your hint @Flohack
Hello @NeoTheThird ! Thanks for being in the game now !
I would like to open a PR but I have some difficulties to do so, can you give me some hint please ?
1- I have to admit it, that's a good point, for now I didn't have any issue while doing the backup like this (almost 8 times) but you right, we don't know what could happens during the backup or restore operation (for example with a defective usb cable).
2- yes, this is how I did, I tried as much as possible to respect your software architecture.
3 - Yes of course, but need some help witch github, I cannot create a new branch to commit my changes.
4 - Oh, I didn't know about that config file, I will take a look, thanks!
I really want to help the community but not by doing wrong things so any hint are welcome.
Thanks to you !
@AlainW94 for working with our repos you typically just fork the project, then push your branch you want to submit and create a pull request from that branch to our base. Thats kinda "workaround" for not being allowed write access to our repos.
@AlainW94 regarding the unmounted data partition, how could the installer work on that device then @NeoTheThird ? Do we mount data specifically? I dont have a Pro 5, in fact there are not so many people who own one.
@Flohack Many thanks ! this is what I did after reading on it on google.
@Flohack own 4 of them and can confirm that is it like that on the 4. have we access to the recovery;img for the pro5 ? if yes I can modify it to have the partitions mounted at startup in the recovery.
@AlainW94 No the recovery is the old one from Canonical times, Pro 5, MX 4 and all BQ devices do not have an open tree and we cannot change anything there...
@Flohack Ok so we will have to deal with it in the installer
Awesome, saw you opened a PR here, i'll give you a code review with some pointers. Really appreciate the work you put into this, i'm confident we can get it done fairly soon
@AlainW94 It should be dealt already with, otherwise how would the installer install anything into /data??
@Flohack In my case, I did a check of the mounted partition in the installer, then if it is not mounted, I mount it. (/dev/block/sda44 -> /data)
@NeoTheThird Hi! It was a try. Now I need to do the same with promise-android otherwise it will not work
Re: Git workflow
Here's something i wrote up for another installer user the other day, maybe that's helpful to you
you'll want to keep your
mastercompletely in sync with our
master, so when you navigate to it on your machine, the first thing you'll do is
git checkout masterto make sure you're on your
git pull upstream master --rebaseto fetch the latest version from our
git push origin masterto push our
masteron github. Now if you want to implement a new feature, you will create a branch by going
git checkout -b nameofbranch. Then you make your changes. If you want to create a commit, you
git add path/to/filesfor all your files you want to commit and then go
git commit -m "My Commit Message". As soon as you have all your commits created, go ahead and
git push origin nameofbranchto push your branch to your own fork on github. Then go to the webinterface to create the pull request.
@NeoTheThird Awewome, thanks !!!
Fla last edited by
Any news on this? I see no changes in the PR in the last month... The idea is awesome, you can do it!
@Fla hi, It still in review. but you can try it a tell us your opinion on it ! I only could test it on Pro5.