backup/files.sh

62 lines
1.7 KiB
Bash
Raw Normal View History

2024-07-11 21:18:02 +05:00
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo -e "\033[31mThis script requires superuser rights.\033[0m"
exit 0
fi
trap 'echo -e "\033[31mSomething went wrong\033[0m"; exit 1' EXIT
set -e
export DEBIAN_FRONTEND=noninteractive
BACKUP_LIST="./backups.list"
BACKUP_DIR="/backups/files"
# Checking the presence of a backups.list
if [ ! -f "$BACKUP_LIST" ]; then
echo "List file not found: $BACKUP_LIST"
exit 1
fi
# Creating main directories (if not created)
mkdir -p "$BACKUP_DIR"
# Reading a list of directories for backup
while IFS= read -r DIR; do
# Ignore lines starting with #
if [[ "$DIR" =~ ^#.* ]]; then
continue
fi
# Let's make sure the line is not empty
if [ -n "$DIR" ]; then
# Let's make sure the directory exists
if [ ! -d "$DIR" ]; then
echo "Directory not found: $DIR"
continue
fi
# Formation of the archive name
BASENAME=$(basename "$DIR")
TIMESTAMP=$(date +%Y%m%d%H%M%S)
ARCHIVE_NAME="${BASENAME}_${TIMESTAMP}.tar.gz"
# Creating a directory to store backups of this folder
BACKUP_FOLDER="${BACKUP_DIR}/${BASENAME}"
mkdir -p "$BACKUP_FOLDER"
# Creating an archive
tar -czf "${BACKUP_FOLDER}/${ARCHIVE_NAME}" -C "$(dirname "$DIR")" "$BASENAME"
# Checking the success of the backup
if [ $? -eq 0 ]; then
echo "Backup successfully created: ${BACKUP_FOLDER}/${ARCHIVE_NAME}"
else
echo "Error when creating a backup: ${BACKUP_FOLDER}/${ARCHIVE_NAME}"
fi
fi
done < "$BACKUP_LIST"
trap - EXIT
echo "The backup of all specified directories has been completed successfully."