It's surprisingly difficult to transfer entire wikis between groups since it's not just a matter of copying static HTML files as I thought previously. Here's a rough sketch of the process. It worked for me, but might not for everyone.
# wikimove from to
SRC=$1; DST=$2
cd /Library/Collaboration/Groups
# Take a backup
cp -r $SRC $SRC.bak; cp -r $DST $DST.bak
# Transfer the old search indices
sqlite3 $SRC/wiki/index.db .dump | sed 's/groups\/$SRC\//groups\/$DST\//' | sqlite3 $DST/wiki/index.db
chown teamsserver $DST/wiki/index.db;
chmod 0750 $DST/wiki/index.db
sed 's/groups\/$SRC\//groups\/$DST\//' $SRC/extrainfo >> $DST/extrainfo
# Transfer the actual documents and metadata
mv $SRC/wiki/*.page $DST/wiki/
cd $DST/wiki
for p in *.page ; do sed -i '' 's/groups\/$SRC\//groups\/$DST\//g' $p/page.html; done
for p in *.page ; do sed -i '' 's/groups\/$SRC\//groups\/$DST\//g' $p/page.plist; done
Don't forget to clean those .bak directories or else wikid will not start due to permissions errors. You'll still have references to your old group wiki inside the revisions.db files which you can get rid of with:
for p in *.page ;
do sqlite3 $p/revisions.db .dump | sed 's/groups\/$SRC\//groups\/$DST\//g' > /tmp/revisions.sql
rm $p/revisions.db
sqlite3 $p/revisions.db < /tmp/revisions.sql
done
srm /tmp/revisions.sql
Disaster recovery
If you accidentally hose a group wiki's page.plist and page.html files, it's possible to recover the latest versions of the pages, if you still have the revisions.db files intact. Here's how I did it:
cd group/wiki
for p in *.page ;
do sqlite3 $p/revisions.db "select content from revisions order by revision desc limit 1" > /tmp/wikitmp.plist
defaults read /tmp/wikitmp content > $p/page.html;
defaults delete /tmp/wikitmp content;
defaults write /tmp/wikitmp 'modifiedDate' -date $(defaults read /tmp/wikitmp modifiedDate | cut -d . -f 1)
plutil -convert xml1 /tmp/wikitmp.plist -o $p/page.plist;
done
srm /tmp/wikitmp.plist
This breaks things like accented characters (replaced by codes returned from defaults), but it sure beats rewriting every single page. :P