#!/bin/bash
TODAY=$(date -I)
BACKUP_ROOT='/data/backup'
# 1. 일주일 전 파일 삭제
rm -rf ${BACKUP_ROOT}/$(date --date '-7days' -I)
# 2. 백업할 디렉토리 생성
mkdir ${BACKUP_ROOT}/${TODAY}
cd ${BACKUP_ROOT}/${TODAY}
mkdir config_dir
mkdir database
mkdir home
mkdir mail
mkdir websource
# 3. config 백업
cd ${BACKUP_ROOT}/${TODAY}/config_dir
tar -I pigz -cvf dovecot.tar.gz /etc/dovecot*
tar -I pigz -cvf letsencrypt.tar.gz /etc/letsencrypt*
tar -I pigz -cvf mariadb.tar.gz /etc/my.cnf*
tar -I pigz -cvf nginx.tar.gz /etc/nginx
tar -I pigz -cvf opendkim.tar.gz /etc/opendkim*
tar -I pigz -cvf php.tar.gz /etc/php*
tar -I pigz -cvf sendmail.tar.gz /etc/mail*
# 4. database 백업
cd ${BACKUP_ROOT}/${TODAY}/database
mysqldump -uroot -p디비패스워드 -A > all_databases.sql > all_databases.sql
mysqldump -uroot -p디비패스워드 rhymix > rhymix.sql
gzip *.sql
mkdir bin_log
rsync -avProg /data/mariadb/db_data/mariadb-bin* bin_log/
# 5. 계정 백업
cd ${BACKUP_ROOT}/${TODAY}/home
for HOME_LISTS in $(ls /home)
do
tar -I pigz -cvf ${HOME_LISTS}.tar.gz /home/${HOME_LISTS}
done
tar -I pigz -cvf root.tar.gz /root
# 6. 메일 백업
cd ${BACKUP_ROOT}/${TODAY}/mail
for MAIL_LISTS in $(ls /var/spool/mail)
do
tar -I pigz -cvf ${MAIL_LISTS}.tar.gz /var/spool/mail/${MAIL_LISTS}
done
# 7. 웹소스 백업
cd ${BACKUP_ROOT}/${TODAY}/websource
for WEBSOURCE_LISTS in $(ls /data/nginx | grep -v '^log$')
do
tar -I pigz -cvf ${WEBSOURCE_LISTS}.tar.gz /data/nginx/${WEBSOURCE_LISTS}
done
# 8. 백업 파일 오브젝트 스토리지로 이동
oci os object bulk-upload --bucket-name 버킷명 --src-dir /data/backup --no-overwrite