Package de.bsvrz.ars.ars.backup.plugins
Class AbstractFileSystemBackup
java.lang.Object
de.bsvrz.ars.ars.backup.plugins.AbstractFileSystemBackup
- All Implemented Interfaces:
BackupImplementation
- Direct Known Subclasses:
FileSystemBackupImpl
public abstract class AbstractFileSystemBackup extends java.lang.Object implements BackupImplementation
Gemeinsame Basisklasse für DVD und Filesystem-Backup.
-
Field Summary
Fields Modifier and Type Field Description protected int
_maxContainersPerZip
Aktueller Wert für die Anzahl Container pro Zip-Dateiprotected long
_maxMediumSizeKb
Aktueller Wert für die maximale Mediengröße in Kilobytesprotected java.lang.String
backupBasePath
Backup-Basispfad.protected java.lang.String
currentBackupPath
Aktueller Unterordner, in den gesichert werden sollprotected long
currentSpaceOccupiedByContainers
Bisher benutzter Speicherplatz der Containerdateien für die aktuelle zip-Datei (noch unkomprimiert)protected long
currentSpaceOccupiedByZipfiles
Busher benutzter Speicherplatz von Zip-Dateien auf dem aktuellen Mediumprotected de.bsvrz.sys.funclib.debug.Debug
logger
Debug-Loggerstatic java.lang.String
PROP_BACKUP_CONTAINER_PER_ZIP
Key der Properties-Einstellung für die Anzahl Container pro Zip-Dateistatic java.lang.String
PROP_BACKUP_DIR
Key der Properties-Einstellung für das Sicherungsverzeichnisstatic java.lang.String
PROP_BACKUP_MEDIUMSIZE
Key der Properties-Einstellun ür die maximale Mediengröße -
Constructor Summary
Constructors Constructor Description AbstractFileSystemBackup()
-
Method Summary
Modifier and Type Method Description boolean
backupContainer(int mediumID, Container contFile)
Mit dieser Methode wird festgelegt, dass ein Container auf dem angegebenen und vorher geöffneten Medium zu speichern ist.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.java.util.List<java.lang.String>
getAllContFileNames(Task task, int mediumID)
Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.abstract java.lang.String
getBackupPath(int mediumID)
Gibt den Ordnernamen zurück, in den Daten des angegebenen Medium gespeichert werden sollenabstract boolean
hasMediumCapacity(long containerSize, int mediumIndexSize)
Gibt zurück, ob für einen Container der Größe ContainerSize noch auf dem aktuellen Medium Platz istvoid
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 einInputStream
der Containerdaten des Containers mit NamencontFile
auf dem MediummediumID
erzeugt.java.lang.String
toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Field Details
-
PROP_BACKUP_DIR
public static final java.lang.String PROP_BACKUP_DIRKey der Properties-Einstellung für das Sicherungsverzeichnis- See Also:
- Constant Field Values
-
PROP_BACKUP_CONTAINER_PER_ZIP
public static final java.lang.String PROP_BACKUP_CONTAINER_PER_ZIPKey der Properties-Einstellung für die Anzahl Container pro Zip-Datei- See Also:
- Constant Field Values
-
PROP_BACKUP_MEDIUMSIZE
public static final java.lang.String PROP_BACKUP_MEDIUMSIZEKey der Properties-Einstellun ür die maximale Mediengröße- See Also:
- Constant Field Values
-
_maxContainersPerZip
protected int _maxContainersPerZipAktueller Wert für die Anzahl Container pro Zip-Datei -
_maxMediumSizeKb
protected long _maxMediumSizeKbAktueller Wert für die maximale Mediengröße in Kilobytes -
logger
protected final de.bsvrz.sys.funclib.debug.Debug loggerDebug-Logger -
currentSpaceOccupiedByZipfiles
protected long currentSpaceOccupiedByZipfilesBusher benutzter Speicherplatz von Zip-Dateien auf dem aktuellen Medium -
currentSpaceOccupiedByContainers
protected long currentSpaceOccupiedByContainersBisher benutzter Speicherplatz der Containerdateien für die aktuelle zip-Datei (noch unkomprimiert) -
currentBackupPath
protected java.lang.String currentBackupPathAktueller Unterordner, in den gesichert werden soll -
backupBasePath
protected java.lang.String backupBasePathBackup-Basispfad. Muss von implementierenden Klassen gesetzt werden.
-
-
Constructor Details
-
AbstractFileSystemBackup
public AbstractFileSystemBackup()
-
-
Method Details
-
hasMediumCapacity
public abstract boolean hasMediumCapacity(long containerSize, int mediumIndexSize)Gibt zurück, ob für einen Container der Größe ContainerSize noch auf dem aktuellen Medium Platz ist- Parameters:
containerSize
- Container-Größe in bytesmediumIndexSize
- Geschätzte Größe des Medium-Indexes (Indexdatei)- Returns:
- true: Es ist Platz vorhanden, false: Es ist kein Platz vorhanden
-
backupContainer
Description copied from interface:BackupImplementation
Mit 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. DasBackupModul
kann den ParametercontainerData
verwenden, um z.B. die Container-Dateien zu sortieren oder um Hilfsdatenstrukturen für einen schnellen Zugriff anzulegen. Diese Methode sollte true zurück geben, wenn der Container erfolgreich auf dem Container ergänzt wurde, oder false wenn er nicht mehr auf das Medium passt. In dem Fall wird derBackupTask
das Medium schließen, das nächste Medium mitBackupImplementation.openMediumBeforeBackup(int, String)
öffnen/anlegen und dann diese Methode mit dem gleichen Container erneut aufrufen.- Specified by:
backupContainer
in interfaceBackupImplementation
- Parameters:
mediumID
- Medien-ID, auf die der Container gesichert werden soll. Sofern die Medien-Id inBackupImplementation.openMediumBeforeBackup(int, String)
gemerkt wurde oder die Container alle inBackupImplementation.closeMediumAfterBackup(int, File)
gesichert werden, kann dieser Parameter möglicherweise ignoriert werden.contFile
- Klasse, mit der man Infos über den Container abrufen kann, sowie eineMethode für die eigentliche Kopier-Aktion
. Das Objekt kann zwischengespeichert werden, bis das Medium inBackupImplementation.closeMediumAfterBackup(int, File)
abgeschlossen wird. Danach sind die enthaltenen Informationen möglicherweise ungültig.- Returns:
- true wenn der Container noch auf das Medium gepasst hat, sonst false
- Throws:
BackupException
- Die Implementierung kann bei Schreibfehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
-
openMediumBeforeBackup
public void openMediumBeforeBackup(int mediumID, java.lang.String backupRunID)Description copied from interface:BackupImplementation
Diese 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 zweites mal 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.- Specified by:
openMediumBeforeBackup
in interfaceBackupImplementation
- Parameters:
mediumID
- ID des MediumsbackupRunID
- Zur Identifizierung des Sicherungslaufs falls mehrere Sicherungsläufe auf einem Medium sind. Bei der Wiederherstellung eines Containers werden die Sicherungsläufe von der alphabetisch letzten backupRunID beginnend bis zur alphabetisch ersten backupRunID nach dem angeforderten Container durchsucht.
-
closeMediumAfterBackup
Description copied from interface:BackupImplementation
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. Der Parameter übergibt eine Indexdatei, die alleContainerID
s 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 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.- Specified by:
closeMediumAfterBackup
in interfaceBackupImplementation
- Parameters:
mediumID
- Medien-IDindexFile
- Indexdatei, die die ContainerIDs enthält- Throws:
BackupException
- Die Implementierung kann bei Schreibfehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
-
restoreContainer
public java.io.InputStream restoreContainer(int mediumID, java.lang.String contFileName) throws BackupExceptionDescription copied from interface:BackupImplementation
Mit dieser Methode wird einInputStream
der Containerdaten des Containers mit NamencontFile
auf dem MediummediumID
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.- Specified by:
restoreContainer
in interfaceBackupImplementation
- Parameters:
mediumID
- Medien-IDcontFileName
- Dateiname des wiederherzustellenden Containers- Returns:
- InputStream
- Throws:
BackupException
- Die Implementierung kann bei Lesefehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
-
getBackupPath
@NotNull public abstract java.lang.String getBackupPath(int mediumID)Gibt den Ordnernamen zurück, in den Daten des angegebenen Medium gespeichert werden sollen- Parameters:
mediumID
- medien-ID- Returns:
- Ordnernamen
-
getAllContFileNames
public java.util.List<java.lang.String> getAllContFileNames(Task task, int mediumID) throws BackupExceptionDescription copied from interface:BackupImplementation
Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.Wird für den Abgleich von Verwaltungsinformationen (
HeaderRestoreTask
) benoetigt.- Specified by:
getAllContFileNames
in interfaceBackupImplementation
- Parameters:
task
- Wird zum Anhalten des Backups benötigt, falls das Archivsystem in einen kritischen Bereich eintritt.mediumID
- MedienId des Mediums.- Returns:
- Liste mit den Filenames der Container.
- Throws:
BackupException
- Die Implementierung kann bei Lesefehlern, etc. hiermit Exceptions erzeugen um das Archivsystem über den Fehlschlag zu informieren.
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
-