Files
ethereum-rpc-docker/list-peer-backups.sh
2025-12-21 18:37:14 +07:00

91 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# Script to list available peer backups
# Usage: ./list-peer-backups.sh [backup-directory] [filter]
BASEPATH="$(dirname "$0")"
BACKUP_DIR="${1:-$BASEPATH/peer-backups}"
FILTER="${2:-}"
if [ ! -d "$BACKUP_DIR" ]; then
echo "Backup directory does not exist: $BACKUP_DIR"
echo "Run backup-peers.sh first to create backups"
exit 1
fi
# Count files
json_count=$(find "$BACKUP_DIR" -name "*.json" -type f | wc -l | tr -d ' ')
txt_count=$(find "$BACKUP_DIR" -name "*.txt" -type f | wc -l | tr -d ' ')
if [ "$json_count" -eq 0 ] && [ "$txt_count" -eq 0 ]; then
echo "No backups found in $BACKUP_DIR"
exit 0
fi
echo "Peer backups in: $BACKUP_DIR"
echo "Total backups: $json_count JSON, $txt_count TXT"
echo ""
# List JSON backups with details
if [ "$json_count" -gt 0 ]; then
echo "JSON Backups (with metadata):"
echo "=========================================="
for backup_file in $(find "$BACKUP_DIR" -name "*.json" -type f | sort -r); do
if [ -n "$FILTER" ] && ! echo "$backup_file" | grep -qi "$FILTER"; then
continue
fi
if command -v jq &> /dev/null; then
compose_file=$(jq -r '.compose_file // "unknown"' "$backup_file" 2>/dev/null)
rpc_path=$(jq -r '.rpc_path // "unknown"' "$backup_file" 2>/dev/null)
timestamp=$(jq -r '.timestamp // "unknown"' "$backup_file" 2>/dev/null)
peer_count=$(jq -r '.peer_count // 0' "$backup_file" 2>/dev/null)
rpc_url=$(jq -r '.rpc_url // "unknown"' "$backup_file" 2>/dev/null)
file_size=$(du -h "$backup_file" | cut -f1)
file_date=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$backup_file" 2>/dev/null || stat -c "%y" "$backup_file" 2>/dev/null | cut -d'.' -f1)
echo "File: $(basename "$backup_file")"
echo " Compose: $compose_file"
echo " Path: $rpc_path"
echo " URL: $rpc_url"
echo " Peers: $peer_count"
echo " Timestamp: $timestamp"
echo " Size: $file_size"
echo " Date: $file_date"
echo ""
else
# Fallback if jq is not available
file_size=$(du -h "$backup_file" | cut -f1)
file_date=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$backup_file" 2>/dev/null || stat -c "%y" "$backup_file" 2>/dev/null | cut -d'.' -f1)
echo "$(basename "$backup_file") - $file_size - $file_date"
fi
done
fi
# Show usage examples
echo ""
echo "To restore a backup, use:"
echo " ./restore-peers.sh <backup-file> [rpc-url]"
echo ""
echo "Examples:"
if [ "$json_count" -gt 0 ]; then
latest_json=$(find "$BACKUP_DIR" -name "*.json" -type f | sort -r | head -1)
if [ -n "$latest_json" ]; then
echo " ./restore-peers.sh $latest_json"
fi
fi
if [ "$txt_count" -gt 0 ]; then
latest_txt=$(find "$BACKUP_DIR" -name "*.txt" -type f | sort -r | head -1)
if [ -n "$latest_txt" ]; then
if command -v jq &> /dev/null && [ -n "$latest_json" ]; then
rpc_url=$(jq -r '.rpc_url // ""' "$latest_json" 2>/dev/null)
if [ -n "$rpc_url" ]; then
echo " ./restore-peers.sh $latest_txt $rpc_url"
fi
fi
fi
fi