summaryrefslogtreecommitdiffstats
path: root/twrpTar.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2016-08-01ADB: Add adb backup for TWRP.bigbiff1-108/+188
Functionality for client side to backup tar and image streams over adbd to the client under backup.ab. Using adb backup on the client side you can backup the partitions TWRP knows about. On the client side you can do the following: adb backup -f <filename> --twrp <options> where options are --compress: compress data system: backup system cache: backup cache data: backup data boot: backup boot etc for each partition. You can string multiple options, i.e. adb backup -f <filename> --twrp --compress cache system data adb backup in TWRP will take any option corresponding to TWRP fstab partitions, e.g. efs boot as well. If you do not specify the filename with the -f option, adb will backup your data to a filename backup.ab on the client. You can then rename the file and encrypt it with desktop tools. If you don't want to use command line arguments: adb backup --twrp will bring up the gui and allow you to choose partitions from the backup page. To restore the backup use the following convention: adb restore <filename> Structures are used to store metadata in binary inside of the file itself. If the metadata structure is modified, update the adb version so that it will invalidate older backups and not cause issues on restore. When restoring, we currently do not support picking specific partitions. It's all or nothing. Change-Id: Idb92c37fc9801dc8d89ed2a4570e9d12e76facf8
2016-03-31Improve progress bar handling for backup / restore / image flashEthan Yonker1-47/+36
The progress bar will now be updated during image backups, restores and during image flashing (except for sparse images which will require significant changes to libsparse, and except for mtd nand using flash_utils). The progress bar will now be updated mid-file for file systems (tar) so the user will see changes even during large file backup / restore. Add a new progress tracking class to simplify handling of progress bar updates. The class will only update the progress bar 5 times a second to reduce the CPU load from updating the GUI frequently which does affect backup times. Change-Id: Iff382faef3df1f86604af336c1a8ce8993cd12c5
2016-01-22Fix a bunch of messagesMatt Mower1-1/+1
* Find and rename/remove duplicate string variable names * Add missing string variables to en language file * Fix display of some strings missing @ in front of variable name * Fix several %s --> {1} * Be consistent in usage of cancelled vs. canceled (both spellings acceptable) Tip for finding strings missing from language files: 1) Find all messages: egrep -hr "gui_msg.+=" > /tmp/msgs.txt 2) Regex replace to trim them down WHAT: ^\s+gui_msg(?:[^"]+)"([a-zA-Z0-9_]+)=([^"]+).+ WITH: $1 Note that $2 can be used to retain the message 3) Find missing strings: for i in $(cat /tmp/msgs.txt); do if ! grep -q $i gui/theme/common/languages/en.xml; then echo $i; fi done Change-Id: Ic193162e4b5468bf027472928a370be39840ea1d
2015-12-19Multiple Language SupportEthan Yonker1-86/+155
This is similar to https://gerrit.omnirom.org/#/c/14014 A lot of the features built in the older patch set have been split out into separate patches, most of which have already been merged. The remaining functionality here should all be directly related to language selection and loading. We always load English as a base before loading other languages over the top of the base. The idea is that if another language is missing a translation, then we will still display the English. Maybe still to do: read the /cache/recovery/last_locale file and load a language based on that. For me, this file contains just: en_US We probably won't bother with region specific translations so we would have to look at either trimming off the _US or using some other method like perhaps a symlink or a combination of the two. Thanks to _that for twmsg.cpp class Change-Id: I9647a22e47883a3ddd2de1da51f64aab7c328f74
2015-04-03twrpTar: fix segfault after encrypted backupsthat1-6/+6
also use unsigned int for core_count instead of unsigned long long. I'll change it back when 4-billion-core devices are common. PS2 - cast return value via intptr_t (may be important for 64 bit platforms) - output errors from TWFunc::Wait_For_Child to console Change-Id: I04158daa0b64e44d68e179d626a83d81cf5d49f7
2015-03-05Address a few compiler warningsMatt Mower1-2/+2
Change-Id: I6e063fba8d58c8c53da6bca6292c84e3392aee50
2015-02-27Properly initialize Archive_Current_Size to 0 in twrpTarEthan Yonker1-0/+1
Change-Id: I30b67787b1d529d6bdf462c8e0bf2338a9961eff
2015-01-27Add cancel backup capability.bigbiff1-11/+19
This will stop the iteration of the partition objects, kill the current twrpTar thread and remove the backup directory. Implement TWAtomicInt class to give us a wrapper that automatically uses mutexes before the read and write to help ensure that the reads and writes will be atomic based on documentation. Change-Id: I645b22bc980a292e9c7202acb24ffd22ebe68c63
2014-12-22Fix twrpTar buildingEthan Yonker1-0/+5
- ifdef around set_metadata - Set tags as optional Change-Id: I438e370c3bf6b590dc80ba372724c47cead6cbe5
2014-12-12Attempt to set the proper uid/gid/contexts on new files and dirsEthan Yonker1-0/+2
Files and folders that we create during backups, copy log, or MTP operations often do not have the proper uid/gid/contexts assigned. We will attempt to read the proper contexts from the settings storage path and assign those same contexts to any files or dirs that we create. Change-Id: I769f9479854122b49b499de2175e6e2d026f8afd
2014-11-12Make TWRP compile for arm64Ethan Yonker1-3/+3
-Remove dosfstools for arm64 until we can make it compile -Fix TW_USE_TOOLBOX flag to work again -Fix symlinking and handling of sh when using mksh -Fix legacy properties to find futex_wake function -Fix libcrecovery to not use bsd_signal anymore -Fix rules for building with regards to libcrecovery -Update toolbox_recovery rules to compile tools in lollipop -Fix a few compile errors specific to arm64 Testers report that TWRP does not boot on Nexus 9 and we fail to get a shell for adb shell. At least it compiles without errors. Change-Id: I286be8628defb60cc527b8a548c0bdfcb0ebb574
2014-07-09Track backup and restore progressEthan Yonker1-17/+298
Track backup and restore progress based on the sizes of the files as they are being added to the tar backup file. Update the progress bar based on the sizes of the files. Change-Id: Idf649efa1db3e91830b4b2add86203a3f30042ff
2014-04-15Simplify twrpTar skip dir checks, DU code cleanupMatt Mower1-23/+12
* Remove unused parent variable from twruDU constructor * Replace manual checks for /data/media with DU's check_skip_dirs() function * Remove check_skip_dirs(A,B) function which duplicates the functionality of check_skip_dirs(A) * Remove redundant trailing slash removal from check_absolute_skip_dirs(); this function is only accessed through check_skip_dirs() Change-Id: Icfe8d71de36e33db6749fc5896dd3eafbcf7c9a4
2014-04-07Only split archives when split_archives is setDees Troy1-1/+1
In some cases, statfs used on partitions like /system does not report a size that would trigger a split archive, but using stat on the individual files shows a larger size that statfs that would trigger a split. This patch prevents us from trying to split an archive unless we explicitly decided to split in advance. Change-Id: I67f5cd343f12333e1189100cf0ec1c20c15b7cc2
2014-04-07Rearrange opening of output and input files for error handlingDees Troy1-38/+64
If the file could not be opened, the process would log an error to the log file but the GUI would report success. Rearrange the process so that the GUI shows an error. Change-Id: I96af0b934c8f6f463d56656647b16accd1d40654
2014-04-02Fix backup and restore of encrypted backupsEthan Yonker1-0/+2
After removing the DataManager code to support twrpTar separate binary we were failing to pass / set the password for the various separate threads used for openaes. Change-Id: Ifff634777fe122e0195d84f67932177ca8879c2f
2014-03-31Remove deprecated tar exclude functionalityMatt Mower1-17/+1
twrpDU::check_skip_dirs() handles skipped folders now. Everywhere twrpTar::setexcl() is being used to exclude files eventually calls createTarFork(), which in turn calls Generate_TarList(), which checks check_skip_dirs(). Change-Id: Ibbc4eb2eb89863ccb2a15f5a3b5092fb10fcbcc0
2014-03-17Change to lstat so we don't count the target of symbolic links as partbigbiff bigbiff1-2/+2
of the tar archive size. Big thanks to Tassadar for pointing out the fix. Change-Id: I8894ffef54c93939b5b455634169d9c14d8ed7af
2014-03-13Fix skipping of relative paths and lost+found in twrpDUVojtech Bocek1-12/+3
Change-Id: Ib79029fd6237502338b041a6bc2f9e539536d6ad Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2014-03-07Fix error handling in createListEthan Yonker1-1/+1
Change-Id: I10211f2a20da119ae6a4a1bb2f768a3fa2ab87da
2014-02-12Remove unused functionsEthan Yonker1-32/+0
Change-Id: I3230412e6aad7aab0f2fd034cc7b289cd4cd6a97
2014-02-10Move DataManager functions out of twrpTar.cppEthan Yonker1-14/+9
Change-Id: I943318afe787ff4ede724fa0bc77ebc6a3ba0c8b
2014-02-03Refactor twrpTar to use TarListDees Troy1-295/+71
Eliminate the use of tarDirs and Generate_MultipleArcives in favor of Generate_TarList so that we have one method for backup creation instead of three. Change-Id: I267937b6e40b32d43fbac8b4cca82f7468d4f94c
2013-12-20declare dir for non data/media devicesDees Troy1-0/+2
Change-Id: I60e2e2a880c3bd5fff3f485f7c8e4ac9ab6fd3bd
2013-12-19Create a TWRP Disk Usage Class to retain state about a directory and whether we should skip it in other classes like twrpTar.bigbiff bigbiff1-9/+24
Moved Get_Folder_Size to this new class. Change-Id: If0a0220f900eb109581f2eeaf7b76e3f7d6886f1
2013-10-24Ensure root folders get added in split archivesDees Troy1-0/+6
Make sure that we add the root folder itself to get the perms and SELinux contexts before splitting to a second archive. Change-Id: Id93a9f9b4767b61bba38eb0cf7306c81a8540a3c
2013-10-23fix getting and setting contexts in selinuxbigbiff bigbiff1-2/+7
recreate lost+found with selinux contexts Change-Id: I19e8696d47319dfb641520956c8a27c2a796a0c3
2013-10-17fix getting and setting contexts in selinuxbigbiff bigbiff1-1/+6
recreate lost+found with selinux contexts Change-Id: I19e8696d47319dfb641520956c8a27c2a796a0c3
2013-10-17Ensure root folders get added in split archivesDees Troy1-1/+7
Make sure that we add the root folder itself to get the perms and SELinux contexts before splitting to a second archive. Change-Id: Id93a9f9b4767b61bba38eb0cf7306c81a8540a3c
2013-09-05libtar: store SELinux file context in tar archivesVojtech Bocek1-10/+10
* Using RedHat's "RHT.security.selinux=" tag in extended tar header (type 'x') Signed-off-by: Vojtech Bocek <vbocek@gmail.com> Change-Id: I102e492e4fa5b8a08fae4d34eb36386862509b4d
2013-08-28skip checking size on linksbigbiff bigbiff1-40/+60
skip google music cache Change-Id: I75d6fd0e17140d12cb2c6d335e8ff73a6f871aa2
2013-08-28ignore lost+found in all the placesbigbiff bigbiff1-6/+6
2013-08-24Unify indentation and little clean-up in TWRP filesVojtech Bocek1-1/+1
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2013-08-14Fix problem with not waiting for pigz to exitDees_Troy1-1/+1
In some cases compressed backups would not wait for pigz to finish leading to backup files that were 0 bytes or MD5 mismatches.
2013-07-24Fix permissions on backup filesDees_Troy1-14/+13
2013-07-01Fix backup of datadataDees_Troy1-10/+15
Change-Id: Ib0098542599283787592ba08caa070dc818d6111
2013-06-22Support encrypted backup filesDees_Troy1-221/+936
Also includes features merged from: Update twrpTar by kokotas Revised function entryExists(). Added function to get archive's uncompressed size. Added option to exclude item(s) from the archive. Revised forks() http://review.teamw.in/#/c/590/ Change-Id: I01fa2c81643161984eff2625247af75990684bd9
2013-04-04Move all AOSP code out of recovery binaryDees_Troy1-51/+51
Improves license compatibility between GPL and Apache Change-Id: I2b165aa575bb6213af6b07936f99610c113443f0
2013-03-18Add search function to libtarn0d31-14/+42
Function entryExists() can be called in order to check if an entry exists inside an archive. Change-Id: Id3d13d20dfb74a1779dbd8ba6f0ab08c3ca46319
2013-03-16Fix backup of initial directory with split archivesDees_Troy1-22/+23
Change-Id: Icbb3be817b8a8fe693f6ee015152f780c40b3f7a
2013-03-02Fix capturing exit status to properly display libtar resultsDees_Troy1-2/+2
Error conditions were always showing successful in the TWRP GUI making it much more difficult to determine if a backup or restore was actually successful.
2013-02-27libtar - Fix extraction of hardlinks to use the prefixDees_Troy1-2/+2
Change-Id: I116982ceed722364406b99fb08bc6943afa0390a
2013-02-27fix restore on mknodbigbiff bigbiff1-2/+6
Change-Id: I9fb8b927f81a8cded651e42026beb3d5c252d1e8
2013-02-22using __popen segfaults, switch back to popenbigbiff bigbiff1-3/+3
2013-02-18change libtar to fork instead of pthreadbigbiff bigbiff1-28/+117
Conflicts: twrpTar.cpp
2013-02-13This adds a 60 second screen timeout for TWRP. Might consider making this configurable in the future.bigbiff bigbiff1-0/+4
Will also set overlay to lockscreen so we don't have inadvetent screen selections. Touching the screen will bring the display back up. add back check script for poweroff move diff time function to twrp-functions.cpp make sure we chmod after copy_file add read_file and write_file functions to twrp-functions.cpp make single thread try to force update screen add forceRender drop caches after tar processing Change-Id: I3c5c509dd39dbb05451bbfe5d8b56d53c90d8d1b
2013-02-12Change popen in twrpTar to __popenDees_Troy1-6/+7
Change-Id: I921b0647b1f63dd348b059eb630ebe9bf5ec570d
2013-02-07Add write buffer for tar writesDees_Troy1-67/+88
update fuse to 2.9.2 catch return from unlink so that we don't print error messages when things work Change-Id: I1115039a0fa5d9d73f78ef1abd79755d7ffd9d96
2013-01-24change tar create to pthreadbigbiff bigbiff1-65/+121
Change-Id: I5a33d207ec6683de20da37e6f4f174c67785fc52
2013-01-09Add libtar to TWRP instead of using busybox tarbigbiff bigbiff1-0/+409
Add proper mkdosfs tool Add fuse to TWRP Add experimental exfat-fuse to TWRP Convert all system() functions to use new Exec_Cmd function