summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bruce Park <r@robru.ca>2013-11-13 09:16:31 -0800
committerRobert Bruce Park <r@robru.ca>2013-11-13 09:16:31 -0800
commit72df5bf33ee5fd62b3f248ed16e299aa46516b5f (patch)
tree5708cd525ca936af002be44b04f39a9eaf987827
parentfe0bfde041ded29812a56228f3b4f4c96178462b (diff)
parent8a2e91813b0ccd8989870a87e36ec3b609942afa (diff)
Rebase on master.
-rw-r--r--README.md4
-rw-r--r--rsync_tmbackup.sh28
2 files changed, 13 insertions, 19 deletions
diff --git a/README.md b/README.md
index 6bbb554..b4417a6 100644
--- a/README.md
+++ b/README.md
@@ -40,12 +40,10 @@ An optional exclude file can be provided as a third parameter. It should be comp
# TODO
-* Check if there's enough space in the destination before doing the backup. Also automatically delete old backups.
+* Minor changes (see TODO comments in the source).
# LICENSE
[MIT](http://opensource.org/licenses/MIT)
-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/laurent22/rsync-time-backup/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
-
diff --git a/rsync_tmbackup.sh b/rsync_tmbackup.sh
index a3a42fa..a2c8bd7 100644
--- a/rsync_tmbackup.sh
+++ b/rsync_tmbackup.sh
@@ -78,13 +78,12 @@ fi
# Setup additional variables
# -----------------------------------------------------------------------------
-BACKUP_FOLDER_PATTERN="^[[:digit:]][[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]]-[[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]$"
+BACKUP_FOLDER_PATTERN=????-??-??-??????
NOW=$(date +"%Y-%m-%d-%H%M%S")
PROFILE_FOLDER="$HOME/.rsync_tmbackup"
LOG_FILE="$PROFILE_FOLDER/$NOW.log"
DEST=$DEST_FOLDER/$NOW
-LAST_TIME=$(ls -1 -- "$DEST_FOLDER" | grep "$BACKUP_FOLDER_PATTERN" | tail -n 1)
-PREVIOUS_DEST=$DEST_FOLDER/$LAST_TIME
+PREVIOUS_DEST=$(find "$DEST_FOLDER" -type d -name "$BACKUP_FOLDER_PATTERN" -prune | sort | tail -n 1)
INPROGRESS_FILE=$DEST_FOLDER/backup.inprogress
KEEP_ALL_DATE=$(date -d '-1 day' +%s)
KEEP_DAILIES_DATE=$(date -d '-1 month' +%s)
@@ -103,19 +102,18 @@ fi
# -----------------------------------------------------------------------------
if [ -f "$INPROGRESS_FILE" ]; then
- if [ "$LAST_TIME" != "" ]; then
+ if [ "$PREVIOUS_DEST" != "" ]; then
# - Last backup is moved to current backup folder so that it can be resumed.
# - 2nd to last backup becomes last backup.
fn_log_info "$INPROGRESS_FILE already exists - the previous backup failed or was interrupted. Backup will resume from there."
- LINE_COUNT=$(ls -1 -- "$DEST_FOLDER" | grep "$BACKUP_FOLDER_PATTERN" | tail -n 2 | wc -l)
+ LINE_COUNT=$(find "$DEST_FOLDER" -type d -name "$BACKUP_FOLDER_PATTERN" -prune | sort | tail -n 2 | wc -l)
mv -- "$PREVIOUS_DEST" "$DEST"
if [ "$LINE_COUNT" -gt 1 ]; then
- SECOND_LAST_TIME=$(ls -1 -- "$DEST_FOLDER" | grep "$BACKUP_FOLDER_PATTERN" | tail -n 2 | head -n 1)
- LAST_TIME=$SECOND_LAST_TIME
+ PREVIOUS_PREVIOUS_DEST=$(find "$DEST_FOLDER" -type d -name "$BACKUP_FOLDER_PATTERN" -prune | sort | tail -n 2 | head -n 1)
+ PREVIOUS_DEST=$PREVIOUS_PREVIOUS_DEST
else
- LAST_TIME=""
+ PREVIOUS_DEST=""
fi
- PREVIOUS_DEST=$DEST_FOLDER/$LAST_TIME
fi
fi
@@ -127,7 +125,7 @@ while [ "1" ]; do
# -----------------------------------------------------------------------------
LINK_DEST_OPTION=""
- if [ "$LAST_TIME" == "" ]; then
+ if [ "$PREVIOUS_DEST" == "" ]; then
fn_log_info "No previous backup - creating new one."
else
# If the path is relative, it needs to be relative to the destination. To keep
@@ -233,20 +231,18 @@ while [ "1" ]; do
fn_log_warn "No space left on device - removing oldest backup and resuming."
- BACKUP_FOLDER_COUNT=$(ls -1 $DEST_FOLDER | grep "$BACKUP_FOLDER_PATTERN" | wc -l)
+ BACKUP_FOLDER_COUNT=$(find "$DEST_FOLDER" -type d -name "$BACKUP_FOLDER_PATTERN" -prune | wc -l)
if [ "$BACKUP_FOLDER_COUNT" -lt "2" ]; then
fn_log_error "No space left on device, and no old backup to delete."
exit 1
fi
- OLDEST_BACKUP=$(ls -1 $DEST_FOLDER | grep "$BACKUP_FOLDER_PATTERN" | head -n 1)
- if [ "$OLDEST_BACKUP" == "" ]; then
+ OLD_BACKUP_PATH=$(find "$DEST_FOLDER" -type d -name "$BACKUP_FOLDER_PATTERN" -prune | head -n 1)
+ if [ "$OLD_BACKUP_PATH" == "" ]; then
fn_log_error "No space left on device, and cannot get path to oldest backup to delete."
exit 1
fi
-
- OLD_BACKUP_PATH="$DEST_FOLDER/$OLDEST_BACKUP"
-
+
# Double-check that we're on a backup destination to be completely sure we're deleting the right folder
OLD_BACKUP_PARENT_PATH=$(dirname -- "$OLD_BACKUP_PATH")
if [ "$(fn_is_backup_destination $OLD_BACKUP_PARENT_PATH)" != "1" ]; then