Using cp instead of mv during the restore step resulted in double the amount of free space and inodes being used. For example, a nano arm64 opengapps install uses around 500M. But during a backup/restore process when the Updater is used, it temporarily uses 1G on the other slot. That causes failed updates on devices that don't have that much free space on the system partition. Change-Id: I57ba2e0f52d328d4ff91d47a3db45f47bb8402af
49 lines
869 B
Bash
49 lines
869 B
Bash
#!/system/bin/sh
|
|
#
|
|
# Functions for backuptool_ab.sh
|
|
#
|
|
|
|
export S=/system
|
|
export C=/postinstall/tmp/backupdir
|
|
export V=18.0
|
|
export backuptool_ab=true
|
|
|
|
copy_file() {
|
|
old=`umask`
|
|
umask 0322
|
|
mkdir -m755 -p `dirname $2`
|
|
umask "$old"
|
|
|
|
cp -dp --preserve=a "$1" "$2"
|
|
}
|
|
|
|
move_file() {
|
|
old=`umask`
|
|
umask 0322
|
|
mkdir -m755 -p `dirname $2`
|
|
umask "$old"
|
|
|
|
mv "$1" "$2"
|
|
}
|
|
|
|
backup_file() {
|
|
if [ -e "$1" -o -L "$1" ]; then
|
|
# dont backup any apps that have odex files, they are useless
|
|
if ( echo "$1" | grep -q "\.apk$" ) && [ -e `echo "$1" | sed -e 's/\.apk$/\.odex/'` ]; then
|
|
echo "Skipping odexed apk $1";
|
|
else
|
|
copy_file "$1" "$C/$1"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
restore_file() {
|
|
if [ -e "$C/$1" -o -L "$C/$1" ]; then
|
|
move_file "$C/$1" "/postinstall/$1";
|
|
if [ -n "$2" ]; then
|
|
echo "Deleting obsolete file $2"
|
|
rm "$2";
|
|
fi
|
|
fi
|
|
}
|