restic

package
v0.20.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2022 License: Apache-2.0 Imports: 27 Imported by: 19

Documentation

Index

Constants

View Source
const (
	DefaultOutputFileName = "output.json"
	DefaultScratchDir     = "/tmp"
	DefaultHost           = "host-0"
)
View Source
const (
	RESTIC_REPOSITORY   = "RESTIC_REPOSITORY"
	RESTIC_PASSWORD     = "RESTIC_PASSWORD"
	RESTIC_PROGRESS_FPS = "RESTIC_PROGRESS_FPS"
	TMPDIR              = "TMPDIR"

	AWS_ACCESS_KEY_ID     = "AWS_ACCESS_KEY_ID"
	AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY"
	AWS_DEFAULT_REGION    = "AWS_DEFAULT_REGION"

	GOOGLE_PROJECT_ID               = "GOOGLE_PROJECT_ID"
	GOOGLE_SERVICE_ACCOUNT_JSON_KEY = "GOOGLE_SERVICE_ACCOUNT_JSON_KEY"
	GOOGLE_APPLICATION_CREDENTIALS  = "GOOGLE_APPLICATION_CREDENTIALS"

	AZURE_ACCOUNT_NAME = "AZURE_ACCOUNT_NAME"
	AZURE_ACCOUNT_KEY  = "AZURE_ACCOUNT_KEY"

	REST_SERVER_USERNAME = "REST_SERVER_USERNAME"
	REST_SERVER_PASSWORD = "REST_SERVER_PASSWORD"

	B2_ACCOUNT_ID  = "B2_ACCOUNT_ID"
	B2_ACCOUNT_KEY = "B2_ACCOUNT_KEY"

	// For keystone v1 authentication
	ST_AUTH = "ST_AUTH"
	ST_USER = "ST_USER"
	ST_KEY  = "ST_KEY"
	// For keystone v2 authentication (some variables are optional)
	OS_AUTH_URL    = "OS_AUTH_URL"
	OS_REGION_NAME = "OS_REGION_NAME"
	OS_USERNAME    = "OS_USERNAME"
	OS_PASSWORD    = "OS_PASSWORD"
	OS_TENANT_ID   = "OS_TENANT_ID"
	OS_TENANT_NAME = "OS_TENANT_NAME"
	// For keystone v3 authentication (some variables are optional)
	OS_USER_DOMAIN_NAME    = "OS_USER_DOMAIN_NAME"
	OS_PROJECT_NAME        = "OS_PROJECT_NAME"
	OS_PROJECT_DOMAIN_NAME = "OS_PROJECT_DOMAIN_NAME"
	// For keystone v3 application credential authentication (application credential id)
	OS_APPLICATION_CREDENTIAL_ID     = "OS_APPLICATION_CREDENTIAL_ID"
	OS_APPLICATION_CREDENTIAL_SECRET = "OS_APPLICATION_CREDENTIAL_SECRET"
	// For keystone v3 application credential authentication (application credential name)
	OS_APPLICATION_CREDENTIAL_NAME = "OS_APPLICATION_CREDENTIAL_NAME"
	// For authentication based on tokens
	OS_STORAGE_URL = "OS_STORAGE_URL"
	OS_AUTH_TOKEN  = "OS_AUTH_TOKEN"

	// For using certs in Minio server or REST server
	CA_CERT_DATA = "CA_CERT_DATA"
)
View Source
const FileModeRWXAll = 0o777
View Source
const (
	ResticCMD = "/bin/restic"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BackupOptions

type BackupOptions struct {
	Host              string
	BackupPaths       []string
	StdinPipeCommands []Command
	StdinFileName     string // default "stdin"
	RetentionPolicy   v1alpha1.RetentionPolicy
	Exclude           []string
	Args              []string
}

BackupOptions specifies backup information if StdinPipeCommands is specified, BackupPaths will not be used

type BackupOutput

type BackupOutput struct {
	// BackupTargetStatus shows the status of a backup target
	BackupTargetStatus api_v1beta1.BackupTargetStatus `json:"targetStatus,omitempty"`
}

func ReadBackupOutput

func ReadBackupOutput(filename string) (*BackupOutput, error)

func (*BackupOutput) WriteOutput

func (out *BackupOutput) WriteOutput(fileName string) error

WriteOutput write output of backup process into output.go file in the directory specified by outputDir parameter

type BackupSummary

type BackupSummary struct {
	MessageType         string  `json:"message_type"` // "summary"
	FilesNew            *int64  `json:"files_new"`
	FilesChanged        *int64  `json:"files_changed"`
	FilesUnmodified     *int64  `json:"files_unmodified"`
	DataAdded           uint64  `json:"data_added"`
	TotalFilesProcessed *int64  `json:"total_files_processed"`
	TotalBytesProcessed uint64  `json:"total_bytes_processed"`
	TotalDuration       float64 `json:"total_duration"` // in seconds
	SnapshotID          string  `json:"snapshot_id"`
}

type Command

type Command struct {
	Name string
	Args []interface{}
}

type DumpOptions

type DumpOptions struct {
	Host               string
	SourceHost         string
	Snapshot           string // default "latest"
	Path               string
	FileName           string // default "stdin"
	StdoutPipeCommands []Command
}

type ForgetGroup

type ForgetGroup struct {
	Keep   []json.RawMessage `json:"keep"`
	Remove []json.RawMessage `json:"remove"`
}

type RepositoryStats

type RepositoryStats struct {
	// Integrity shows result of repository integrity check after last backup
	Integrity *bool `json:"integrity,omitempty"`
	// Size show size of repository after last backup
	Size string `json:"size,omitempty"`
	// SnapshotCount shows number of snapshots stored in the repository
	SnapshotCount int64 `json:"snapshotCount,omitempty"`
	// SnapshotsRemovedOnLastCleanup shows number of old snapshots cleaned up according to retention policy on last backup session
	SnapshotsRemovedOnLastCleanup int64 `json:"snapshotsRemovedOnLastCleanup,omitempty"`
}

type ResticWrapper

type ResticWrapper struct {
	// contains filtered or unexported fields
}

func NewResticWrapper

func NewResticWrapper(options SetupOptions) (*ResticWrapper, error)

func NewResticWrapperFromShell added in v0.18.0

func NewResticWrapperFromShell(options SetupOptions, sh *shell.Session) (*ResticWrapper, error)

func (*ResticWrapper) ApplyRetentionPolicies

func (w *ResticWrapper) ApplyRetentionPolicies(retentionPolicy api_v1alpha1.RetentionPolicy) (*RepositoryStats, error)

func (*ResticWrapper) Copy

func (w *ResticWrapper) Copy() *ResticWrapper

Copy function copy input ResticWrapper and returns a new wrapper with copy of its content.

func (*ResticWrapper) DeleteSnapshots

func (w *ResticWrapper) DeleteSnapshots(snapshotIDs []string) ([]byte, error)

func (*ResticWrapper) Dump

func (w *ResticWrapper) Dump(dumpOptions DumpOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)

Dump run restore process for a single host and output the restored files in stdout.

func (*ResticWrapper) DumpEnv

func (w *ResticWrapper) DumpEnv(path string, dumpedFile string) error

func (*ResticWrapper) GetCaPath added in v0.18.0

func (w *ResticWrapper) GetCaPath() string

func (*ResticWrapper) GetEnv added in v0.18.0

func (w *ResticWrapper) GetEnv(key string) string

func (*ResticWrapper) GetRepo

func (w *ResticWrapper) GetRepo() string

func (*ResticWrapper) GetSnapshotSize

func (w *ResticWrapper) GetSnapshotSize(snapshotID string) (uint64, error)

GetSnapshotSize returns size of a snapshot in bytes

func (*ResticWrapper) HideCMD

func (w *ResticWrapper) HideCMD()

func (*ResticWrapper) InitializeRepository

func (w *ResticWrapper) InitializeRepository() error

func (*ResticWrapper) ListSnapshots

func (w *ResticWrapper) ListSnapshots(snapshotIDs []string) ([]Snapshot, error)

func (*ResticWrapper) ParallelDump

func (w *ResticWrapper) ParallelDump(dumpOptions []DumpOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*RestoreOutput, error)

ParallelDump run dump for multiple hosts concurrently using go routine. You can control maximum number of parallel restore process using maxConcurrency parameter.

func (*ResticWrapper) RepositoryAlreadyExist

func (w *ResticWrapper) RepositoryAlreadyExist() bool

func (*ResticWrapper) RunBackup

func (w *ResticWrapper) RunBackup(backupOption BackupOptions, targetRef api_v1beta1.TargetRef) (*BackupOutput, error)

RunBackup takes backup, cleanup old snapshots, check repository integrity etc. It extract valuable information from respective restic command it runs and return them for further use.

func (*ResticWrapper) RunParallelBackup

func (w *ResticWrapper) RunParallelBackup(backupOptions []BackupOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*BackupOutput, error)

RunParallelBackup runs multiple backup in parallel. Host must be different for each backup.

func (*ResticWrapper) RunParallelRestore

func (w *ResticWrapper) RunParallelRestore(restoreOptions []RestoreOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*RestoreOutput, error)

RunParallelRestore run restore process for multiple hosts in parallel using go routine. You can control maximum number of parallel restore using maxConcurrency parameter.

func (*ResticWrapper) RunRestore

func (w *ResticWrapper) RunRestore(restoreOptions RestoreOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)

RunRestore run restore process for a single host.

func (*ResticWrapper) SetEnv

func (w *ResticWrapper) SetEnv(key, value string)

func (*ResticWrapper) UnlockRepository

func (w *ResticWrapper) UnlockRepository() error

func (*ResticWrapper) VerifyRepositoryIntegrity

func (w *ResticWrapper) VerifyRepositoryIntegrity() (*RepositoryStats, error)

type RestoreOptions

type RestoreOptions struct {
	Host         string
	SourceHost   string
	RestorePaths []string
	Snapshots    []string // when Snapshots are specified SourceHost and RestorePaths will not be used
	Destination  string   // destination path where snapshot will be restored, used in cli
	Exclude      []string
	Include      []string
	Args         []string
}

RestoreOptions specifies restore information

type RestoreOutput

type RestoreOutput struct {
	// RestoreTargetStatus shows the status of a restore target
	RestoreTargetStatus api_v1beta1.RestoreMemberStatus `json:"targetStatus,omitempty"`
}

func ReadRestoreOutput

func ReadRestoreOutput(filename string) (*RestoreOutput, error)

func (*RestoreOutput) WriteOutput

func (out *RestoreOutput) WriteOutput(fileName string) error

type SetupOptions

type SetupOptions struct {
	Provider       string
	Bucket         string
	Endpoint       string
	Region         string
	Path           string
	CacertFile     string
	ScratchDir     string
	EnableCache    bool
	MaxConnections int64
	StorageSecret  *core.Secret
	Nice           *ofst.NiceSettings
	IONice         *ofst.IONiceSettings
}

type Snapshot

type Snapshot struct {
	ID       string    `json:"id"`
	Time     time.Time `json:"time"`
	Tree     string    `json:"tree"`
	Paths    []string  `json:"paths"`
	Hostname string    `json:"hostname"`
	Username string    `json:"username"`
	UID      int       `json:"uid"`
	Gid      int       `json:"gid"`
	Tags     []string  `json:"tags"`
}

type StatsContainer

type StatsContainer struct {
	TotalSize uint64 `json:"total_size"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL