Termux — удобная среда на Android для выполнения системных задач: от синхронизации файлов до создания дедуплицированных архивов. Но ценность резервного копирования появляется только тогда, когда оно выполняется регулярно и предсказуемо. В этой статье покажем, как организовать постоянный бэкап данных в Termux с помощью двух подходов:
- rsync — простая и быстрая синхронизация/зеркалирование с инкрементальными обновлениями;
- Borg — дедуплицированные бэкапы с репозиторием, удобной ротацией и проверками целостности.
А запуск процессов автоматизируем с помощью cron.
Что потребуется
Перед началом подготовьте:
- Termux на Android (актуально установленный);
- Права на доступ к вашим данным (обычно через переменные окружения Termux и настройки хранения в приложении);
- Вариант назначения бэкапа: локальная папка на карте/внутреннем накопителе, сетевой ресурс (через локальную сеть) или внешний сервер/ПК;
- Стабильная схема доступа по SSH (если бэкап на другой хост): ключи, известные хосты;
- Доступ к crond в Termux и умение хранить конфиги в файлах.
Общая схема: исходные директории, цели и расписание
Рекомендуем мыслить так:
- Источник: что именно бэкапим (например, папка с документами, фото, конфигурациями);
- Цель: куда сохраняем бэкап (папка на диске/репозиторий Borg/сервер);
- Периодичность: например, rsync — каждые N часов, Borg — раз в сутки;
- Политика ротации: чтобы бэкап не разрастался бесконтрольно;
- Проверки: верификация целостности и корректности архива.
Установка пакетов в Termux
Сначала обновим базу пакетов и установим нужные утилиты. В Termux обычно доступно через пакетный менеджер.
pkg update
pkg upgrade -y
pkg install -y rsync borgbackup openssh cron
Важно: на некоторых устройствах набор пакетов может отличаться. Если какой-то пакет не находится, сообщите модель/версию Android — подскажу альтернативный вариант.
Подготовка доступа и мест хранения
Для работы с файловой системой убедитесь, что Termux может читать/писать в нужные директории. Часто удобнее хранить конфигурации и ключи в домашнем каталоге Termux (~/), а данные — в заранее подготовленных папках.
Например:
mkdir -p ~/backup-scripts
mkdir -p ~/backups
mkdir -p ~/.ssh
Настройка rsync: инкрементальная синхронизация
rsync полезен, когда вам нужна «папка-близнец» на диске или на удалённом сервере. Для постоянного бэкапа часто применяют синхронизацию по расписанию.
Вариант 1: rsync на локальную папку
Допустим, вы бэкапите /sdcard/Documents в ~/backups/documents_rsync. Если в вашем окружении путь отличается — замените его.
rsync -a --delete --info=stats2,progress2 /sdcard/Documents/ ~/backups/documents_rsync/
Пояснения:
-a— архивный режим (сохраняет права/временные метки/структуру);--delete— удаляет файлы в целевой папке, которые исчезли в источнике (зеркалирование);- вывод
--infoудобен для диагностики при первом запуске.
Вариант 2: rsync по SSH на сервер в локальной сети
Если бэкап делается на ПК/сервер через локальную сеть, лучше настроить SSH-ключи (без паролей в скриптах). Упор делаем именно на локальный сегмент сети, а не на обходы ограничений.
Предположим:
- IP сервера в локальной сети:
192.168.1.10; - пользователь на сервере:
backup; - каталог на сервере:
/data/backups/termux.
Сначала (разово) задайте ключевую авторизацию. Для генерации ключа:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ''
Затем скопируйте публичный ключ на сервер (вариант с ssh-copy-id может отсутствовать в минимальной сборке; при необходимости подскажу ручной способ):
# На Termux, если ssh-copy-id доступен
ssh-copy-id backup@192.168.1.10
Команду можно заменить на ручной перенос содержимого ~/.ssh/id_ed25519.pub в ~/.ssh/authorized_keys на сервере.
Далее команда rsync:
rsync -a --delete --compress --numeric-ids \
-e 'ssh -i ~/.ssh/id_ed25519 -o ServerAliveInterval=30 -o ServerAliveCountMax=3' \
/sdcard/Documents/ backup@192.168.1.10:/data/backups/termux/documents_rsync/
Создание скрипта rsync для ежедневного выполнения
Чтобы запускать rsync из cron, удобно вынести логику в исполняемый файл.
cat > ~/backup-scripts/rsync-documents.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
set -e
SOURCE="/sdcard/Documents/"
DEST="~/backups/documents_rsync/"
LOG="~/backups/rsync-documents.log"
mkdir -p "$DEST"
echo "==== $(date) rsync start ====" >> "$LOG"
rsync -a --delete --info=stats2,progress2 "$SOURCE" "$DEST" >> "$LOG" 2>&1
echo "==== $(date) rsync end ====" >> "$LOG"
EOF
chmod +x ~/backup-scripts/rsync-documents.sh
Если вы делаете rsync на удалённый сервер — замените DEST на ssh-адрес и добавьте -e 'ssh ...' в команду внутри скрипта.
Настройка Borg: дедупликация, репозиторий и контроль целостности
Borg подходит, когда важны хранение множества снимков (snapshots) и экономия места. Borg создаёт зашифрованные (при правильной настройке) инкрементальные репозитории с дедупликацией.
Создание репозитория Borg
Локальный пример: репозиторий хранится в Termux (или на доступном накопителе). Допустим, папка репозитория: ~/backups/borg-repo.
mkdir -p ~/backups
borg init --encryption=repokey ~/backups/borg-repo
Параметр шифрования зависит от вашей модели безопасности и способа хранения паролей. Для регулярного автоматического выполнения обычно применяют неинтерактивный способ, но его нужно делать аккуратно, чтобы не утекали секреты. В рамках этой статьи покажем безопасную практику через парольную переменную, задаваемую в окружении только для cron-скрипта (см. ниже).
Создание бэкапа Borg вручную (проверочный запуск)
Предположим, бэкапим /sdcard/Documents в репозиторий.
export BORG_PASSPHRASE='ваша_фраза_для_репозитория'
borg create \
--stats \
--compression lz4 \
--show-rc \
~/backups/borg-repo::documents-{now:%Y-%m-%d} \
/sdcard/Documents
Проверьте, что команда отработала успешно и репозиторий содержит снапшоты.
borg list ~/backups/borg-repo
Проверка целостности Borg
Периодическая проверка полезна, особенно после переноса данных или при подозрениях на повреждения.
export BORG_PASSPHRASE='ваша_фраза_для_репозитория'
borg check --verify-data ~/backups/borg-repo
Скрипт Borg для cron: бэкап и журнал
Создадим скрипт, который будет создавать снимок и писать лог. Пароль будем задавать из переменной, чтобы cron не требовал ввода интерактивно. В идеале храните секреты в ограниченных по доступу файлах или в зашифрованном хранилище; здесь приведён рабочий шаблон.
cat > ~/backup-scripts/borg-documents.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
set -e
export BORG_PASSPHRASE="${BORG_PASSPHRASE}"
REPO="~/backups/borg-repo"
SRC="/sdcard/Documents"
LOG="~/backups/borg-documents.log"
echo "==== $(date) borg create start ====" >> "$LOG"
borg create \
--stats \
--compression lz4 \
--show-rc \
"$REPO::documents-{now:%Y-%m-%d}" \
"$SRC" >> "$LOG" 2>&1
echo "==== $(date) borg create end ====" >> "$LOG"
EOF
chmod +x ~/backup-scripts/borg-documents.sh
Обратите внимание: скрипт ожидает, что BORG_PASSPHRASE будет доступна в окружении cron (ниже покажем, как задать её в нужном месте).
Ротация Borg: чтобы репозиторий не разрастался
Borg умеет применять политики удаления. Часто используют комбинации «держать ежедневно/еженедельно/ежемесячно».
Пример команды для «удержания»:
export BORG_PASSPHRASE='ваша_фраза_для_репозитория'
borg prune -v --list \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
~/backups/borg-repo
Рекомендуется запускать prune по расписанию (например, раз в неделю) после успешных бэкапов.
Настройка cron в Termux
В Termux cron обычно работает через файлы в ~/../etc/cron.d/ или через стандартный crontab (зависит от сборки и настроек). Практичный путь — использовать crontab пользователя Termux.
Старт crond
Если cron ещё не запущен, запустите демон. Команда может отличаться в зависимости от версии пакета, поэтому ориентируйтесь на консольные подсказки. Типовой вариант:
crond
Если требуется фоновый запуск:
crond -b
Редактирование crontab
Откройте crontab для текущего пользователя:
crontab -e
Пример cron-записей: rsync и Borg по расписанию
Ниже пример: rsync — каждые 6 часов, Borg — ежедневно, prune — раз в неделю, check — раз в месяц. Важно: cron-окружение может быть ограниченным, поэтому переменные окружения лучше задавать явно или через отдельный wrapper.
Пример строк (адаптируйте пути и время под себя):
# rsync документов каждые 6 часов
0 /6 $HOME/backup-scripts/rsync-documents.sh
# borg создаёт снапшот ежедневно в 02:10
10 2 BORG_PASSPHRASE='ваша_фраза_для_репозитория' $HOME/backup-scripts/borg-documents.sh
# prune каждое воскресенье в 03:00
0 3 0 BORG_PASSPHRASE='ваша_фраза_для_репозитория' borg prune -v --list \
--keep-daily=7 --keep-weekly=4 --keep-monthly=6 $HOME/backups/borg-repo >> $HOME/backups/borg-prune.log 2>&1
# проверка целостности раз в месяц (пример: 1-го числа в 04:00)
0 4 1 * BORG_PASSPHRASE='ваша_фраза_для_репозитория' borg check --verify-data $HOME/backups/borg-repo >> $HOME/backups/borg-check.log 2>&1
Если cron ругается на переносы строк или обратные слэши — лучше вынести prune/check в отдельные скрипты так же, как мы сделали для borg-documents.sh.
Практика безопасности: что обязательно учесть
- Секреты: не храните пароли/ключи в открытом виде в публичных файлах и не делитесь ими; минимизируйте права доступа (например,
chmod 600для файлов с секретами). - План электропитания: Android может ограничивать фоновые процессы. Для устойчивой работы бэкапа проверяйте, что Termux не ограничен экономией энергии.
- Проверки: хотя бы иногда запускайте
borg checkили делайте тестовое восстановление важных файлов. - Логи: храните логи, но следите за размером — периодически архивируйте/очищайте.
- --delete в rsync: внимательно используйте зеркалирование. Если источник стал пустым (ошибка монтирования/доступа) — вы можете потерять целостность «зеркала».
Как восстановить данные (проверка стратегии)
Для Borg восстановление выполняется выборочно или целиком:
export BORG_PASSPHRASE='ваша_фраза_для_репозитория'
borg list ~/backups/borg-repo
# восстановить снапшот целиком в указанную папку
mkdir -p ~/restore
borg extract -v ~/backups/borg-repo::documents-YYYY-MM-DD -C ~/restore
Рекомендуется хотя бы раз сделать восстановление тестового файла и убедиться, что вы помните, какой именно снапшот нужен.
Типовые сценарии и рекомендации
- Если вам нужен «живой дубликат» папок — используйте rsync на целевой диск/сервер.
- Если вы хотите хранить историю изменений — Borg со снапшотами и prune.
- Если оба подхода уместны — можно применять rsync для «быстрого текущего зеркала», а Borg — для контрольной истории и восстановления после ошибок.
Заключение
Автоматизация резервного копирования в Termux реально превращает бэкап из «вручную когда-нибудь» в надёжную привычку. rsync помогает быстро синхронизировать данные, а Borg обеспечивает дедуплицированную историю снимков и удобную ротацию, при этом cron берёт на себя регулярный запуск задач. Главное — аккуратно настроить доступ, расписание, ротацию и периодические проверки целостности.
Если хотите собрать готовую схему под ваши каталоги, устройство хранения и локальную сеть (с учётом ваших требований к безопасности и частоте бэкапов), обращайтесь в РыбинскЛАБ — поможем спроектировать и внедрить решение.