#!/usr/bin/env bash # # Android backups using MTP # # Overall procedure # # PROFILE="profile-name" # PHONE="phone-name" # go-mtpfs ~/temp/shared/$PHONE/$PROFILE & # time rsync -av --delete ~/temp/shared/$PHONE/$PROFILE/ ~/sync/$PHONE/$PROFILE/ # fusermount -u ~/temp/shared/$PHONE/$PROFILE # # Parameters BASENAME="`basename $0`" PHONE="$1" PROFILE="$2" SHARED="$HOME/temp/shared/$PHONE/$PROFILE" SYNCED="$HOME/sync/$PHONE/$PROFILE" COMMANDS="go-mtpfs rsync fusermount" EXCLUDES="--exclude=Music" # Syntax check if [ -z "$PROFILE" ]; then echo "usage: $BASENAME " echo "" echo "Overall procedure:" echo "" echo "For each user profile:" echo "" echo "1. Log into the profile on the phone." echo "2. Export the contacts somewhere like Backups/Contacts/contacts.vcf." echo "3. Run Signal and Molly backups (to the Backups folder)." echo "4. Run a local backup to the internal storage (to the .SeedVaultAndroidBackup folder)." echo "4. Mount the profile folder in the computer." echo "5. Sync the profile in the respective folder." echo "" echo "The last two steps are done through $BASENAME commend" exit 1 fi # Commands check for tool in $COMMANDS; do if ! which $tool &> /dev/null; then echo "error: please install $tool" exit 1 fi done # Mount go-mtpfs $SHARED & # Check if mount was successful if [ "$?" != "0" ]; then echo "$BASENAME: error: unable to mount profile $PROFILE from phone $PHONE" exit 1 fi # Wait a bit sleep 1 # Sync time rsync -av --delete $EXCLUDES $SHARED/ $SYNCED/ # Umount fusermount -u $SHARED