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 Object implements BackupImplementation
Gemeinsame Basisklasse für DVD und Filesystem-Backup.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    Aktueller Wert für die Anzahl Container pro Zip-Datei
    protected long
    Aktueller Wert für die maximale Mediengröße in Kilobytes
    protected String
    Backup-Basispfad.
    protected String
    Aktueller Unterordner, in den gesichert werden soll
    protected long
    Bisher benutzter Speicherplatz der Containerdateien für die aktuelle zip-Datei (noch unkomprimiert)
    protected long
    Busher benutzter Speicherplatz von Zip-Dateien auf dem aktuellen Medium
    protected final de.bsvrz.sys.funclib.debug.Debug
    Debug-Logger
    static final String
    Key der Properties-Einstellung für die Anzahl Container pro Zip-Datei
    static final String
    Key der Properties-Einstellung für das Sicherungsverzeichnis
    static final String
    Key der Properties-Einstellun ür die maximale Mediengröße
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • 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, File indexFile)
    Sobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, oder sonst am Ende des Backups, wird der aktuelle Backup-Lauf auf diesem Medium mit dieser Methode abgeschlossen.
    getAllContFileNames(de.bsvrz.ars.ars.mgmt.tasks.AbstractTask task, int mediumID)
    Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.
    abstract String
    getBackupPath(int mediumID)
    Gibt den Ordnernamen zurück, in den Daten des angegebenen Medium gespeichert werden sollen
    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
    void
    openMediumBeforeBackup(int mediumID, String backupRunID)
    Diese Methode wird aufgerufen, bevor der erste Container auf dem Medium gesichert wird.
    restoreContainer(int mediumID, String contFileName)
    Mit dieser Methode wird ein InputStream der Containerdaten des Containers mit Namen contFile auf dem Medium mediumID erzeugt.
     

    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 String PROP_BACKUP_DIR
      Key der Properties-Einstellung für das Sicherungsverzeichnis
      See Also:
    • PROP_BACKUP_CONTAINER_PER_ZIP

      public static final String PROP_BACKUP_CONTAINER_PER_ZIP
      Key der Properties-Einstellung für die Anzahl Container pro Zip-Datei
      See Also:
    • PROP_BACKUP_MEDIUMSIZE

      public static final String PROP_BACKUP_MEDIUMSIZE
      Key der Properties-Einstellun ür die maximale Mediengröße
      See Also:
    • _maxContainersPerZip

      protected int _maxContainersPerZip
      Aktueller Wert für die Anzahl Container pro Zip-Datei
    • _maxMediumSizeKb

      protected long _maxMediumSizeKb
      Aktueller Wert für die maximale Mediengröße in Kilobytes
    • logger

      protected final de.bsvrz.sys.funclib.debug.Debug logger
      Debug-Logger
    • currentSpaceOccupiedByZipfiles

      protected long currentSpaceOccupiedByZipfiles
      Busher benutzter Speicherplatz von Zip-Dateien auf dem aktuellen Medium
    • currentSpaceOccupiedByContainers

      protected long currentSpaceOccupiedByContainers
      Bisher benutzter Speicherplatz der Containerdateien für die aktuelle zip-Datei (noch unkomprimiert)
    • currentBackupPath

      protected String currentBackupPath
      Aktueller Unterordner, in den gesichert werden soll
    • backupBasePath

      protected String backupBasePath
      Backup-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 bytes
      mediumIndexSize - Geschätzte Größe des Medium-Indexes (Indexdatei)
      Returns:
      true: Es ist Platz vorhanden, false: Es ist kein Platz vorhanden
    • backupContainer

      public boolean backupContainer(int mediumID, Container contFile) throws BackupException
      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. Das BackupModul kann den Parameter containerData 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 Medium ergänzt wurde, oder false, wenn er nicht mehr auf das Medium passt. In dem Fall wird der BackupTask das Medium schließen, das nächste Medium mit BackupImplementation.openMediumBeforeBackup(int, String) öffnen/anlegen und dann diese Methode mit dem gleichen Container erneut aufrufen.

      Specified by:
      backupContainer in interface BackupImplementation
      Parameters:
      mediumID - Medien-ID, auf die der Container gesichert werden soll. Sofern die Medien-Id in BackupImplementation.openMediumBeforeBackup(int, String) gemerkt wurde oder die Container alle in BackupImplementation.closeMediumAfterBackup(int, File) gesichert werden, kann dieser Parameter möglicherweise ignoriert werden.
      contFile - Klasse, mit der man Infos über den Container abrufen kann, sowie eine Methode für die eigentliche Kopier-Aktion. Das Objekt kann zwischengespeichert werden, bis das Medium in BackupImplementation.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, 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 interface BackupImplementation
      Parameters:
      mediumID - ID des Mediums
      backupRunID - 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

      public void closeMediumAfterBackup(int mediumID, File indexFile) throws BackupException
      Description copied from interface: BackupImplementation
      Sobald auf einem Medium keine Kapazität für weitere Container mehr vorhanden ist, oder sonst am Ende des Backups, 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 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 interface BackupImplementation
      Parameters:
      mediumID - Medien-ID
      indexFile - 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 InputStream restoreContainer(int mediumID, String contFileName) throws BackupException
      Description copied from interface: BackupImplementation
      Mit 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.
      Specified by:
      restoreContainer in interface BackupImplementation
      Parameters:
      mediumID - Medien-ID
      contFileName - 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 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 List<String> getAllContFileNames(de.bsvrz.ars.ars.mgmt.tasks.AbstractTask task, int mediumID) throws BackupException
      Description copied from interface: BackupImplementation
      Liefert die zuletzt gesicherten Container, die sich auf dem Mediums befinden.

      Wird für den Abgleich von Verwaltungsinformationen benoetigt.

      Specified by:
      getAllContFileNames in interface BackupImplementation
      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 String toString()
      Overrides:
      toString in class Object