diff --git a/Dockerfile b/Dockerfile index 46e61d9..d6163c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ ENV UID 100 ENV GID 100 ENV CRONFILE /etc/crontabs/root ENV LOGFILE /app/log/backup.log +ENV DELETE_AFTER 0 COPY entrypoint.sh /usr/local/bin/entrypoint.sh COPY backup.sh /app/ diff --git a/README.md b/README.md index ece8cd8..df88114 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ Example for hourly backups docker run -d --restart=always --name bitwarden_backup --volumes-from=bitwarden -e CRON_TIME="0 * * * *" bruceforce/bw_backup ``` +Example for backups that delete after 30 days +```sh +docker run -d --restart=always --name bitwarden_backup --volumes-from=bitwarden -e DELETE_AFTER=30 bruceforce/bw_backup +``` + ### Manual Backups You can use the crontab of your host to schedule the backup and the container will only be running during the backup process. @@ -45,6 +50,7 @@ docker run --rm --volumes-from=bitwarden -v /tmp/myBackup:/myBackup --entrypoint | GID | Group ID to run the cron job with | | LOGFILE | Path to the logfile *inside* the container | | CRONFILE | Path to the cron file *inside* the container | +| DELETE_AFTER | Delete old backups after X many days | ## Common erros ### Wrong permissions diff --git a/backup.sh b/backup.sh index dff1092..053b164 100644 --- a/backup.sh +++ b/backup.sh @@ -7,13 +7,20 @@ fi if [ $TIMESTAMP = true ] then - BACKUP_FILE="$(echo "$BACKUP_FILE")_$(date "+%F-%H%M%S")" + FINAL_BACKUP_FILE="$(echo "$BACKUP_FILE")_$(date "+%F-%H%M%S")" +else + FINAL_BACKUP_FILE=$BACKUP_FILE fi -/usr/bin/sqlite3 $DB_FILE ".backup $BACKUP_FILE" +/usr/bin/sqlite3 $DB_FILE ".backup $FINAL_BACKUP_FILE" if [ $? -eq 0 ] then echo "$(date "+%F %T") - Backup successfull" else echo "$(date "+%F %T") - Backup unsuccessfull" fi + +if [ ! -z $DELETE_AFTER ] && [ $DELETE_AFTER -gt 0 ] +then + find $(dirname "$BACKUP_FILE") -name "$(basename "$BACKUP_FILE")*" -type f -mtime +$DELETE_AFTER -exec rm -f {} \; -exec echo "Deleted {} after $DELETE_AFTER days" \; +fi \ No newline at end of file