#!/bin/bash # run this on the backup directory datafile="datalist" mime="mime_type" home=$PWD er_m="$home/err_mime.log" er_d="$home/err_data.log" gnomedir="gnome" function err_m { echo $1 >> $er_m } function err_d { echo $1 echo $1 >> $er_d } for folder in `ls */ -d` do cd $folder echo Working dir: $folder # datastore [[ -d home ]] && rm -rf ./home [[ -d gnome ]] && rm -rf ./gnome if [ ! -f *.bz2 ] then echo "$PWD is not a backup directory" continue fi tar xjf *.bz2 [[ $? -ne 0 ]] && err_d "TAR error, please recover the $PWD archive" out="$home/out/$folder" mkdir -p $out/datastore [[ -f home/olpc/.sugar/default/datastore/nickname ]] && cp home/olpc/.sugar/default/datastore/nickname $out/datastore int=1 rm $datafile 2>/dev/null find $1 -name data >> $datafile for path in `cat $datafile` do cd ${path%\/data}/metadata ext="unknown" size=0 if [ -f $mime ] then grep -q application/pdf $mime && ext="pdf" grep -q application/x-fototoon-activity $mime && ext="fototoon" grep -q application/x-memorize-project $mime && ext="memorize" grep -q application/x-physics-activity $mime && ext="physics" grep -q application/x-turtle-art $mime && ext="turtle" grep -q gcompris $mime && ext="gcompris" grep -q ogg $mime && ext="ogg" grep -q image/jpeg $mime && ext="jpeg" grep -q image/png $mime && ext="png" grep -q text/plain $mime && ext="txt" grep -q text/x-python $mime && ext="py" grep -q opendocument $mime && ext="odf" grep -q application/epub $mime && ext="epub" grep -q application/rtf $mime && ext="rtf" grep -q mpeg $mime && ext="mpeg" grep -q html $mime && ext="html" grep -q Speak activity && ext="speak" grep -q Calculate activity && ext="Calculate" grep -q Chat activity && ext="Chat" else err_d "mime type file does not exists: $PWD" [[ ! -f ../data ]] && err_d "data file does not exists: $PWD" continue fi [[ -f "preview" ]] && size=`ls -sk preview | awk '{ print $1 }'` if [ $ext == "unknown" ] then err_m "Format unknown: $PWD" [[ -d $out/datastore/unknown ]] || mkdir $out/datastore/unknown [[ $size -gt 0 ]] && cp -a preview $out/datastore/unknown/$int.$ext.preview.png else cp -a ../data $out/datastore/$int.$ext [[ $size -gt 0 ]] && cp -a preview $out/datastore/$int.$ext.preview.png fi int=$((int + 1)) cd $home/$folder done rm $datafile [[ -d home ]] && rm -rf ./home # GNOME directory if [ -d $home/$folder/$gnomedir ] then for f in `ls -d $home/$folder/$gnomedir/*/` do size=`du -skb $f | awk '{ print $1 }'` [[ $size -lt 4097 ]] && continue mkdir -p $out/$gnomedir cp -aR ${f%\/} $out/$gnomedir done [[ -d $gnomedir ]] && rm -rf ./$gnomedir fi cd $home done echo "Done"