Biesterfeld: Dateien automatisch umbennen -- Lösung für MyDMS + Postgres

Beitrag lesen

Hallo Vinzenz, hallo Dennis,

also vielen Dank euch beiden. Ich hab mich jetzt tatsächlich für die Lösung mit inotify entschieden. Dies aus zwei Gründen:
Erstens will mir das Prinzip eher einleuchten, nur auf ein Event hin auch eine Aktion vorzunehmen. Zweitens kann ich so ganz gezielt nur die hinzugekommene Datei behandeln.

Das Shell-Skript sieht nun so aus:

  
#!/bin/bash  
  
OBSERVED_DIR=/var/egroupware/default/files/mydms  
DELAY=2s  
  
# Wait for created files and folders in $OBSERVED_DIR  
while message=`inotifywait -r -e CREATE $OBSERVED_DIR`;  
do  
  
  # A file was created  
  if [ -z `echo $message | grep ISDIR | sed 's/ //g'` ]  
    then  
    # Removing the CREATE -Message gives the /path/to/file  
    f=`echo $message | sed 's/ CREATE //'`;  
  
    # Make the hard-link  
    ln $f ${f%.*};  
  
  # A folder was created  
  else  
    # wait $DELAY just to make sure the file is created;  
    # assume that if the file is not created yet, inotifywait is listening  
    # again for its creation  
    sleep $DELAY;  
  
    # Removing the CREATE,ISDIR -Message gives the /path/to/folder  
    dir=`echo $message | sed 's/ CREATE,ISDIR //'`;  
  
    # find all data.* files in the new Folder  
    for f in $(find $dir -regex ".*data\..*$");  
    do  
      # Make the hard-link  
      ln $f ${f%.*} ;  
    done  
  fi  
done  

Gestartet wird das Skript durch sudo su www-data -c <skript.sh>. Am besten als Runlevel-Prozess. Vielleicht hilft es in der Zukunft auch anderen mit ähnlichem Problem.

Ich bin zwar noch nicht ganz zufrieden damit, da genau für mein Problem ein bekanntes Problem bei inotifywait -r greift, nämlich dass Order und Inhalt so kurz hintereinander erstellt werden, dass das Erzeugen des Inhaltes u.U. nicht verfolgt wird, aber das hab ich ja nun durch den else-Abschnitt behoben.

Nochmal vielen Dank, wieder recht viel über Linux in den letzten 24 Stunden gelernt.

Beste Grüße
Biesterfeld

--
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz