Mit der folgenden Tcl-Prozedur, findLargeBlobs
, können
Sie CMS-Dateien finden, die viel Speicherplatz verbrauchen,
beispielsweise, um deren archivierte Versionen zu löschen. Sie können die
Prozedur folgendermaßen einbinden:
Speichern Sie den unten angegebenen Tcl-Code in einer Datei
(beispielsweise findLargeBlobs.tcl
) im
FionaDir/instance/InstanceDir/script/cm/clientCmds
-Verzeichnis
ab, wobei FionaDir
Ihr Fiona-Installationsverzeichnis und
InstanceDir
Ihr Instanzenverzeichnis ist. Beim nächsten
Start des CM wird diese Datei automatisch geladen, so dass die Prozedur verfügbar
ist. Wenn Sie den CM nicht neu starten möchten, lesen Sie das Skript wie unten
beschrieben mit dem source
-Befehl manuell ein.
Öffnen Sie in der zu untersuchenden CMS-Instanz den Tcl-Client, indem
Sie im bin
-Verzeichnis ./client
aufrufen, und stellen
Sie mit connect
eine Verbindung zum CM her:
./client connect hostname port username password
Beispiel: connect localhost 3001 root demo
Wenn die Prozedur beim Start nicht automatisch geladen wurde, weil sie sich nicht im oben genannten Verzeichnis befindet, laden Sie sie bitte manuell:
source FionaDir/instance/InstanceDir/script/cm/clientCmds
/findLargeBlobs.tcl
Ersetzen Sie die Platzhalter FionaDir
und
InstanceDir
wieder durch den bei Ihnen verwendeten Namen
des Fiona-Installationsverzeichnisses bzw. des Instanzenverzeichnisses.
Sie können jetzt die Prozedur aufrufen. Geben Sie als erstes Argument den Pfad oder die ID des Ordners an, bei dem die Suche beginnen soll. Als zweites Argument geben Sie bitte die höchste Anzahl Bytes an, die unberücksichtigt bleiben soll. Beispiel:
findLargeBlobs /myContentFolder 32768
Dieser Aufruf findet CMS-Dateien, die größer als 32 KB sind und sich im
CMS-Ordner /myContentFolder
oder in der Hierarchie darunter
befinden.
Das Ergebnis finden Sie in der Datei
FionaDir/instance/InstanceDir/tmp/largeBlobs.log
,
wobei die Platzhalter wieder durch Ihre tatsächlichen Verzeichnisnamen ersetzt
werden müssen.
In der Ausgabe finden Sie Größenangaben zu den Arbeitsversionen und den freigegebenen Versionen sowie die Gesamtanzahl der betreffenden Version. Die Ausgabe hat das folgende Format:
/myContentFolder/SubFolder/FileName editedBlobLength: 45239 releasedBlobLength: 44387 versions: 2
Code der Prozedur findLargeBlobs
proc findLargeBlobs {pathOrId maxSize} { if {[catch {findObjectId $pathOrId} msg]} { error "$msg" } else { set objId $msg set fh [open [app get tmpDir]/largeBlobs.log w+] foreach o [objWherePath $objId] { set edited [obj withId $o get isEdited] set released [obj withId $o get isReleased] set versions [llength [obj withId $o get contentIds]] if {$edited} { if {[obj withId $o editedContent get blobLength] > $maxSize} { set editedBlobLength [obj withId $o editedContent get blobLength] } } if {$released} { if {[obj withId $o releasedContent get blobLength] > $maxSize} { set releasedBlobLength [obj withId $o releasedContent get blobLength] } } if {[info exists editedBlobLength] || [info exists releasedBlobLength]} { puts $fh [obj withId $o get path] if {[info exists editedBlobLength]} { puts $fh " editedBlobLength: $editedBlobLength" } if {[info exists releasedBlobLength]} { puts $fh " releasedBlobLength: $releasedBlobLength" } puts $fh " versions: $versions" } flush $fh catch {unset editedBlobLength} catch {unset releasedBlobLength} } close $fh } }