public class ContainerRescue extends Object
-verzeichnis=...
kann ein beliebiges Verzeichnis angegeben werden, in dem Containerdateien gesucht werden. Defaultwert ist das aktuelle
Arbeitsverzeichnis in dem das Programm gestartet wurde.
Mit -rekursiv=ja|nein
kann spezifiziert werden, ob auch Unterverzeichnisse des Ausgangsverzeichnisses rekursiv durchsucht werden sollen oder
nicht. Ohne Angabe dieses Arguments werden auch Unterverzeichnisse rekursiv durchsucht.
Mit -reparieren=nein|ja
kann spezifiziert werden, ob fehlerhafte Dateien nur identifiziert werden sollen oder ob sie auch repariert werden
sollen.
Mit -index=ja|nein
kann spezifiziert werden, ob Indexdateien überprüft werden
sollen.
Mit -container=ja|nein
kann spezifiziert werden, ob Containerdateien überprüft werden
sollen.Modifier and Type | Class and Description |
---|---|
private static class |
ContainerRescue.Defect |
Modifier and Type | Field and Description |
---|---|
private List<ContainerRescue.Defect> |
_badIndexFiles |
private List<ContainerRescue.Defect> |
_badRangeEndDefects |
private List<ContainerRescue.Defect> |
_cantFix |
private boolean |
_checkContainerFiles |
private long |
_checkedContainerFileCount |
private long |
_checkedIndexFileCount |
private boolean |
_checkIndexFiles |
private FilenameFilter |
_containerFilenameFilter |
private Pattern |
_containerFilenamePattern |
private long |
_correctedDefectCount |
private long |
_defectContainerFileCount |
private long |
_defectIndexFileCount |
private FileFilter |
_directoryFileFilter |
private boolean |
_fixDefects |
private FilenameFilter |
_indexFilenameFilter |
private Pattern |
_indexFilenamePattern |
private List<ContainerRescue.Defect> |
_oneByteShortDefects |
private boolean |
_recursiveScan |
private File |
_startDirectory |
private long |
_validContainerFileCount |
private long |
_validIndexFileCount |
Constructor and Description |
---|
ContainerRescue(ArgumentList arguments) |
Modifier and Type | Method and Description |
---|---|
private void |
checkContainerFile(File containerFile) |
private ContainerRescue.Defect |
checkDataIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse
DataIndexIndex . |
private ContainerRescue.Defect |
checkDataTimeIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse
DataTimeIndex . |
private ContainerRescue.Defect |
checkDIDIndexFile(RandomAccessFile raf,
File fileName,
HashSet<Long> containerIDs)
Prüft Indexdateien der Klasse
ATimeMonotoneIndex . |
private void |
checkIndexFile(File indexFile,
HashSet<Long> containerIDs) |
private HashSet<Long> |
fileListToIdList(List<File> containerFiles) |
private static void |
fixBadIndexFileDefect(ContainerRescue.Defect badIndexFileDefect) |
private void |
fixBadRangeEndDefect(ContainerRescue.Defect defect)
Beim Löschen eines Containers, in dem als erster Datensatz ein Potentielle-Lücke-Datensatz enthalten ist, wird die optimierte Aufzählung der enthaltenen
Datensatzindizes mit falschem Endwert (-9223372036854775808) des ersten Bereichs erzeugt.
|
private void |
fixOneByteShortDefect(ContainerRescue.Defect defect)
Beim Löschen eines Containers mit der Methode ContainerFile.deleteContainerData() werden die in der Container-Datei enthaltenen Datensätze ersetzt durch
eine optimierte Aufzählung der verwendeten Datensatzindizes.
|
private ContainerRescue.Defect |
inspectContainerFile(File containerFile) |
private ContainerRescue.Defect |
inspectIndexFile(File indexFile,
HashSet<Long> containerIDs) |
static void |
main(String[] args) |
private static long |
read5(RandomAccessFile raf) |
private static long |
read6(RandomAccessFile raf) |
private static void |
rebuildIndexFile(File fileName,
String indexKind) |
private void |
scan(File directory) |
private void |
start() |
private File _startDirectory
private boolean _recursiveScan
private boolean _fixDefects
private boolean _checkContainerFiles
private boolean _checkIndexFiles
private final FilenameFilter _containerFilenameFilter
private Pattern _containerFilenamePattern
private final FilenameFilter _indexFilenameFilter
private Pattern _indexFilenamePattern
private FileFilter _directoryFileFilter
private List<ContainerRescue.Defect> _cantFix
private List<ContainerRescue.Defect> _oneByteShortDefects
private long _validContainerFileCount
private long _checkedContainerFileCount
private long _defectContainerFileCount
private long _validIndexFileCount
private long _checkedIndexFileCount
private long _defectIndexFileCount
private List<ContainerRescue.Defect> _badRangeEndDefects
private List<ContainerRescue.Defect> _badIndexFiles
private long _correctedDefectCount
public ContainerRescue(ArgumentList arguments)
public static void main(String[] args)
private void start()
private void scan(File directory)
private ContainerRescue.Defect inspectIndexFile(File indexFile, HashSet<Long> containerIDs)
private ContainerRescue.Defect checkDIDIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
ATimeMonotoneIndex
. In dieser Klasse ist gefordert, dass die Archivzeit monoton und
die ContainerID streng monoton ueber alle Eintraege hinweg steigend sind.raf
- Geöffnete DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.IOException
- Eingabe-Ausgabe-Fehlerprivate ContainerRescue.Defect checkDataTimeIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
DataTimeIndex
. In dieser Klasse ist gefordert, dass die Einträge nach der minimalen
Datenzeit sortiert sindraf
- Geöffente DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.IOException
- Eingabe-Ausgabe-Fehlerprivate ContainerRescue.Defect checkDataIndexFile(RandomAccessFile raf, File fileName, HashSet<Long> containerIDs) throws IOException
DataIndexIndex
. In dieser Klasse ist gefordert, dass die Einträge nach der
minimalen Datenzeit sortiert sindraf
- Geöffente DateifileName
- DateicontainerIDs
- hashSet mit ContainerIDs, die in der IndexDatei vorkommen müssen.IOException
- Eingabe-Ausgabe-Fehlerprivate static long read5(RandomAccessFile raf) throws IOException
IOException
private static long read6(RandomAccessFile raf) throws IOException
IOException
private static void fixBadIndexFileDefect(ContainerRescue.Defect badIndexFileDefect)
private static void rebuildIndexFile(File fileName, String indexKind) throws IOException, IndexException, PersistenceException
private void checkContainerFile(File containerFile)
private ContainerRescue.Defect inspectContainerFile(File containerFile)
private void fixOneByteShortDefect(ContainerRescue.Defect defect)
defect
- Identifizierter Defekt einer Containerdateiprivate void fixBadRangeEndDefect(ContainerRescue.Defect defect)
defect
- Identifizierter Defekt einer Containerdatei