karelwintersky / kwbackup Goto Github PK
View Code? Open in Web Editor NEWKW Backup scripts with sync to Selectel Cloud Storage
KW Backup scripts with sync to Selectel Cloud Storage
# Разрешить ли бэкап файлового storage по схеме sync (допустимо 0 или 1, отсутствие эквивалентно 0)
export ENABLE_BACKUP_STORAGE=1
# "Корень" для источника данных [ОПЦИОНАЛЬНО]
export STORAGE_SOURCES_ROOT=/var/www/
# Источники данных для storage. Строка или массив строк ( /tmp/1/ /tmp/2/ )
# Полные пути или подкаталоги, если определен STORAGE_SOURCES_ROOT
export STORAGE_SOURCES=vasilyev.com
Но не работает:
# Разрешить ли бэкап файлового storage по схеме sync (допустимо 0 или 1, отсутствие эквивалентно 0)
export ENABLE_BACKUP_STORAGE=1
# "Корень" для источника данных [ОПЦИОНАЛЬНО]
export STORAGE_SOURCES_ROOT=/var/www/
# Источники данных для storage. Строка или массив строк ( /tmp/1/ /tmp/2/ )
# Полные пути или подкаталоги, если определен STORAGE_SOURCES_ROOT
export STORAGE_SOURCES=( vasilyev.com )
Сделать опцию, которая позволяет паковать не через pipe, а через временный файл (SQL)
Причина: через пайп не отслеживается прогресс:
Creating archive /tmp/imaginaria_2022-09-03-14-21-22.sql.rar
Adding imaginaria_2022-09-03-14-21-22.sql 100%
Хотя на самом деле там далеко не 100%...
Простое решение:
function checkUniqueProcess() {
if pidof -o %PPID -x $(basename "$0") >/dev/null; then
echo "$(date "+%d.%m.%Y %T") EXIT: The script is already running." | tee -a "${LOG_FILE:-/var/log/kwbackup.log}"
exit 1
fi
}
Оно учитывает только сам факт запуска скрипта, но не отслеживает командную строку.
2022/09/06 03:54:19 NOTICE: Swift container RPG_RPGWORLD_MAIN path DB//DAILY: Odd name received "DB/DAILY/rpgworld_2022-09-03-19-31-54.sql.rar"
2022-09-06 03:54:23 INFO : There was nothing to transfer
по видимому, возникает в sub_backupDatabase()
, когда передается 2 параметр (CONTAINER_SUBPATH) - пустая строка.
Тогда идет вызов:
rclone copy --config ... "${TEMP_PATH}"/"${FILENAME_ARCHIVE}" ${RCLONE_PROVIDER}:${CLOUD_CONTAINER_DB}/${CONTAINER_SU
BPATH}/WEEKLY
Появляется путь вида //
, который вызывает ошибку.
Переписать в скрипте отстройку target-path
Добавить --self-update
ключ, скачивающий новую версию скрипта на то же место.
Настройки брать из конфига.
Размеры временных файлов записывать в PROCESS_FILE_FLAG
Успешность задач RCLONE писать туда же
Результирующий контент файла отправлять в телеграм (возможно, без наносекунд)
Строка
-----===== Backupping rpgworld_forums =====-----
лишняя если нет ключа --verbose
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.