public abstract class AbstractFileSystemBackup extends java.lang.Object implements BackupModul
TBD Dokumentation
| Modifier and Type | Class and Description |
|---|---|
private class |
AbstractFileSystemBackup.FileNameComparator |
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.String |
backupBasePath |
protected java.lang.String |
currentBackupPath |
private java.util.List<java.io.File> |
currentContainersToBeSaved |
private int |
currentContIndex |
protected long |
currentSpaceOccupiedByContainerFiles |
protected long |
currentSpaceOccupiedByZipfiles |
protected Debug |
logger |
protected static int |
MAX_CONTAINERS_PER_DIR |
protected static long |
MAX_MEDIUM_SIZE_KB |
static java.lang.String |
PROP_BACKUP_DIR |
PROP_BACKUP_CONTAINER_PER_ZIP, PROP_BACKUP_MEDIUMSIZE| Constructor and Description |
|---|
AbstractFileSystemBackup() |
| Modifier and Type | Method and Description |
|---|---|
void |
backupContainer(int mediumID,
long contID,
java.io.File contFile)
Mit dieser Methode wird festgelegt, dass ein Container auf dem angegebenen und vorher geöffneten Medium zu speichern ist.
|
private void |
backupContainerList()
Zippt die in der Containerlist aufgelisteten Dateien und legt sie in den
currentBackupPath. |
void |
closeMediumAfterBackup(int mediumID,
java.io.File indexFile)
Sobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, wird der aktuelle Backup-Lauf auf diesem Medium mit dieser Methode abgeschlossen.
|
private void |
copyStream(java.io.InputStream in,
java.io.OutputStream out) |
private java.io.InputStream |
detachFileFromZip(java.io.File zipFile,
java.lang.String contFileName)
Entpackt eine ContainerDatei aus einem Zip-File.
|
java.util.List<java.lang.String> |
getAllContFileNames(SuspendableTask task,
int mediumID,
int maxLimit)
Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.
|
abstract java.lang.String |
getBackupPath(int mediumID) |
abstract boolean |
hasMediumCapacity(int mediumID,
long containerSize,
int mediumIndexSize)
Liefert true, falls die noch zur Verfügung stehende Kapazität des angegebenen Mediums ausreicht, um einen Container der Größe
fileSize und den Medienindex mit der momentanen Größe |
abstract void |
initialize(java.util.Properties props)
Diese Methode dient dem Initialisieren des BackupModuls.
|
void |
openMediumBeforeBackup(int mediumID,
java.lang.String backupRunID)
Diese Methode wird aufgerufen, bevor der erste Container auf dem Medium gesichert wird.
|
java.io.InputStream |
restoreContainer(int mediumID,
java.lang.String contFileName)
Mit dieser Methode wird ein
InputStream der Containerdaten des Containers mit Namen contFile auf dem Medium mediumID erzeugt. |
java.lang.String |
toString() |
public static final java.lang.String PROP_BACKUP_DIR
protected static int MAX_CONTAINERS_PER_DIR
protected static long MAX_MEDIUM_SIZE_KB
protected Debug logger
protected long currentSpaceOccupiedByZipfiles
protected long currentSpaceOccupiedByContainerFiles
protected java.lang.String currentBackupPath
protected java.lang.String backupBasePath
private int currentContIndex
private java.util.List<java.io.File> currentContainersToBeSaved
public abstract void initialize(java.util.Properties props)
throws java.lang.Exception
BackupModulDiese Methode dient dem Initialisieren des BackupModuls. Da die Plugins immer mit leerem Konstruktor initialisiert werden, werden mit dieser Methode die Plugin-spezifischen Einstellungen vorgenommen. Fehlt ein obligatorischer Property-Key, wird eine Exception geworfen.
initialize in interface BackupModuljava.lang.Exceptionpublic abstract boolean hasMediumCapacity(int mediumID,
long containerSize,
int mediumIndexSize)
throws BackupException
BackupModulLiefert true, falls die noch zur Verfügung stehende Kapazität des angegebenen Mediums ausreicht, um einen Container der Größe fileSize und den Medienindex mit der momentanen Größe indexSize zu speichern. Falls die Gesamtkapazität nicht durch den Medientyp eindeutig festgelegt ist, liefert das Backup-Modul einen sinnvollen Wert. Beispiel: 1 GB pro Aktenschrank in Keydox, jedoch keinesfalls die Größe der gesamten Festplatte. Ist das gewünschte Medium nicht im Zugriff, wird eine entsprechende Ausnahme ausgelöst.
hasMediumCapacity in interface BackupModulBackupExceptionpublic void backupContainer(int mediumID,
long contID,
java.io.File contFile)
throws BackupException
BackupModulMit dieser Methode wird festgelegt, dass ein Container auf dem angegebenen und vorher geöffneten Medium zu speichern ist. Ob dies sofort geschieht oder später ist Sache der Implementierung. Das BackupModul kann den Parameter containerID verwenden, um z.B. die Container-Dateien zu sortieren oder um Hilfsdatenstrukturen für einen schnellen Zugriff anzulegen.
backupContainer in interface BackupModulBackupExceptionpublic void openMediumBeforeBackup(int mediumID,
java.lang.String backupRunID)
throws BackupException
BackupModulDiese Methode wird aufgerufen, bevor der erste Container auf dem Medium gesichert wird. Mit dem Parameter backupRunID können mehrere Backup-Läufe, die dasselbe Medium verwenden, unterschieden werden. Laut Spezifikation in [TanfArS] kann es im Regelfall nicht auftreten, dass ein Container mehrmals auf demselben Medium abgelegt ist, weil bereits gesicherte Container kein zweitesmal gesichert werden. Es ist dennoch notwendig ein Verhalten für diesen Fall vorzugeben. Beim Wiederherstellen eines Containers wird daher der Container des Mediums verwendet, der unter der alphabetisch größten backupRunID abgelegt wurde.
openMediumBeforeBackup in interface BackupModulmediumID - ID des MediumsbackupRunID - Zur Identifizierung des Sicherungslaufs falls mehrere Sicherungslaeufe auf einem Medium sind. Bei der Wiederherstellung eines Containers werden die Sicherungslaeufe von der alphabetisch letzten backupRunID beginnend bis zur alphabetisch ersten backupRunID nach dem angeforderten Container durchsucht.BackupExceptionpublic void closeMediumAfterBackup(int mediumID,
java.io.File indexFile)
throws BackupException
BackupModulSobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, wird der aktuelle Backup-Lauf auf diesem Medium mit dieser Methode abgeschlossen. Der Parameter übergibt eine Indexdatei, die alle ContainerIDs enthält, die im aktuellen Backup-Lauf auf diesem Medium gesichert wurden. Diese Datei wird auf dem Medium gespeichert. Die weiteren Aufgaben, die einzelne Implementierungen der BackupModule-Schnittstelle hier zu erfüllen haben, sind unterschiedlich. Module, die sofort auf ein Medium schreiben können (Wechselplatten) erfordern keine weiteren Schritte. Für Medien wie DVDs wird in dieser Methode aus den gesammelten Containern ein Image erstellt und auf die DVD gebrannt; bei Keydox wird ein Logout ausgeführt.
closeMediumAfterBackup in interface BackupModulBackupExceptionpublic java.io.InputStream restoreContainer(int mediumID,
java.lang.String contFileName)
throws BackupException
BackupModulMit dieser Methode wird ein InputStream der Containerdaten des Containers mit Namen contFile auf dem Medium mediumID erzeugt. Der BackupManager kopiert die Daten je nach Vorgang ganz oder teilweise in das Archivsystem oder in ein temporäres Verzeichnis. Diese Methode wird zum Wiederherstellen eines Containers, zum Abgleich/Wiederherstellung der Verwaltungsinformation und zur Verifikation verwendet.
restoreContainer in interface BackupModulBackupException@NotNull public abstract java.lang.String getBackupPath(int mediumID)
public java.util.List<java.lang.String> getAllContFileNames(SuspendableTask task, int mediumID, int maxLimit) throws BackupException
BackupModulLiefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.
Wird für den Abgleich von Verwaltungsinformationen (@link HeaderRestoreTask) benoetigt.
getAllContFileNames in interface BackupModultask - Wird zum Anhalten des Backups benötigt, falls das Archivsystem in einen kritischen Bereich eintritt.mediumID - MedienId des Mediums.maxLimit - maximale Anzahl an zurueckgegebenen Containernamen. Wenn -1, dann ist das Ergebnis unlimitiert.BackupExceptionprivate java.io.InputStream detachFileFromZip(java.io.File zipFile,
java.lang.String contFileName)
throws java.lang.Exception
Entpackt eine ContainerDatei aus einem Zip-File.
zipFile - contFileName - java.lang.Exceptionprivate void backupContainerList()
throws java.lang.Exception
Zippt die in der Containerlist aufgelisteten Dateien und legt sie in den currentBackupPath.
java.lang.Exceptionprivate void copyStream(java.io.InputStream in,
java.io.OutputStream out)
throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Object