Projet

Général

Profil

Paste
Télécharger (2,36 ko) Statistiques
| Branche: | Révision:

root / bin / d7-sync-site.sh @ 8550e097

1 71d02f8c Julien Enselme
#!/usr/bin/env bash
2
3
help=<<EOF
4
This script is intended to ease the synchronisation between any site hosted by assos.
5
Typically, this script is usefull when you have (or want to have) a test site based on
6
a already working site. It relies on bash, drush and drush aliases.
7
8 f4bff92c Julien Enselme
Before synching the site, the destination site's database is backuped. If the
9 71d02f8c Julien Enselme
destination site does not exist, it is created.
10
11 c9d0efbc Julien Enselme
usage: d7-sync.sh SOURCE_SITENAME DEST_SITENAME [--prod]
12 71d02f8c Julien Enselme
EOF
13
14 06e9d071 Assos Assos
. /home/assos/bin/scripts-config.sh
15
. /home/assos/bin/scripts-utils.sh
16 71d02f8c Julien Enselme
17 3e9236bd Julien Enselme
check_arguments "$#" 2 "${help}"
18 c5ae85b0 Julien Enselme
19 42f1f46f Julien Enselme
20 71d02f8c Julien Enselme
# Create site if necessary
21 3e9236bd Julien Enselme
if ! site_exists "$2" > /dev/null ; then
22 71d02f8c Julien Enselme
    echo "$2 does not exit. We will create it"
23 3e9236bd Julien Enselme
    d7-create-site.sh "$2" --no-init-database
24 c9d0efbc Julien Enselme
    # if the site is new, there is no database
25
    new_site=1
26 71d02f8c Julien Enselme
fi
27
28 42f1f46f Julien Enselme
29 71d02f8c Julien Enselme
# Backup the database of SOURCE_SITE
30 8550e097 Julien Enselme
current_date=$(date "+%Y-%m-%d-%Hh%Mm%Ss")
31 3e9236bd Julien Enselme
if [ "$1" = "default" ] ; then
32
    dir="$2"
33 71d02f8c Julien Enselme
else
34 3e9236bd Julien Enselme
    dir="assos.centrale-marseille.fr.$2"
35 c9d0efbc Julien Enselme
fi
36 3e9236bd Julien Enselme
if [ -z "${new_site}" ] ; then
37
    drush -y "@$1" sql-dump --result-file="${d7_dir_individual_manual_backup}/${dir}/${current_date}.${dir}.sql" --gzip
38 71d02f8c Julien Enselme
fi
39
40 42f1f46f Julien Enselme
41 71d02f8c Julien Enselme
# Sync files
42 3e9236bd Julien Enselme
drush -y rsync --delete --exclude="*.php" "@${1}:%site" "@${2}:%site"
43 71d02f8c Julien Enselme
44 42f1f46f Julien Enselme
45 71d02f8c Julien Enselme
# Sync databases
46
## Save file system
47 3e9236bd Julien Enselme
if [ -z "${new_site}" ] ; then
48 8550e097 Julien Enselme
    private_path=$(drush "@$2" vget --format=string file_private_path 2> /dev/null)
49
    public_path=$(drush "@$2" vget --format=string file_public_path 2> /dev/null)
50
    temp_path=$(drush "@$2" vget --format=string file_temporary_path 2> /dev/null)
51 c9d0efbc Julien Enselme
fi
52 42f1f46f Julien Enselme
53 71d02f8c Julien Enselme
## Sync
54 8550e097 Julien Enselme
current_date=$(date "+%Y-%m-%d-%Hh%Mm%Ss")
55 3e9236bd Julien Enselme
sql_file="${dir_tmp}/${current_date}.$1.sql"
56
drush -y "@$1" sql-dump --result-file="${sql_file}"
57
sed -i -e "s#https?://assos.centrale-marseille.fr/$1#https://assos.centrale-marseille.fr/$2#g" "${sql_file}"
58
sed -i -e "s#/$1/sites/assos.centrale-marseille.fr.$1#/$2/sites/assos.centrale-marseille.fr.$2#g" "${sql_file}"
59
drush "@$2" sql-drop
60
drush "@$2" sql-cli < "${sql_file}"
61
rm "${sql_file}"
62 42f1f46f Julien Enselme
63 71d02f8c Julien Enselme
## Restore file system
64 3e9236bd Julien Enselme
if [ -n "${private_path}" ] ; then
65
    drush -y "@$2" vset file_private_path "${private_path}"
66 71d02f8c Julien Enselme
fi
67 3e9236bd Julien Enselme
if [ -n "${public_path}" ] ; then
68
    drush -y "@$2" vset file_public_path "${public_path}"
69 71d02f8c Julien Enselme
fi
70 3e9236bd Julien Enselme
if [ -n "${temp_path}" ] ; then
71
    drush -y "@$2" vset file_temporary_path "${temp_path}"
72 71d02f8c Julien Enselme
fi
73
74 c9d0efbc Julien Enselme
if [ "$3" = "--prod" ] ; then
75 3e9236bd Julien Enselme
    drush -y "@$2" vset maintenance_mode 0
76 c9d0efbc Julien Enselme
else
77 3e9236bd Julien Enselme
    drush -y "@$2" vset maintenance_mode 1
78 c9d0efbc Julien Enselme
fi