DateiDatum ermitteln, DatumsVerzeichnis erstellen und reinkopieren/-verschieben

Antworten
Nachricht
Autor
Laie

DateiDatum ermitteln, DatumsVerzeichnis erstellen und reinkopieren/-verschieben

#1 Beitrag von Laie » 02. Okt 2008 19:30

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

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 02. Okt 2008 20:38

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
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Laie

danke

#3 Beitrag von Laie » 03. Okt 2008 1:19

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.

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 03. Okt 2008 22:59

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
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Laie

.

#5 Beitrag von Laie » 06. Okt 2008 11:18

Ok, vielen dank, hat geklappt :)

Gruss

Antworten