Untitled

mail@pastecode.io avatar
unknown
plain_text
10 days ago
3.2 kB
3
Indexable
Never
#!/bin/bash

# Define backup directory
BACKUP_DIR=~/Desktop/MacBackup_$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"

echo "Backing up installed applications list..."

# List applications in /Applications
ls /Applications > "$BACKUP_DIR/InstalledApps.txt"

# List user-specific applications
if [ -d ~/Applications ]; then
  ls ~/Applications >> "$BACKUP_DIR/InstalledApps.txt"
fi

# Use Spotlight to find all applications
mdfind "kMDItemKind == 'Application'" > "$BACKUP_DIR/AllApps.txt"

echo "Backing up application settings and preferences..."

# Backup Preferences
cp -a ~/Library/Preferences "$BACKUP_DIR/Preferences"

# Backup Application Support
cp -a ~/Library/Application\ Support "$BACKUP_DIR/Application Support"

# Backup Containers (for sandboxed apps)
cp -a ~/Library/Containers "$BACKUP_DIR/Containers"

echo "Backing up Launch Agents and Daemons..."

# Backup Launch Agents and Daemons
mkdir -p "$BACKUP_DIR/LaunchAgents/System"
mkdir -p "$BACKUP_DIR/LaunchDaemons/System"
mkdir -p "$BACKUP_DIR/LaunchAgents/User"

cp -a /Library/LaunchAgents "$BACKUP_DIR/LaunchAgents/System"
cp -a /Library/LaunchDaemons "$BACKUP_DIR/LaunchDaemons/System"
cp -a ~/Library/LaunchAgents "$BACKUP_DIR/LaunchAgents/User"

echo "Listing Login Items..."

# Get Login Items (macOS 10.13 High Sierra and later)
osascript -e 'tell application "System Events" to get the name of every login item' > "$BACKUP_DIR/LoginItems.txt"

echo "Backing up Homebrew packages..."

# Check if Homebrew is installed
if command -v brew &> /dev/null; then
  brew list --formulae > "$BACKUP_DIR/BrewFormulae.txt"
  brew list --casks > "$BACKUP_DIR/BrewCasks.txt"
fi

echo "Backing up personal files..."

# List of personal directories to backup
PERSONAL_DIRS=("Documents" "Downloads" "Desktop" "Pictures" "Music" "Movies")

for DIR in "${PERSONAL_DIRS[@]}"; do
  if [ -d ~/"$DIR" ]; then
    echo "Backing up $DIR..."
    cp -a ~/"$DIR" "$BACKUP_DIR/"
  fi
done

echo "Exporting Safari bookmarks..."

# Export Safari bookmarks
if [ -f ~/Library/Safari/Bookmarks.plist ]; then
  cp ~/Library/Safari/Bookmarks.plist "$BACKUP_DIR/SafariBookmarks.plist"
fi

echo "Exporting Chrome bookmarks..."

# Export Chrome bookmarks
if [ -d ~/Library/Application\ Support/Google/Chrome ]; then
  mkdir -p "$BACKUP_DIR/Chrome"
  cp -a ~/Library/Application\ Support/Google/Chrome/Default/Bookmarks "$BACKUP_DIR/Chrome/Bookmarks"
fi

echo "Exporting Firefox bookmarks..."

# Export Firefox bookmarks
if [ -d ~/Library/Application\ Support/Firefox ]; then
  PROFILE_PATH=$(ls -d ~/Library/Application\ Support/Firefox/Profiles/*.default-release 2>/dev/null)
  if [ -n "$PROFILE_PATH" ]; then
    mkdir -p "$BACKUP_DIR/Firefox"
    cp -a "$PROFILE_PATH"/bookmarkbackups "$BACKUP_DIR/Firefox/"
  fi
fi

echo "Collecting software license information..."

# This step is largely manual; the script can attempt to gather some license files
LICENSE_DIRS=("~/Library/Preferences" "~/Library/Application Support")
for DIR in "${LICENSE_DIRS[@]}"; do
  find "$DIR" -type f \( -name "*license*" -o -name "*.plist" \) -print0 2>/dev/null | xargs -0 -I {} cp -a {} "$BACKUP_DIR/Licenses/"
done

echo "Backup completed. Backup directory is located at $BACKUP_DIR"
Leave a Comment