#!/bin/bash -e # Dump some copyleft pouet.net data into a SQL text file # Config MYSQL_DB="pouet" DUMP_FILE="pouet_with_sample_data.sql" # Needed by sed to not throw out some warnings LANG=C # We have 3 types of tables: # 1. Tables without any user FK with only public data: Full dump # 2. Tables without any user FK without public data: Data-less dump # 3. Tables with a user FK: Selective dump function dump_tables_with_public_data() { TABLES=("affiliatedbbses" "affiliatedprods" "awardscand_2007" "awardscand_2008" "awardscand_2010" "awardscand_2011" "bbses_platforms" "bbsesaka" "buttons" "cdc" "credits" "downloadlinks" "faq" "groupsaka" "links" "listitems" "news" "ojnews" "partiesaka" "partylinks" "platforms" "prodotherparty" "prods_platforms" "sceneorgrecommended") ssh pouet mysqldump --skip-lock-tables \ --result-file=tmp/tables_with_public_data.sql \ $MYSQL_DB \ ${TABLES[*]} } function dump_tables_without_data() { TABLES=("editrequests" "gloperator_log" "prods_refs" "ud") ssh pouet mysqldump --skip-lock-tables \ --result-file=tmp/tables_without_data.sql \ --no-data \ $MYSQL_DB \ ${TABLES[*]} } function dump_tables_with_selective_data() { USERS_AGREEING=(1 # analogue 10 # rez 177 # psenough 619 # tomaes 3023 # psonice 3865 # visy 4950 # Preacher 5938 # randomi 7636 # xeron 20122 # PulkoMandy 29286 # xTr1m 42140) # vibrator TMP_VAR=$(printf ",%s" "${USERS_AGREEING[@]}") TMP_VAR=${TMP_VAR:1} # Get the list of users in the format (1,2,3) to be used by INs FILTER="($TMP_VAR)" TABLES_WITH_COND=("bbs_ads;adder IN $FILTER OR added in $FILTER" "bbs_posts;author IN $FILTER" "bbs_topics;userfirstpost IN $FILTER OR userlastpost IN $FILTER" "bbses;adder IN $FILTER" "comments;who IN $FILTER" "groups;added IN $FILTER" "lists;adder IN $FILTER OR upkeeper IN $FILTER" "logos;author1 IN $FILTER OR author2 IN $FILTER" "logos_votes;user IN $FILTER" "nfos;user IN $FILTER" "oldnicks;user IN $FILTER" "oneliner;who IN $FILTER" "othernfos;adder IN $FILTER" "parties;added IN $FILTER" "prods;added IN $FILTER" "screenshots;user IN $FILTER" "users;id IN $FILTER" "users_cdcs;user IN $FILTER" "usersettings;id IN $FILTER") # for i in a,b c,d ; do IFS=","; set $i; echo $1 $2; done for TMP_VAR in "${TABLES_WITH_COND[@]}" do IFS=";" # Assign the good variables set $TMP_VAR TABLE="$1" CONDITION="$2" # Do the dump ssh pouet mysqldump --skip-lock-tables \ --result-file=tmp/table_with_selective_data_$TABLE.sql \ --where=\"$CONDITION\" \ $MYSQL_DB \ $TABLE done } # Make sure we are in the good folder if [ ! -f COPYING ] then echo "Launch me in the root folder" exit 1 fi echo "Preparing the ground..." ssh pouet "if [ ! -d tmp ] ; then mkdir tmp ; fi" ssh pouet "rm -f tmp/*.sql tmp/$DUMP_FILE.gz" echo "Dumping tables with public data..." dump_tables_with_public_data echo "Dumping tables without data..." dump_tables_without_data echo "Dumping tables with filtered data..." dump_tables_with_selective_data echo "Preparing the dump..." ssh pouet "cat tmp/*.sql >> tmp/$DUMP_FILE" ssh pouet "gzip tmp/$DUMP_FILE" echo "Downloading the DDL..." scp pouet:tmp/$DUMP_FILE.gz contribs/ gunzip -f contribs/$DUMP_FILE.gz echo "Cleaning up the mess..." ssh pouet "rm -f tmp/*.sql tmp/$DUMP_FILE.gz" echo "Dump of the DDL completed in $DUMP_FILE"