# Бэкапы на Android: мсье знает толк...
vit01(mira, 1) — All
2016-05-31 18:29:11


Обычные пользователи привыкли делать бэкапы своих данных при помощи проприетарных средств Google и всяких программ вроде TitaniumBackup. Но вот GNU/Linux'оиды не всегда с этим могут просто так смириться. Более того, у многих даже не установлены Google Apps (и правильно). Вот и я не стал мириться и пошёл по собственному пути.

1. Установленные приложения

Как известно, их данные находятся в /data/app/<app_id> и /data/data/<app_id>. Но работать с этими каталогами вручную совсем не нужно.

В F-Droid есть очень хорошая программа под названием oandbackup. Внимание: нужны root-права!
Ссылка: https://f-droid.org/repository/browse/?fdfilter=oandbackup&fdid=dk.jens.backup

Она умеет делать архивы данных приложений, установочного APK или всего вместе. Отслеживает версии программ и имеет удобную фильтрацию. Даже расписания поддерживает (но этой фичей я не пользуюсь).

НО: не стоит делать бэкап Termux (и других очень крупных приложений, например, firefox) с помощью этой штуки, потому что запаковывать tar.gz на несколько сотен мегабайт/пару гигов - задача небыстрая. С терминалом будут разборки дальше.

Выполнены нужные манипуляции? Идём дальше.

2. Пользовательские файлы и всё остальное

На этом этапе нужно будет установить приложения Termux, Termux:API и Termux:Widget. Будем считать, что они у нас уже установлены.

Запускаем Termux, и туда:

# обновления софта пропускаем, пусть они уже стоят
apt install termux-api termux-tools openssh rsync

termux-setup-storage
# может спросить права на доступ к файлам

mkdir -p ~/.shortcuts # так надо
mkdir backup-info # каталог для симлинков

Теперь можно видеть, что в $HOME появился каталог storage, где имеется полный доступ ко внутренней памяти. Также там есть несколько ссылок на часто используемые места.

Создаём символьные ссылки в каталоге backup-info для нужной информации.

cd backup-info
ln -s ../caesium/caesium.cfg .
ln -s ../storage/dcim/Camera . # куда же без фоточек
ln -s ../storage/shared/Documents . # каталог Documents из корня внутренней памяти
ln -s ~/shortcuts . # скрипты из виджета Termux
ln -s ~/.config .
# дальше, думаю, ясно
# ...
# И САМОЕ ВАЖНОЕ - приложения из пункта 1
ln -s ../storage/shared/oandbackups .

О экспорте контактов можно позаботиться либо стандартными средствами системы, либо с помощью команды termux-contact-list, которая возвращает список в виде json (правда, если за человеком записано несколько номеров телефонов, то выдаёт только первый).

После этого напишем бэкап-скрипт с использованием rsync. Вообще, каждый линуксоид волен дальше продолжать по своему усмотрению, но вот моё решение:

#!/system/xbin/bash

server="your-server.ru"
port="22"
one="~/backup-info"
two="user@$server:/home/username/phone-backups/"

termux-contact-list > $one/contact-list
dpkg --get-selections > $one/termux-packages # установленный софт тоже важен

rsync -varLk -e "ssh -p $port" --size-only --stats --delete "$one" "$two"

Сохраняем файл в каталоге ~/.shortcuts, даём ему права на исполнение.

Затем добавляем на домашний экран (он же лончер) андроида виджет Termux, в котором будет виден только что написанный скрипт. Виджет нужен, чтобы не вводить команду вручную, а просто тыкнуть пальцем, ввести пароль и ждать окончания работы.

В самый первый раз скрипт просто скидывает на сервер все наши установленные приложения, фотографии, контакты, конфиги и всю остальную информацию. В последующие он будет отправлять только те файлы, которые претерпели изменения. При удалении файла на телефоне он также удалится на сервере.

Вот и всё. Задача решена простыми и привычными средствами (rsync, bash), а у пользователя полная свобода в управлении своими резервными копиями. И никакой следящей проприетарщины: всё своё, домашнее, шифрованное.