Documentation ¶
Index ¶
- type AdapterType
- type ArchiveDetails
- type Backup
- func (b *Backup) Checksum() ([]byte, error)
- func (b *Backup) Details(ctx context.Context, parts []remote.BackupPart) (*ArchiveDetails, error)
- func (b *Backup) Identifier() string
- func (b *Backup) Ignored() string
- func (b *Backup) Path() string
- func (b *Backup) SetClient(c remote.Client)
- func (b *Backup) Size() (int64, error)
- type BackupInterface
- type LocalBackup
- func (b *LocalBackup) Generate(ctx context.Context, fsys *filesystem.Filesystem, ignore string) (*ArchiveDetails, error)
- func (b *LocalBackup) Remove() error
- func (b *LocalBackup) Restore(ctx context.Context, _ io.Reader, callback RestoreCallback) error
- func (b *LocalBackup) WithLogContext(c map[string]interface{})
- type Reader
- type RestoreCallback
- type S3Backup
- func (s *S3Backup) Generate(ctx context.Context, fsys *filesystem.Filesystem, ignore string) (*ArchiveDetails, error)
- func (s *S3Backup) Remove() error
- func (s *S3Backup) Restore(ctx context.Context, r io.Reader, callback RestoreCallback) error
- func (s *S3Backup) WithLogContext(c map[string]interface{})
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdapterType ¶
type AdapterType string
const ( LocalBackupAdapter AdapterType = "wings" S3BackupAdapter AdapterType = "s3" )
type ArchiveDetails ¶
type ArchiveDetails struct { Checksum string `json:"checksum"` ChecksumType string `json:"checksum_type"` Size int64 `json:"size"` Parts []remote.BackupPart `json:"parts"` }
func (*ArchiveDetails) ToRequest ¶
func (ad *ArchiveDetails) ToRequest(successful bool) remote.BackupRequest
ToRequest returns a request object.
type Backup ¶
type Backup struct { // The UUID of this backup object. This must line up with a backup from // the panel instance. Uuid string `json:"uuid"` // An array of files to ignore when generating this backup. This should be // compatible with a standard .gitignore structure. Ignore string `json:"ignore"` // contains filtered or unexported fields }
func (*Backup) Details ¶
func (b *Backup) Details(ctx context.Context, parts []remote.BackupPart) (*ArchiveDetails, error)
Details returns both the checksum and size of the archive currently stored on the disk to the caller.
func (*Backup) Identifier ¶
type BackupInterface ¶
type BackupInterface interface { // SetClient sets the API request client on the backup interface. SetClient(remote.Client) // Identifier returns the UUID of this backup as tracked by the panel // instance. Identifier() string // WithLogContext attaches additional context to the log output for this // backup. WithLogContext(map[string]interface{}) // Generate creates a backup in whatever the configured source for the // specific implementation is. Generate(context.Context, *filesystem.Filesystem, string) (*ArchiveDetails, error) // Ignored returns the ignored files for this backup instance. Ignored() string // Checksum returns a SHA1 checksum for the generated backup. Checksum() ([]byte, error) // Size returns the size of the generated backup. Size() (int64, error) // Path returns the path to the backup on the machine. This is not always // the final storage location of the backup, simply the location we're using // to store it until it is moved to the final spot. Path() string // Details returns details about the archive. Details(context.Context, []remote.BackupPart) (*ArchiveDetails, error) // Remove removes a backup file. Remove() error // Restore is called when a backup is ready to be restored to the disk from // the given source. Not every backup implementation will support this nor // will every implementation require a reader be provided. Restore(context.Context, io.Reader, RestoreCallback) error }
noinspection GoNameStartsWithPackageName
type LocalBackup ¶
type LocalBackup struct {
Backup
}
func LocateLocal ¶
LocateLocal finds the backup for a server and returns the local path. This will obviously only work if the backup was created as a local backup.
func (*LocalBackup) Generate ¶
func (b *LocalBackup) Generate(ctx context.Context, fsys *filesystem.Filesystem, ignore string) (*ArchiveDetails, error)
Generate generates a backup of the selected files and pushes it to the defined location for this instance.
func (*LocalBackup) Remove ¶
func (b *LocalBackup) Remove() error
Remove removes a backup from the system.
func (*LocalBackup) Restore ¶
func (b *LocalBackup) Restore(ctx context.Context, _ io.Reader, callback RestoreCallback) error
Restore will walk over the archive and call the callback function for each file encountered.
func (*LocalBackup) WithLogContext ¶
func (b *LocalBackup) WithLogContext(c map[string]interface{})
WithLogContext attaches additional context to the log output for this backup.
type Reader ¶
Reader provides a wrapper around an existing io.Reader but implements io.Closer in order to satisfy an io.ReadCloser.
type RestoreCallback ¶
RestoreCallback is a generic restoration callback that exists for both local and remote backups allowing the files to be restored.
type S3Backup ¶
type S3Backup struct {
Backup
}
func (*S3Backup) Generate ¶
func (s *S3Backup) Generate(ctx context.Context, fsys *filesystem.Filesystem, ignore string) (*ArchiveDetails, error)
Generate creates a new backup on the disk, moves it into the S3 bucket via the provided presigned URL, and then deletes the backup from the disk.
func (*S3Backup) Restore ¶
Restore will read from the provided reader assuming that it is a gzipped tar reader. When a file is encountered in the archive the callback function will be triggered. If the callback returns an error the entire process is stopped, otherwise this function will run until all files have been written.
This restoration uses a workerpool to use up to the number of CPUs available on the machine when writing files to the disk.
func (*S3Backup) WithLogContext ¶
WithLogContext attaches additional context to the log output for this backup.