8 DATA_DIR="/usr/local/citadel"
11 echo "Usage: database_cleanup.sh [ -h citadel_dir ]"
15 PARSED_ARGUMENTS=$(getopt -a -n database_cleanup.sh -o h: -- "$@")
17 if [ "$VALID_ARGUMENTS" != "0" ]; then
21 eval set -- "$PARSED_ARGUMENTS"
29 # -- means the end of the arguments; drop this, and break out of the while loop
31 # If invalid options were passed, then getopt should have reported an error,
32 # which we checked as VALID_ARGUMENTS when getopt was called...
33 *) echo "Unexpected option: $1 - this should not happen."
39 DATA_DIR=$DATA_DIR/data
41 # If we're on an AppDir system, use the embedded db_tools.
42 if [ "${APPDIR}" != "" ] ; then
43 export PATH=${APPDIR}/usr/bin:$PATH
44 RECOVER=${APPDIR}/usr/bin/db_recover
45 DUMP=${APPDIR}/usr/bin/db_dump
46 LOAD=${APPDIR}/usr/bin/db_load
48 # If we're on an Easy Install system, use our own db_ tools.
49 elif [ -x /usr/local/ctdlsupport/bin/db_dump ] ; then
50 export PATH=/usr/local/ctdlsupport/bin:$PATH
51 RECOVER=/usr/local/ctdlsupport/bin/db_recover
52 DUMP=/usr/local/ctdlsupport/bin/db_dump
53 LOAD=/usr/local/ctdlsupport/bin/db_load
57 if test -f /usr/bin/db_dump; then
58 RECOVER=/usr/bin/db_recover
62 if test -n "`ls /usr/bin/db?*recover`"; then
63 # seems we have something debian alike thats adding version in the filename
64 if test "`ls /usr/bin/db*recover |wc -l`" -gt "1"; then
65 echo "Warning: you have more than one version of the Berkeley DB utilities installed." 1>&2
66 echo "Using the latest one." 1>&2
67 RECOVER=`ls /usr/bin/db*recover |sort |tail -n 1`
68 DUMP=`ls /usr/bin/db*dump |sort |tail -n 1`
69 LOAD=`ls /usr/bin/db*load |sort |tail -n 1`
71 RECOVER=`ls /usr/bin/db*recover`
72 DUMP=`ls /usr/bin/db*dump`
73 LOAD=`ls /usr/bin/db*load`
76 echo "database_cleanup.sh cannot find the Berkeley DB utilities. Exiting." 1>&2
88 Citadel Database Cleanup
89 ---------------------------
91 This script exports, deletes, and re-imports your database. If you have
92 any data corruption issues, this program may be able to clean them up for you.
94 Please note that this program does a Berkeley DB dump/load, not a Citadel
95 export. The export files are not generated by the Citadel export module.
98 MAKE A BACKUP OF YOUR DATA BEFORE ATTEMPTING THIS. There is no guarantee
99 that this will work (in case of disk full, power failure, program crash)!
102 citserver must NOT be running while you do this.
105 Please try "cd $DATA_DIR; $RECOVER -c" first. Run citserver afterwards to
106 revalidate whether its fixed or not, No news might be good news. Use this
107 tool only if that one fails to fix your problem.
110 You must have an amount of free space in /tmp that is at least twice
111 the size of your database. see the following output:
115 you will need `du -sh $DATA_DIR|sed "s;/.*;;"` of free space.
119 echo We will attempt to look for a Citadel database in $DATA_DIR
120 echo -n "Do you want to continue? "
124 "y" | "Y" | "yes" | "YES" | "Yes" )
126 echo DO NOT INTERRUPT THIS PROCESS.
133 for x in 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
136 echo Dumping $filename
137 $DUMP -h $DATA_DIR $filename >/tmp/CitaDump.$x || {
141 rm -vf $DATA_DIR/$filename
144 echo Removing old databases
147 for x in 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
150 echo Loading $filename
151 $LOAD -h $DATA_DIR $filename </tmp/CitaDump.$x && {
152 rm -f /tmp/CitaDump.$x
157 echo Dump/load operation complete. Start your Citadel server now.