Seite 1 von 1

DateiDatum ermitteln, DatumsVerzeichnis erstellen und reinkopieren/-verschieben

Verfasst: 02. Okt 2008 19:30
von Laie
Hallo an alle,

ich selbst habe zwar schon mit Linux(Ubuntu & vor etlichen Jahren mal Suse) "rumgespielt", bin aber über die Standards noch nicht hinaus gekommen...

jetzt stehe ich wegen meinem Studium vor einem kleineren Problem... ich muss im rahmen eines WebPraxisprojekts ein Bildverzeichnis aufräumen und effizienter machen... da sind momentan 200k JPGs drin.

So, ich habe mir gedacht da jeden Tag etwa ~500-1000 Bilder dazu kommen verteile ich das ganze nach Datum und Uhrzeit.

Was ich also brauche ist eine Shellfunktion die das Datum der vorhandenen Dateien ausliest mit dem Datum ein Verzeichnis erstellt... und in der nächsten Ebene die Dateien in ein Verzeichnis der STUNDE reinkopiert.

also mal bildlich
bild1.jpg eintragsdatum 02.10.2008 Uhrzeit 22:33
bild2.jpg eintragsdatum 02.10.2008 Uhrzeit 21:12
bild3.jpg eintragsdatum 01.10.2008 Uhrzeit 8:12

bild1 soll in Ordner /02102008/22/
bild2 soll in Ordner /02102008/21/
bild3 soll in Ordner /01102008/08/

mit PHP bekomme ich das leider nicht hin, wegen dem Timeout des Webservers… deshalb muss es über die Shell sein.

Ansonsten falls das nicht so einfach gehen sollte, hättet ihr eine Idee wie man 200.000 Dateien am besten in eine Struktur packt? oder generell wie man am besten große Dateimengen effizient organisiert, so das Linux performancemässig besser mit klar kommt?


Gruss & Danke

Benjamin

Verfasst: 02. Okt 2008 20:38
von Janka
Die Shell wird per CGI genau dasselbe Timeoutproblem haben. Wenn du keinen echten Shellzugriff hast, musst du die Arbeit halt in mehreren Stücken machen.

Bei echtem Shellzugriff kannst du natürlich den PHP-Interpreter auch direkt daraus starten, wenn dir diese Sprache eher liegt.

Janka

danke

Verfasst: 03. Okt 2008 1:19
von Laie
Ok, danke das geht sogar, wusste ich nicht :)

vielleicht noch nen alternativen tip wie ich die dateien organisieren könnte? weil im cache-ordner hätte ich auch noch einiges an dateien, thumbnails und so.

per google finde ich leider keine guten links, wie ein guter dateibaum für cachefiles aussehen könnte.

Verfasst: 03. Okt 2008 22:59
von Janka
Dein Wunsch erfordert etwas mehr Spucke. Fang mit sowas an:

Code: Alles auswählen

for FILE in *
do
  DATETIME=$(stat -c%z $FILE)
  DATE=$&#40;cut -d\  -f1 <<<$DATETIME&#41;
  HOUR=$&#40;cut -d\  -f2 <<<$DATETIME |cut -d&#58; -f1&#41;

  mkdir -p $DATE/$HOUR
  mv $FILE $DATE/$HOUR
done
Wichtig: Anzahl der Leerzeichen hinter -d\ beachten!

Janka

.

Verfasst: 06. Okt 2008 11:18
von Laie
Ok, vielen dank, hat geklappt :)

Gruss