Browse Source

Add feature: Delete Googole Drive's remote file

Teddysun 9 years ago
parent
commit
aec772a574
1 changed files with 20 additions and 2 deletions
  1. 20 2
      backup.sh

+ 20 - 2
backup.sh

@@ -41,6 +41,12 @@ MYSQL_DATABASE_NAME[0]=""
 # if you want not to be backed up, leave it blank.
 BACKUP[0]=""
 
+# Number of days to store daily local backups
+LOCALAGEDAILIES="7"
+
+# Delete Googole Drive's remote file flag(true:delete, false:not delete)
+DELETE_REMOTE_FILE_FLG=true
+
 # Date & Time
 BACKUPDATE=$(date +%Y%m%d%H%M%S)
 
@@ -50,8 +56,6 @@ TARFILE="${LOCALDIR}""$(hostname)"_"${BACKUPDATE}".tgz
 # Backup MySQL dump file name
 SQLFILE="${TEMPDIR}mysql_${BACKUPDATE}.sql"
 
-# Number of days to store daily local backups
-LOCALAGEDAILIES="7"
 ### END OF CONFIG ###
 
 
@@ -173,9 +177,11 @@ fi
 # For i386: wget -O /usr/bin/gdrive http://dl.teddysun.com/files/gdrive-linux-386; chmod +x /usr/bin/gdrive
 
 if [ ! "$(command -v "gdrive")" ]; then
+    GDRIVE_COMMAND=false
     log "gdrive is not installed"
     log "File transfer skipped. please install it and try again"
 else
+    GDRIVE_COMMAND=true
     log "Tranferring backup file to Google Drive"
     if ${ENCRYPTFLG}; then
         gdrive upload --no-progress ${TARFILE}.enc >> ${LOGFILE}
@@ -205,6 +211,17 @@ getFileDate() {
     return 1
 }
 
+deleteRemoteFile() {
+    local FILENAME=$1
+    if ${DELETE_REMOTE_FILE_FLG} && ${GDRIVE_COMMAND}; then
+        local FILEID=$(gdrive list -q "name = '${FILENAME}'" --no-header | awk '{print $1}')
+        if [ -n ${FILEID} ]; then
+            gdrive delete ${FILEID} >> ${LOGFILE}
+            log "Google Drive's old backup file name:${FILENAME} has been deleted"
+        fi
+    fi
+}
+
 AGEDAILIES=${LOCALAGEDAILIES}
 DAY=$(date +%d)
 MONTH=$(date +%m)
@@ -227,6 +244,7 @@ do
         if [[ ${FILEAGE} -gt ${AGEDAILIES} ]]; then
             rm -f ${f}
             log "Old backup file name:${f} has been deleted"
+            deleteRemoteFile ${f}
         fi
     fi
 done