]> git.openstreetmap.org Git - chef.git/blob - cookbooks/mediawiki/templates/default/mediawiki-backup.cron.erb
Fix tar backup failures
[chef.git] / cookbooks / mediawiki / templates / default / mediawiki-backup.cron.erb
1 #!/bin/bash
2
3 # DO NOT EDIT - This file is being maintained by Chef
4 set -euo pipefail
5
6 export ZSTD_CLEVEL=11
7 export ZSTD_NBTHREADS=0
8
9 T=$(mktemp -d -t -p /var/tmp "mediawiki-<%= @name %>.XXXXXXXXXX")
10 D=$(date +%Y-%m-%d)
11 B="wiki-<%= @name %>-$D.tar.zst"
12
13 mkdir "$T/wiki-<%= @name %>-$D"
14 echo '[mysqldump]' > "$T/mysqldump.opts"
15 echo 'user=<%= @database_params[:username] %>' >> "$T/mysqldump.opts"
16 echo 'password=<%= @database_params[:password] %>' >> "$T/mysqldump.opts"
17 mysqldump --defaults-file="$T/mysqldump.opts" --opt --skip-lock-tables --single-transaction --no-tablespaces --max-allowed-packet=1G "<%= @database_params[:name] %>" | zstd --quiet --long --rsyncable -o "$T/wiki-<%= @name %>-$D/wiki.sql.zst"
18 ln -s "<%= @directory %>" "$T/wiki-<%= @name %>-$D/www"
19
20 nice tar --create --dereference --directory="$T" \
21   --warning=no-file-changed \
22   --warning=no-file-removed \
23   --ignore-failed-read \
24   --exclude="wiki-<%= @name %>-$D/www/w/images/thumb" \
25   --exclude="wiki-<%= @name %>-$D/www/w/.git" \
26   --exclude="wiki-<%= @name %>-$D/www/w/extensions/*/.git" \
27   --exclude="wiki-<%= @name %>-$D/www/dump" \
28   --sort=name \
29   "wiki-<%= @name %>-$D" | nice zstd --quiet --long --rsyncable -o "$T/$B"
30 nice rsync --preallocate --fuzzy "$T/$B" backup.openstreetmap.org::backup
31
32 rm -rf "$T"