Änderungen

Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1: −
#!/bin/sh
+
=Was=
 +
* Umsetzung von [[Rexxbot]] auf Linux
 +
* Es wird ein Listing beliebiger Verzeichnisse in beliebiger Tiefe erstellt
 +
* zu jeder Datei wird neben Dateidatum und -groesse auch MIME- und Datei-Typ gespeichert
 +
* Archive werden temporär entpackt und ebenfalls indexiert
 +
* ebenso Archive in Archiven in Archiven in Archiven [*n]
   −
# sqlite /root/spielereien/ganze_festplatte.db "select * from n where size>9999999 ORDER BY size ASC LIMIT 5"
+
=Archivtypen=
 +
* ist-Zustand:
 +
** RAR, ZIP, TAR, GZIP, BZIP2, ISO, 7ZIP
 +
* soll:
 +
** LHA, LZX, ARJ, gesplittete RARs
   −
fkt_create_db () {
+
=Systemanforderungen=
        DB="${WORKING_DIR}$(echo "$1" | md5sum -b | cut -d" " -f1).db"
+
* Linux
 +
* <tt>sqlite, 7zip</tt>
   −
        rm -f  "$DB"
+
=Programmcode=
        sqlite "$DB" "create table n (id INTEGER PRIMARY KEY,deep INTEGER,size INTEGER,time INTEGER,fpat TEXT,fnam TEXT,type TEXT,mime TEXT,hash TEXT);"
+
* zum download: http://141.54.160.24/bastian/freifunk/poormens_search.tgz
}
  −
 
  −
fkt_gen_index () {
  −
        echo "updating database \"$DB\" with index of \"$1\", deep = $DEEP"
  −
 
  −
        find "$1" -type f -printf "%s|%A@|%h|%f\n" |
  −
        while read LINE; do
  −
                let LINES+=1
  −
                IFS="|"
  −
                set $LINE
  −
 
  −
                FPAT="$(echo      "$3"    | sed "s/'/''/g")"; test "$DEEP" -gt 0 && a=a
  −
                FNAM="$(echo        "$4" | sed "s/'/''/g")"
  −
                TYPE="$(file -b  "$3/$4" | sed "s/'/''/g")"
  −
                MIME="$(file -ib  "$3/$4")"
  −
                HASH="$(md5sum -b "$3/$4" | cut -d" " -f1)"
  −
                DATA="'$DEEP','$1','$2','$FPAT','$FNAM','$TYPE','$MIME','$HASH'" ; # echo "$DATA"
  −
 
  −
                sqlite "$DB" "insert into n (deep,size,time,fpat,fnam,type,mime,hash) values ($DATA);"
  −
 
  −
                  if [ "$MIME" = "application/x-rar" ]; then
  −
                        let DEEP+=1
  −
                        mkdir  "${WORKING_DIR}${HASH}/"
  −
                        echo "unRARing \""$FPAT/$FNAM"\""
  −
                        unrar -inul e "$FPAT/$FNAM" "${WORKING_DIR}${HASH}/"
  −
                        fkt_gen_index "${WORKING_DIR}${HASH}/"
  −
                        rm -fR "${WORKING_DIR}${HASH}/"
  −
                        let DEEP-=1
  −
                elif [ "$MIME" = "application/x-zip" ]; then
  −
                        let DEEP+=1
  −
                        mkdir  "${WORKING_DIR}${HASH}/"
  −
                        echo "unZIPing \"$FPAT/$FNAM\""
  −
                        unzip -qq "$FPAT/$FNAM" -d "${WORKING_DIR}${HASH}/"
  −
                        fkt_gen_index "${WORKING_DIR}${HASH}/"
  −
                        rm -fR "${WORKING_DIR}${HASH}/"
  −
                        let DEEP-=1
  −
                fi
  −
        done
  −
 
  −
        echo "leaving directory \"$1\", deep = $DEEP"
  −
        unset IFS
  −
}
  −
 
  −
if [ -z "$1" ] || [ -z "$2" ]; then
  −
        echo "Usage: $0 /directory/to/crawl/ /working/dir/"
  −
else
  −
        DEEP=0
  −
        WORKING_DIR="$2"
  −
        fkt_create_db  "$1"
  −
        fkt_gen_index  "$1"
  −
fi
 

Navigationsmenü