Skip to content

Instantly share code, notes, and snippets.

@avtobys
Created November 30, 2022 19:09
Show Gist options
  • Save avtobys/6324efcf727fc0d023f129e5a62ee2a0 to your computer and use it in GitHub Desktop.
Save avtobys/6324efcf727fc0d023f129e5a62ee2a0 to your computer and use it in GitHub Desktop.
bash backuper
#!/usr/bin/env bash
PATH_TO_BACKUPS=/backup
PATH_FROM_BACKUPS=("/home/path_1" "/home/path_2")
DATABASES=("db_name_1" "db_name_2")
DB_USER="root"
DB_PASSWORD=""
DELETE_AFTER_DAYS=3
if [ ! -d $PATH_TO_BACKUPS ]; then
if ! mkdir $PATH_TO_BACKUPS; then
exit $?
fi
fi
cd $PATH_TO_BACKUPS || exit $?
if [ ! -w $PATH_TO_BACKUPS ]; then
echo "directory $PATH_TO_BACKUPS exists but not writeble"
exit 1
fi
find $PATH_TO_BACKUPS -type f -name "*.gz" -mtime +"$DELETE_AFTER_DAYS" -exec rm -rf {} \;
for path in "${PATH_FROM_BACKUPS[@]}"; do
basename=$(basename "$path" || exit $?)
time="$(date '+%Y-%m-%d-%H-%M-%S')"
tar -czf "files_${basename}_${time}.tar.gz" -C "$path" ./ || exit $?
done
for db_name in "${DATABASES[@]}"; do
time="$(date '+%Y-%m-%d-%H-%M-%S')"
if [[ -n "${DB_PASSWORD}" ]]; then
mysqldump -u"$DB_USER" -p"$DB_PASSWORD" "$db_name" | gzip >"db_${db_name}_${time}.gz"
else
mysqldump -u"$DB_USER" "$db_name" | gzip >"db_${db_name}_${time}.gz"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment