В современных инфраструктурах резервное копирование — один из ключевых элементов обеспечения доступности и целостности данных. Мы покажем, как start процесс резервного копирования прямо с мобильного устройства, используя Termux, rsync и шифрование GPG. По определению, start означает начать, вступить в действие (merriam-webster.com, dictionary.com).
Требования
- Android‑устройство с установленным Termux.
- Доступ к удалённому Linux‑серверу по SSH.
- Установленные пакеты:
rsync,openssh,gnupg,cronie(для планировщика).
Подготовка окружения в Termux
Установим необходимые инструменты:
pkg update && pkg upgrade -y
pkg install rsync openssh gnupg cronie -y
Создадим ключ GPG, который будет использоваться для шифрования резервных копий:
gpg --full-generate-key
Запомните Key ID — он понадобится в скрипте.
Создание скрипта резервного копирования
Сохраним скрипт в файле ~/backup.sh и сделаем его исполняемым:
cat > ~/backup.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash
# Параметры
REMOTE_USER="user"
REMOTE_HOST="example.com"
REMOTE_DIR="/var/www/html"
LOCAL_BACKUP_DIR="${HOME}/backups"
GPG_KEY_ID="YOUR_KEY_ID"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
ARCHIVE_NAME="backup_${TIMESTAMP}.tar.gz"
ENCRYPTED_NAME="${ARCHIVE_NAME}.gpg"
# Создаём локальную папку для резервных копий
mkdir -p "${LOCAL_BACKUP_DIR}"
# Шаг 1: rsync – синхронизация данных с сервера
rsync -avz --delete "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/" "${LOCAL_BACKUP_DIR}/${TIMESTAMP}/"
if [ $? -ne 0 ]; then
echo "[ERROR] rsync завершился с ошибкой" >&2
exit 1
fi
# Шаг 2: Архивируем скопированные файлы
tar -czf "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}" -C "${LOCAL_BACKUP_DIR}/${TIMESTAMP}" .
if [ $? -ne 0 ]; then
echo "[ERROR] Создание архива не удалось" >&2
exit 1
fi
# Шаг 3: Шифруем архив GPG
gpg --yes --batch -o "${LOCAL_BACKUP_DIR}/${ENCRYPTED_NAME}" -r "${GPG_KEY_ID}" --encrypt "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}"
if [ $? -ne 0 ]; then
echo "[ERROR] Шифрование не удалось" >&2
exit 1
fi
# Удаляем промежуточные файлы
rm -rf "${LOCAL_BACKUP_DIR}/${TIMESTAMP}" "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}"
echo "[INFO] Резервная копия успешно создана: ${ENCRYPTED_NAME}"
EOF
chmod +x ~/backup.sh
В скрипте реализованы три ключевых этапа: rsync для передачи файлов, tar для упаковки и gpg для шифрования. Каждый шаг проверяется на успешность, что повышает надёжность процесса.
Объяснение ключевых параметров rsync
-a– архивный режим (рекурсивно, сохраняет права, тайм‑штампы).-v– подробный вывод.-z– сжатие данных при передаче.--delete– удалять файлы в целевой директории, которых нет на источнике (синхронная копия).
Автоматизация с помощью планировщика (cronie)
Для регулярного запуска резервного копирования создадим задачу в crontab:
crontab -e
Добавим строку, например, для ежедневного запуска в 02:30:
30 2 * ${HOME}/backup.sh >> ${HOME}/backup.log 2>&1
Запустим службу cron в Termux:
sv enable crond
sv start crond
Рекомендации по безопасности
- Храните приватный ключ GPG в безопасном месте; используйте парольную фразу.
- Ограничьте доступ к директории
~/backups(chmod 700). - Для SSH‑подключения используйте ключи, а не пароли; добавьте
StrictHostKeyChecking=noтолько в тестовых средах. - Регулярно проверяйте логи
backup.logна предмет ошибок.
Тестирование процесса
Запустите скрипт вручную, убедитесь, что архив .gpg создаётся и может быть расшифрован:
gpg --decrypt ${HOME}/backups/backup_20240101_023000.tar.gz.gpg | tar -tz
Если вывод показывает список файлов, значит всё работает корректно.
Заключение
Мы создали полностью автоматизированный процесс резервного копирования Linux‑сервера, запущенный из Termux, использующий rsync для быстрой синхронизации и GPG для надёжного шифрования. Такой подход позволяет администраторам управлять резервными копиями прямо со смартфона, сохраняя при этом высокий уровень защиты данных.
RybinskLab предлагает профессиональные услуги по настройке и поддержке резервных систем, аудиту безопасности и разработке кастомных скриптов под ваши бизнес‑задачи. Обращайтесь к нам, и мы поможем построить надёжную и масштабируемую инфраструктуру резервного копирования.
Источники: [merriam-webster.com](https://www.merriam-webster.com/dictionary/start), [dictionary.com](https://www.dictionary.com/browse/start)