manned/util/export.sh
Yorhel 902048e282 Change database dump format + add import & export scripts
The new format allows for downloading and importing only a part of the
database - useful when only the metadata is required - and doesn't
include the wasteful preformatted HTML cache.

This also ensures that the new import.sql script is actually usable and
in sync with the actual database. The old schema.sql was neither.

(And this simplifies my backup scripts)
2025-10-08 09:40:53 +02:00

34 lines
994 B
Bash
Executable file

#!/bin/sh
set -e
mkdir -p ../dl
# Only run once a week
[ -e ../dl/current ] && [ -z $(find ../dl/current -daystart -mtime +7) ] && exit
# Only keep the last dump
rm -rf $(printf '%s\n' ../dl/????-??-?? | sort | head -n -1)
# Create a new dump
OUT=../dl/.work
export OUT
rm -fr $OUT
mkdir -p $OUT
cp ../import.sql $OUT/import.sql
psql -wqU manned <<EOF
\copy systems to program 'zstd - -qo $OUT/systems.tsv.zst'
\copy contents (id, hash, content) to program 'zstd - -qo $OUT/contents.tsv.zst'
\copy mans to program 'zstd - -qo $OUT/mans.tsv.zst'
\copy locales to program 'zstd - -qo $OUT/locales.tsv.zst'
\copy encodings to program 'zstd - -qo $OUT/encodings.tsv.zst'
\copy packages to program 'zstd - -qo $OUT/packages.tsv.zst'
\copy package_versions to program 'zstd - -qo $OUT/package_versions.tsv.zst'
\copy files to program 'zstd - -qo $OUT/files.tsv.zst'
EOF
DATE=$(date +%F)
mv -T $OUT ../dl/$DATE
echo $DATE >../dl/current