Zdravim Vas, potrebujem pomoc so zalohovanim mysql databaz. Nasielk som jeden shell script n zalohovanie mysql databaz Použitie CronJob na automatické zálohovanie súborov MySQL, je to uz velmi stare vlakno a tak mi s tym zrejme nikto nepomoze. Spustil som ho a funguje, zalohuje vsetky najdene mysql databazy do urceneho priecinka a posle mail vypis zalohovnych databaz, akurat ich zalohuje osobitne a tym padom sa v adresari stracam pri viacerych zalohach. Jednoducho povedane, vela suborov v backup adresari. Ako mam upravit tento skript aby:(jedna z tychto moznosti) 1. mi vytvoril .tar.gz archiv kde budu zhrnute a spakovane komplet vsetky databazy v jednom .tar.gz subore vo formate napr. /bcup/mysql_bup/$date$time$mysql_db.tar.gz 2. alebo pri kazdej zalohe vytvori v adresári napr. /bcup/$date$time$mysql$dir/mysqldb.sql.gz,mysqldb2.sql.gz,mysqldb3sql.gz
Za kazdu pomoc dakujem.

Zdravim Ten CHATGPT na nieco bude. Pomohol mi upravit skript a funguje to ako som chcel tu je skript.
#!/bin/bash # Premenné HOST=`hostname -s` DELETE_DAILY_BACKUPS_OLDER_THAN_DAYS=5 DELETE_WEEKLY_BACKUPS_OLDER_THAN_WEEKS=4 syslogtag=MySQL-Backup DEST="/bcs/mysql/" DBS="$(mysql -u root -Bse 'show databases' | egrep -v '^Database$|hold$' | grep -v 'performance_schema\|information_schema')" DATE=$(date +'%F') # Formát: YYYY-MM-DD WEEK=$(date +'%Y-W%U') # Formát: YYYY-WW SEND_EMAIL=1 NOTIFY_EMAIL="admin@example.com" NOTIFY_SUBJECT="MariaDB Backup Notification on ${HOST}" # Typ zálohy (denná alebo týždenná) if [[ $(date +%u) -eq 7 ]]; then # Nedeľa = týždenná záloha BACKUP_TYPE="weekly" DEST_DIR="${DEST}${BACKUP_TYPE}/backup_${WEEK}/" DELETE_OLDER_THAN=$DELETE_WEEKLY_BACKUPS_OLDER_THAN_WEEKS else # Iný deň = denná záloha BACKUP_TYPE="daily" DEST_DIR="${DEST}${BACKUP_TYPE}/backup_${DATE}/" DELETE_OLDER_THAN=$DELETE_DAILY_BACKUPS_OLDER_THAN_DAYS fi # Vytvor adresár pre aktuálnu zálohu mkdir -p $DEST_DIR # Zálohovanie databáz for db in $DBS; do GZ_FILENAME="${DEST_DIR}${db}.sql.gz" mysqldump -u root --quote-names --opt --single-transaction --quick $db | gzip -cf > $GZ_FILENAME if [[ $? -ne 0 ]]; then echo "Error while backing up database: $db" else echo "Database $db backed up to $GZ_FILENAME" fi done echo "Backups stored in $DEST_DIR" # Odstránenie starých záloh if [[ $BACKUP_TYPE == "daily" ]]; then find "${DEST}daily/" -maxdepth 1 -type d -mtime +$DELETE_DAILY_BACKUPS_OLDER_THAN_DAYS -exec rm -rf {} \; echo "Old daily backups deleted." else find "${DEST}weekly/" -maxdepth 1 -type d -mtime +$(($DELETE_WEEKLY_BACKUPS_OLDER_THAN_WEEKS * 7)) -exec rm -rf {} \; echo "Old weekly backups deleted." fi # Odoslanie e-mailu if [ $SEND_EMAIL -eq 1 ]; then TMP_MSG_FILE="/tmp/mysql_backup_${RANDOM}.msg" echo "MySQL Backup completed on ${DATE}." > $TMP_MSG_FILE echo "Backup type: $BACKUP_TYPE" >> $TMP_MSG_FILE echo "Backups stored in: $DEST_DIR" >> $TMP_MSG_FILE mail -s "$NOTIFY_SUBJECT" "$NOTIFY_EMAIL" < $TMP_MSG_FILE rm -f $TMP_MSG_FILE fi exit 0