Skip to content

Commit 7a90a83

Browse files
authored
Update restore_logs.sh: use local tar file if exists
1 parent d8c9eae commit 7a90a83

File tree

1 file changed

+45
-21
lines changed

1 file changed

+45
-21
lines changed

scripts/selfhost/restore_logs.sh

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ INTERACTIVE CONTROLS:
4242
Enter Select file
4343
q Quit
4444
45+
NOTE:
46+
If a local backup file already exists, it will be used instead of downloading.
47+
To use a fresh copy, delete the local file first.
48+
4549
EXAMPLES:
4650
export BENDSQL_DSN="http://username:password@localhost:8000/database"
4751
@@ -50,6 +54,9 @@ EXAMPLES:
5054
5155
# Quick: Restore specific date
5256
$0 --stage my_backup_stage 20250109
57+
58+
# To use fresh copy, delete local file first
59+
rm data_2025-01-09.tar.gz && $0 --stage my_backup_stage 20250109
5360
EOF
5461
}
5562

@@ -298,29 +305,45 @@ else
298305
log "Source stage: @${STAGE}, Target file: ${TAR_FILE}"
299306
fi
300307

301-
# Step 1: Generate download URL
302-
log_step "1" "6" "Generating presigned download URL for @${STAGE}/${TAR_FILE}"
303-
DOWNLOAD_SQL="PRESIGN DOWNLOAD @${STAGE}/${TAR_FILE}"
304-
DOWNLOAD_URL=$(bendsql --dsn "${DSN}" --query="${DOWNLOAD_SQL}" | awk '{print $3}')
308+
# Check if local file exists
309+
LOCAL_TAR_FILE=$(basename "$TAR_FILE")
310+
USE_LOCAL_FILE=false
305311

306-
if [[ -z "$DOWNLOAD_URL" ]]; then
307-
log_error "Failed to generate download URL for ${TAR_FILE}"
308-
exit 1
312+
if [[ -f "${LOCAL_TAR_FILE}" && -s "${LOCAL_TAR_FILE}" ]]; then
313+
FILE_SIZE=$(du -h "${LOCAL_TAR_FILE}" | cut -f1)
314+
log "Local file ${LOCAL_TAR_FILE} exists (${FILE_SIZE}) - using local copy"
315+
USE_LOCAL_FILE=true
309316
fi
310-
log "Download URL generated successfully"
311317

312-
# Step 2: Download backup
313-
log_step "2" "6" "Downloading ${TAR_FILE} from stage @${STAGE}"
314-
LOCAL_TAR_FILE=$(basename "$TAR_FILE")
315-
curl -s -o "${LOCAL_TAR_FILE}" "${DOWNLOAD_URL}"
318+
# Step 1 & 2: Download or use local file
319+
if [[ "$USE_LOCAL_FILE" = true ]]; then
320+
log_step "1" "6" "Using existing local file: ${LOCAL_TAR_FILE}"
321+
FILE_SIZE=$(du -h "${LOCAL_TAR_FILE}" | cut -f1)
322+
log "Using local file ${LOCAL_TAR_FILE} (${FILE_SIZE})"
323+
else
324+
# Step 1: Generate download URL
325+
log_step "1" "6" "Generating presigned download URL for @${STAGE}/${TAR_FILE}"
326+
DOWNLOAD_SQL="PRESIGN DOWNLOAD @${STAGE}/${TAR_FILE}"
327+
DOWNLOAD_URL=$(bendsql --dsn "${DSN}" --query="${DOWNLOAD_SQL}" | awk '{print $3}')
316328

317-
if [[ ! -f "${LOCAL_TAR_FILE}" ]]; then
318-
log_error "Failed to download ${TAR_FILE}"
319-
exit 1
320-
fi
329+
if [[ -z "$DOWNLOAD_URL" ]]; then
330+
log_error "Failed to generate download URL for ${TAR_FILE}"
331+
exit 1
332+
fi
333+
log "Download URL generated successfully"
321334

322-
FILE_SIZE=$(du -h "${LOCAL_TAR_FILE}" | cut -f1)
323-
log "Downloaded ${TAR_FILE} successfully (${FILE_SIZE})"
335+
# Step 2: Download backup
336+
log_step "2" "6" "Downloading ${TAR_FILE} from stage @${STAGE}"
337+
curl -s -o "${LOCAL_TAR_FILE}" "${DOWNLOAD_URL}"
338+
339+
if [[ ! -f "${LOCAL_TAR_FILE}" ]]; then
340+
log_error "Failed to download ${TAR_FILE}"
341+
exit 1
342+
fi
343+
344+
FILE_SIZE=$(du -h "${LOCAL_TAR_FILE}" | cut -f1)
345+
log "Downloaded ${TAR_FILE} successfully (${FILE_SIZE})"
346+
fi
324347

325348
# Step 3: Extract archive
326349
log_step "3" "6" "Extracting ${LOCAL_TAR_FILE} to temporary directory"
@@ -396,9 +419,10 @@ done
396419
echo # New line after progress
397420
log "Upload completed: ${UPLOAD_SUCCESS} successful, ${UPLOAD_FAILED} failed"
398421

399-
# Cleanup
400-
log "Cleaning up: removing ${TEMP_DIR} and ${LOCAL_TAR_FILE}"
401-
rm -rf "${TEMP_DIR}" "${LOCAL_TAR_FILE}"
422+
# Cleanup temporary directory (keep local tar file for reuse)
423+
log "Cleaning up: removing temporary directory ${TEMP_DIR}"
424+
rm -rf "${TEMP_DIR}"
425+
log "Local file ${LOCAL_TAR_FILE} retained for future use"
402426

403427
# Step 6: Restore database
404428
RESTORE_DATABASE="${STAGE}_${YEAR}_${MONTH}_${DAY}"

0 commit comments

Comments
 (0)