diff options
Diffstat (limited to 'wordpress/wordpress-rsync-push-site')
-rwxr-xr-x | wordpress/wordpress-rsync-push-site | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/wordpress/wordpress-rsync-push-site b/wordpress/wordpress-rsync-push-site new file mode 100755 index 0000000..09dc70c --- /dev/null +++ b/wordpress/wordpress-rsync-push-site | |||
@@ -0,0 +1,72 @@ | |||
1 | #!/bin/bash | ||
2 | set -e | ||
3 | set -o pipefail | ||
4 | |||
5 | site=${1#/srv/} | ||
6 | site=${site%/} | ||
7 | case "$site" in | ||
8 | '' | */* | .*) exit 1 ;; | ||
9 | esac | ||
10 | [ -d /srv/"$site" ] | ||
11 | db_host=$(wordpress-config-info "$site" | jq -r .db_host) | ||
12 | db_name=$(wordpress-config-info "$site" | jq -r .db_name) | ||
13 | [ "$db_name" ] | ||
14 | |||
15 | |||
16 | [ "$REMOTE_HOST" ] | ||
17 | remote_host=$REMOTE_HOST | ||
18 | |||
19 | NO_ACT=y | ||
20 | |||
21 | html_dir=/./srv/$site/public_html | ||
22 | conf_file=/./etc/apache2/sites-available/$site.conf | ||
23 | [ -d "$html_dir" ] | ||
24 | [ -f "$conf_file" ] | ||
25 | |||
26 | |||
27 | |||
28 | |||
29 | installer() | ||
30 | { | ||
31 | echo mysqlrestore "$1" | ||
32 | } | ||
33 | |||
34 | installer_source_code() | ||
35 | { | ||
36 | echo '#!/bin/sh' | ||
37 | declare -f installer | ||
38 | echo "installer \"$1\"" | ||
39 | } | ||
40 | |||
41 | do_rsync() | ||
42 | { ( | ||
43 | set -x | ||
44 | rsync ${NO_ACT:+ -nv} -u -aRi --delete --partial "$conf_file" "$html_dir" "$remote_host":/"$target_dir" | ||
45 | ) } | ||
46 | |||
47 | do_mysqldump() | ||
48 | { ( | ||
49 | case "$NO_ACT" in | ||
50 | '') of=/srv/$site/wordpress-database~"$(date -Ins)".sql.gz ;; | ||
51 | * ) of=/dev/null ;; | ||
52 | esac | ||
53 | oftest=/srv/$site/wordpress-database~"$(date -Ins)".sql.gz | ||
54 | printf '%s\n' "$oftest" >&2 | ||
55 | installer_source_code "$oftest" >&2 | ||
56 | |||
57 | if [ "$use_rsync" ] | ||
58 | then | ||
59 | set -x | ||
60 | dumpfile=$(mktemp -p "$XDG_RUNTIME_DIR") || dumpfile=$(mktemp) | ||
61 | ssh "$db_host" -- mysqldump "$db_name" | gzip -c > "$dumpfile" | ||
62 | rsync --ignore-existing "$dumpfile" "$remote_host":"$of" | ||
63 | rm "$dumpfile" | ||
64 | else | ||
65 | set -x | ||
66 | mysqldump "$db_name" | gzip -c | ssh "$remote_host" dd conv=notrunc "of=$of" | ||
67 | fi | ||
68 | ) } | ||
69 | |||
70 | use_rsync=y | ||
71 | do_rsync | ||
72 | do_mysqldump | ||