Project

General

Profile

Support #18982 » back-up-production-site.sh

Utility for backing up a production site - Boone Gorges, 2023-10-20 03:20 PM

 
1
#!/bin/bash
2

    
3
# Check if a parameter was provided
4
if [ -z "$1" ]; then
5
  echo "Error: No number provided. Please provide a number as a parameter."
6
  exit 1
7
fi
8

    
9
# Assign the parameter to a variable
10
number=$1
11

    
12
# Database details
13
database="commons_wp"
14
# Ensure your .my.cnf file is set up for passwordless access
15

    
16
# Directory for backups
17
backup_dir=~/data-restore-2023-10-11/production-backups
18
files_backup_dir=${backup_dir}/files/${number}
19

    
20
# Source directory for files
21
source_dir=/PROD_WWW/html/commons/www/wp-content/blogs.dir/${number}/
22

    
23
# Create the directories if they don't exist
24
mkdir -p "$backup_dir"
25
mkdir -p "$files_backup_dir"
26

    
27
# Rsync files from source to backup directory
28
rsync -avzh --progress "${source_dir}" "${files_backup_dir}"
29

    
30
# Get the list of tables like 'wp_{number}_%'
31
tables=$(mysql  -D "$database" -e "SHOW TABLES LIKE 'wp\_${number}\_%';" | awk '{ print $1 }' | grep -v '^Tables' | tr '\n' ' ')
32

    
33
# Check if tables were found
34
if [ -z "$tables" ]; then
35
  echo "No tables found for the provided number: $number"
36
  exit 1
37
fi
38

    
39
# Dump the tables
40
mysqldump  "$database" $tables > "${backup_dir}/wp_${number}_backup.sql"
41

    
42
# Check if the mysqldump was successful
43
if [ $? -eq 0 ]; then
44
  echo "Backup successful. Files and database backup created in ${backup_dir}"
45
else
46
  echo "Database backup failed."
47
fi
48

    
(3-3/3)