Amélioration de la splash_page et du login
This commit is contained in:
137
sync-mac-pm1.sh
Executable file
137
sync-mac-pm1.sh
Executable file
@@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to synchronize the current directory to the same path on another Mac
|
||||
# and optionally to an external NVME drive
|
||||
# Author: Cline
|
||||
# Date: $(date +"%Y-%m-%d")
|
||||
|
||||
# Define IP addresses
|
||||
IP_MAC1="192.168.7.1"
|
||||
IP_MAC2="192.168.7.4"
|
||||
NVME_PATH="/Volumes/d4to"
|
||||
|
||||
# Detect local IP address on Thunderbolt interface
|
||||
get_local_ip() {
|
||||
local thunderbolt_ip=$(ifconfig | grep -A 4 "bridge0\|en5\|en6" | grep "inet " | awk '{print $2}' | grep "192.168.7.")
|
||||
echo "$thunderbolt_ip"
|
||||
}
|
||||
|
||||
# Determine destination IP based on local IP
|
||||
get_destination_ip() {
|
||||
local local_ip=$(get_local_ip)
|
||||
|
||||
if [ "$local_ip" = "$IP_MAC1" ]; then
|
||||
echo "$IP_MAC2"
|
||||
elif [ "$local_ip" = "$IP_MAC2" ]; then
|
||||
echo "$IP_MAC1"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Source and destination paths
|
||||
SOURCE_DIR=$(pwd)
|
||||
DEST_IP=$(get_destination_ip)
|
||||
|
||||
if [ -z "$DEST_IP" ]; then
|
||||
echo "Error: Could not determine destination IP. Make sure you're on a Mac with IP $IP_MAC1 or $IP_MAC2"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DESTINATION="pierre@$DEST_IP:$SOURCE_DIR"
|
||||
|
||||
# Log file
|
||||
LOG_FILE="$SOURCE_DIR/sync_log_$(date +"%Y%m%d_%H%M%S").log"
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to log messages
|
||||
log_message() {
|
||||
local message="$1"
|
||||
local type="$2"
|
||||
local color="$NC"
|
||||
|
||||
case "$type" in
|
||||
"INFO") color="$GREEN" ;;
|
||||
"ERROR") color="$RED" ;;
|
||||
"WARNING") color="$YELLOW" ;;
|
||||
esac
|
||||
|
||||
echo -e "${color}[$(date +"%Y-%m-%d %H:%M:%S")] [$type] $message${NC}"
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] [$type] $message" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Check if rsync is installed
|
||||
if ! command -v rsync &> /dev/null; then
|
||||
log_message "rsync is not installed. Please install it using 'brew install rsync'" "ERROR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if source directory exists
|
||||
if [ ! -d "$SOURCE_DIR" ]; then
|
||||
log_message "Source directory $SOURCE_DIR does not exist" "ERROR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create log file
|
||||
touch "$LOG_FILE"
|
||||
log_message "Starting synchronization from $SOURCE_DIR to $DESTINATION" "INFO"
|
||||
|
||||
# Ping the destination to check if it's reachable
|
||||
if ! ping -c 1 "$DEST_IP" &> /dev/null; then
|
||||
log_message "Destination $DEST_IP is not reachable. Check your network connection." "ERROR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run rsync with archive mode, compression, and verbose output
|
||||
log_message "Running rsync..." "INFO"
|
||||
rsync -avz --exclude=".git" \
|
||||
"$SOURCE_DIR/" "$DESTINATION/" 2>&1 | tee -a "$LOG_FILE"
|
||||
|
||||
# Check rsync exit status
|
||||
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
||||
log_message "Synchronization completed successfully" "INFO"
|
||||
else
|
||||
log_message "Synchronization failed with exit code ${PIPESTATUS[0]}" "ERROR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get local IP
|
||||
LOCAL_IP=$(get_local_ip)
|
||||
|
||||
# If we're on MAC2 and NVME is mounted, also backup to NVME
|
||||
if [ "$LOCAL_IP" = "$IP_MAC2" ] && [ -d "$NVME_PATH" ]; then
|
||||
# Get parent directory name
|
||||
PARENT_DIR=$(basename "$(dirname "$SOURCE_DIR")")
|
||||
PROJECT_DIR=$(basename "$SOURCE_DIR")
|
||||
BACKUP_DATE=$(date +"%Y-%m-%d")
|
||||
NVME_BACKUP_DIR="$NVME_PATH/dev/$PARENT_DIR-$PROJECT_DIR/Y-w-$BACKUP_DATE"
|
||||
|
||||
log_message "Also backing up to NVME at $NVME_BACKUP_DIR" "INFO"
|
||||
|
||||
# Create backup directory if it doesn't exist
|
||||
mkdir -p "$NVME_BACKUP_DIR"
|
||||
|
||||
# Backup to NVME
|
||||
rsync -avz --exclude=".git" "$SOURCE_DIR/" "$NVME_BACKUP_DIR/" 2>&1 | tee -a "$LOG_FILE"
|
||||
|
||||
# Check rsync exit status
|
||||
if [ ${PIPESTATUS[0]} -eq 0 ]; then
|
||||
log_message "NVME backup completed successfully" "INFO"
|
||||
else
|
||||
log_message "NVME backup failed with exit code ${PIPESTATUS[0]}" "WARNING"
|
||||
fi
|
||||
|
||||
# Purge backups older than 3 weeks
|
||||
log_message "Purging backups older than 3 weeks" "INFO"
|
||||
find "$NVME_PATH/dev/$PARENT_DIR-$PROJECT_DIR" -type d -name "Y-w-*" -mtime +21 -exec rm -rf {} \; 2>/dev/null || true
|
||||
fi
|
||||
|
||||
log_message "Synchronization process finished" "INFO"
|
||||
echo -e "${GREEN}Synchronization log saved to: $LOG_FILE${NC}"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user