We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автоматизация резервного копирования с rsync, Borg и cron‑задачами в Termux для постоянного бэкапа данных

Пошаговая настройка постоянного резервного копирования в Termux: rsync и Borg, расписания через cron, контроль целостности, ротация и практические советы для безопасного бэкапа данных на Android.

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 берёт на себя регулярный запуск задач. Главное — аккуратно настроить доступ, расписание, ротацию и периодические проверки целостности.

Если хотите собрать готовую схему под ваши каталоги, устройство хранения и локальную сеть (с учётом ваших требований к безопасности и частоте бэкапов), обращайтесь в РыбинскЛАБ — поможем спроектировать и внедрить решение.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект