Poormens desktop search engine.sh: Unterschied zwischen den Versionen

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen
(backup)
 
(→‎Systemanforderungen: +neue version)
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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
 

Aktuelle Version vom 24. September 2007, 16:28 Uhr

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]

Archivtypen

  • ist-Zustand:
    • RAR, ZIP, TAR, GZIP, BZIP2, ISO, 7ZIP
  • soll:
    • LHA, LZX, ARJ, gesplittete RARs

Systemanforderungen

  • Linux
  • sqlite, 7zip

Programmcode