Облачный бэкап удобен, но данные оказываются на чужих серверах. Локальная копия решает ту же задачу, оставляя всё у вас.
Что реально можно сохранить
Начнём с ограничений, чтобы не тратить время впустую.
| Данные | Без root |
|---|---|
| Фото, видео, документы | Да, полностью |
| APK установленных приложений | Да |
| Данные приложений | Нет, если приложение это запретило |
| SMS и журнал звонков | Через сторонние приложения |
| Контакты | Да, экспортом в vCard |
| Настройки системы | Нет |
Предупреждение. Команда adb backup объявлена устаревшей и в Android 12 и новее почти не работает: большинство приложений помечены allowBackup="false". Не рассчитывайте на неё как на основной способ.
Шаг 1: подготовка
Установите platform-tools на компьютер:
sudo apt install -y android-tools-adb
На телефоне: Настройки → О телефоне → семь раз нажать «Номер сборки» → вернуться в Настройки → Для разработчиков → включить «Отладка по USB».
Подключите кабелем и проверьте:
adb devices
На телефоне появится запрос на разрешение отладки — подтвердите. Устройство должно отображаться со статусом device, а не unauthorized.
Шаг 2: копирование файлов
Весь внутренний накопитель:
mkdir -p ~/android-backup/$(date +%Y%m%d)
cd ~/android-backup/$(date +%Y%m%d)
adb pull /sdcard/ .
Только фото и видео — быстрее:
adb pull /sdcard/DCIM/ .
adb pull /sdcard/Pictures/ .
adb pull /sdcard/Movies/ .
adb pull /sdcard/Download/ .
Посмотреть, что вообще есть:
adb shell ls -la /sdcard/
Оценить объём заранее:
adb shell du -sh /sdcard/
Шаг 3: сохранение APK
Список установленных пользовательских приложений:
adb shell pm list packages -3
Путь к APK конкретного приложения:
adb shell pm path com.example.app
Скачать все пользовательские APK одним скриптом:
mkdir -p apk && cd apk
for pkg in $(adb shell pm list packages -3 | sed 's/package://' | tr -d '\r'); do
path=$(adb shell pm path "$pkg" | head -1 | sed 's/package://' | tr -d '\r')
echo "Сохраняю $pkg"
adb pull "$path" "${pkg}.apk" 2>/dev/null
done
cd ..
Конструкция tr -d '\r' обязательна: adb возвращает строки с символом возврата каретки, из-за которого пути не находятся.
Шаг 4: контакты
Надёжнее всего через встроенный экспорт: Контакты → Меню → Импорт/Экспорт → Экспорт в файл VCF. Файл окажется в /sdcard/, оттуда заберите его через adb pull.
Шаг 5: SMS и звонки
Без root системные базы недоступны. Рабочий путь — приложение SMS Backup & Restore из F-Droid или Google Play: оно создаёт XML-файл в /sdcard/, который вы забираете через adb.
Шаг 6: автоматизация через rsync
Регулярный бэкап удобнее делать скриптом, который копирует только изменения:
#!/usr/bin/env bash
set -euo pipefail
DEST="$HOME/android-backup"
DATE=$(date +%Y%m%d)
if ! adb devices | grep -qw device; then
echo "Устройство не подключено или не авторизовано"
exit 1
fi
mkdir -p "$DEST/current"
for dir in DCIM Pictures Movies Download Documents; do
echo "Синхронизирую $dir"
adb pull -a "/sdcard/$dir" "$DEST/current/" 2>/dev/null || true
done
echo "Готово: $DEST/current"
du -sh "$DEST/current"
Ключ -a у adb pull сохраняет временные метки файлов — это позволяет при повторном запуске пропускать уже скопированное.
Шаг 7: шифрование копии
Фотографии и документы — чувствительные данные. Если архив хранится не только на вашем компьютере:
tar czf - ~/android-backup/current | \
gpg --symmetric --cipher-algo AES256 -o android-backup-$(date +%Y%m%d).tar.gz.gpg
Расшифровка:
gpg --decrypt android-backup-20260915.tar.gz.gpg | tar xzf -
Проверка результата
du -sh ~/android-backup/current
find ~/android-backup/current -type f | wc -l
find ~/android-backup/current -name "*.jpg" | wc -l
Сравните число файлов с тем, что показывает телефон — расхождение означает, что часть данных не скопировалась.
Возможные проблемы
Устройство в статусе unauthorized
Не подтверждён запрос на телефоне. Отключите кабель, включите заново, посмотрите на экран телефона. Если запрос не появляется:
adb kill-server
adb start-server
adb devices
Устройство не определяется на Linux
Нужны правила udev. Узнайте идентификатор производителя:
lsusb
Создайте правило:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"' | \
sudo tee /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb pull обрывается на больших объёмах
Копируйте по каталогам, а не всё сразу. Проверьте, что кабель поддерживает передачу данных — многие зарядные кабели передают только питание.
Итог
Реально работающая схема без root: adb pull для медиа и документов, скрипт для сохранения APK, встроенный экспорт для контактов, стороннее приложение для SMS. Данные приложений без root получить нельзя — это ограничение Android, а не инструмента.