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) imFionaDir/instance/InstanceDir/script/cm/clientCmds-Verzeichnis ab, wobeiFionaDirIhr Fiona-Installationsverzeichnis undInstanceDirIhr 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 demsource-Befehl manuell ein.Öffnen Sie in der zu untersuchenden CMS-Instanz den Tcl-Client, indem Sie im
bin-Verzeichnis./clientaufrufen, und stellen Sie mitconnecteine Verbindung zum CM her:./client connect hostname port username password
Beispiel:
connect localhost 3001 root demoWenn 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.tclErsetzen Sie die Platzhalter
FionaDirundInstanceDirwieder 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
/myContentFolderoder 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
}
}