From 8c0235ebf2ea51f95a23ce544ca45e83e93e2646 Mon Sep 17 00:00:00 2001 From: Jose Henrique Date: Sat, 26 Jul 2025 21:55:47 -0300 Subject: [PATCH] updating script --- nas-gdrive-backup.sh | 131 +++++++++++++++++++++++-------------------- 1 file changed, 71 insertions(+), 60 deletions(-) diff --git a/nas-gdrive-backup.sh b/nas-gdrive-backup.sh index 09433a6..d796fa1 100644 --- a/nas-gdrive-backup.sh +++ b/nas-gdrive-backup.sh @@ -33,27 +33,6 @@ clean_up() { trap clean_up EXIT -# Check if 7z is installed -if ! which 7z; then - log "ERROR: 7z is not installed" - exit 1 -fi - -# Check if rclone is installed -if ! which rclone; then - log "ERROR: rclone is not installed" - exit 1 -fi - -# Create meta directory if it doesn't exist -if [ ! -d "$META_DIR" ]; then - log "Creating meta directory: $META_DIR" - mkdir -p "$META_DIR" -fi - -# Fix permissions for the meta directory (777 recursively) -chmod -R 777 "$META_DIR" - create_7z() { local folder="$1" local archive_name="$2" @@ -81,57 +60,86 @@ upload_to_gdrive() { fi } -# Loop through each folder in the backup source -for folder in "$BACKUP_SOURCE"/*; do - if [ -d "$folder" ]; then - log "Processing folder: $folder" - # Get the sha256 checksum of the folder - CHECKSUM=$(find "$folder" -type f -exec sha256sum {} + | sha256sum | awk '{print $1}') - META_FILE="$META_DIR/$(basename "$folder").sha256" - # Check if the checksum file exists - if [ -f "$META_FILE" ]; then - # Read the previous checksum from the file - PREV_CHECKSUM=$(cat "$META_FILE") - # Compare the checksums - if [ "$CHECKSUM" != "$PREV_CHECKSUM" ]; then - log "Changes detected in $folder - creating new archive" +main() { + # Check if 7z is installed + if ! which 7z > /dev/null; then + log "ERROR: 7z is not installed" + exit 1 + fi + + # Check if rclone is installed + if ! which rclone > /dev/null; then + log "ERROR: rclone is not installed" + exit 1 + fi + + # Create meta directory if it doesn't exist + if [ ! -d "$META_DIR" ]; then + log "Creating meta directory: $META_DIR" + mkdir -p "$META_DIR" + fi + + # Fix permissions for the meta directory (777 recursively) + chmod -R 777 "$META_DIR" + + # Loop through each folder in the backup source + for folder in "$BACKUP_SOURCE"/*; do + if [ -d "$folder" ]; then + log "Processing folder: $folder" + # Get the sha256 checksum of the folder + CHECKSUM=$(find "$folder" -type f -exec sha256sum {} + | sha256sum | awk '{print $1}') + META_FILE="$META_DIR/$(basename "$folder").sha256" + # Check if the checksum file exists + if [ -f "$META_FILE" ]; then + # Read the previous checksum from the file + PREV_CHECKSUM=$(cat "$META_FILE") + # Compare the checksums + if [ "$CHECKSUM" != "$PREV_CHECKSUM" ]; then + log "Changes detected in $folder - creating new archive" + + create_7z "$folder" "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" + upload_to_gdrive "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" + + # Update the checksum file + echo "$CHECKSUM" > "$META_FILE" + + # Remove the temporary archive file + log "Removing temporary archive file" + rm "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" + else + log "No changes detected in $folder" + fi + else + log "No previous checksum found for $folder - creating new archive" create_7z "$folder" "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" upload_to_gdrive "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" - - # Update the checksum file - echo "$CHECKSUM" > "$META_FILE" + # Create a checksum file for the folder + echo "$CHECKSUM" > "$META_FILE" + # Remove the temporary archive file log "Removing temporary archive file" rm "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" - else - log "No changes detected in $folder" fi else - log "No previous checksum found for $folder - creating new archive" - - create_7z "$folder" "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" - upload_to_gdrive "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" - - # Create a checksum file for the folder - echo "$CHECKSUM" > "$META_FILE" - - # Remove the temporary archive file - log "Removing temporary archive file" - rm "$TMP_DIR/$(basename "$folder")_$ARCHIVE_NAME" + log "Skipping $folder, not a directory" fi - else - log "Skipping $folder, not a directory" - fi - log "" -done + log "" + done -log "Backup process completed successfully" + # Fix permissions for the meta directory (777 recursively) + chmod -R 777 "$META_DIR" -# Exit with success -exit 0 + log "Backup process completed successfully" + # Exit with success + exit 0 +} + +########################### +### Installation script ### +########################### # Function to install a dependency if not already installed install_dependency() { local package="$1" @@ -255,4 +263,7 @@ install_script() { # Exit with success exit 0 -} \ No newline at end of file +} + +main "$@" +exit 0 \ No newline at end of file