Данный скрипт можно запускать через cron ежедневно, компресировать нужную папку и отправлять через своего Telegram бота к себе в чат для сохранения бекапов.
В итоге нам нужно указать:
VOLUME_DIR — папку, которую хотим отправлять в наш Telegram канал
MAX_FILE_SIZE — т.к у Telegram имеются лимиты на отправку одного файла, то не более 50 мегабайт.
BOT_TOKEN, CHAT_ID — токен вашего бота(если не создали, то нужно создать нового бота через BotFather), и ID чата — нужно узнать id чата где сидит ваш бот.
#!/bin/bash # Set the path to the directory containing the Docker volumes VOLUME_DIR="/root/volumes" # Set the maximum file size in bytes (50MB) MAX_FILE_SIZE=31457280 # Set your Telegram bot API token and chat ID BOT_TOKEN="" CHAT_ID="" # Compress each volume directory into a separate .tar.gz file for volume in $(ls $VOLUME_DIR); do tar -czvf $VOLUME_DIR/"$volume".tar.gz -C $VOLUME_DIR "$volume" done # Split each .tar.gz file into multiple files, each no larger than MAX_FILE_SIZE for tarfile in $(ls $VOLUME_DIR/*.tar.gz); do split --bytes=$MAX_FILE_SIZE --numeric-suffixes=1 --suffix-length=3 "$tarfile" "$tarfile". rm "$tarfile" done # Send each split file to Telegram using curl and the Telegram Bot API for file in $(ls $VOLUME_DIR/*.tar.gz.*); do curl -F chat_id="$CHAT_ID" -F document=@"$file" "https://api.telegram.org/bot$BOT_TOKEN/sendDocument" done # Remove all split files rm $VOLUME_DIR/*.tar.gz.*
Чтобы запускать скрипт по крону:
сrontab -e 0 0 * * * /your-home-dir/backup.sh