Riyyi
5 years ago
1 changed files with 94 additions and 0 deletions
@ -0,0 +1,94 @@
|
||||
#!/bin/sh |
||||
|
||||
BACKUP_COUNT_MAX=5 |
||||
|
||||
# Backup individual files |
||||
FILES=" |
||||
/etc/netctl/eth0-dhcp |
||||
" |
||||
|
||||
# Backup all files from folder |
||||
FOLDER_FILES=" |
||||
/etc/netctl |
||||
" |
||||
|
||||
# Backup complete folder (recursively) |
||||
FOLDERS=" |
||||
/etc/netctl |
||||
" |
||||
|
||||
# Database credentials |
||||
USER="username" |
||||
PASSWORD="password" |
||||
HOST="127.0.0.1" |
||||
|
||||
# Database names |
||||
DATABASES=" |
||||
example |
||||
example2 |
||||
" |
||||
|
||||
# ------------------------------------ # |
||||
|
||||
### Remove / create backup directories ### |
||||
|
||||
if [ "$(dirname "$0")" != "." ]; then |
||||
echo "Please run this script from the directory it resides." |
||||
exit 1 |
||||
fi |
||||
|
||||
# All directories |
||||
BACKUP_FILES="$(find . -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort -r)" |
||||
|
||||
# Current amount of backups |
||||
BACKUP_COUNT=$(echo "$BACKUP_FILES" | wc -l) |
||||
|
||||
# Remove the oldest backup folders |
||||
if [ "$BACKUP_COUNT" -ge $BACKUP_COUNT_MAX ]; then |
||||
BACKUPS_OLDEST="$(echo "$BACKUP_FILES" | sed -nE " |
||||
1,${BACKUP_COUNT_MAX}d; |
||||
s/^([0-9]{2}|-|_|:){12}$/\0/p |
||||
")" |
||||
|
||||
printf "%s\n%s\n" "Removing directories:" "$BACKUPS_OLDEST" |
||||
rm -rf $BACKUPS_OLDEST |
||||
fi |
||||
|
||||
# Execution location |
||||
DIR="$(pwd)" |
||||
|
||||
# Create new backup folder |
||||
BACKUP_NAME="$(date +%Y-%m-%d_%H:%M:%S)" |
||||
mkdir "$DIR/$BACKUP_NAME" |
||||
|
||||
### Start backup procedure ### |
||||
|
||||
# Individual files |
||||
for FILE in $FILES; do |
||||
mkdir -p "$DIR/$BACKUP_NAME/$(dirname "$FILE")" |
||||
cp "$FILE" "$DIR/$BACKUP_NAME/$FILE" |
||||
done |
||||
|
||||
# All files inside folder |
||||
for FOLDER_FILE in $FOLDER_FILES; do |
||||
mkdir -p "$DIR/$BACKUP_NAME/$FOLDER_FILE" |
||||
|
||||
# Usind find -> read ensures filename space support |
||||
find "$FOLDER_FILE" -maxdepth 1 -type f | while read -r FILE; do |
||||
cp "$FILE" "$DIR/$BACKUP_NAME/$FILE" |
||||
done |
||||
done |
||||
|
||||
# Complete folder |
||||
for FOLDER in $FOLDERS; do |
||||
mkdir -p "$DIR/$BACKUP_NAME/$FOLDER" |
||||
cp -r "$FOLDER" "$DIR/$BACKUP_NAME/$(dirname "$FOLDER")" |
||||
done |
||||
|
||||
# Set default file permissions |
||||
umask 177 |
||||
# MYSQL Dump |
||||
for DATABASE in $DATABASES; do |
||||
mysqldump --user=$USER --password=$PASSWORD --host=$HOST $DATABASE \ |
||||
> "$DIR/$BACKUP_NAME/$DATABASE-$BACKUP_NAME.sql" |
||||
done |
Loading…
Reference in new issue