restic

package
v0.17.2 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2024 License: GPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EnvToPropagate = []string{

	"PATH", "HOME", "XDG_CACHE_HOME", "XDG_CONFIG_HOME", "XDG_DATA_HOME",

	"APPDATA", "LOCALAPPDATA",
}
View Source
var ErrBackupFailed = errors.New("backup failed")
View Source
var ErrPartialBackup = errors.New("incomplete backup")

Functions

func ContextWithLogger added in v0.16.0

func ContextWithLogger(ctx context.Context, logger io.Writer) context.Context

func LoggerFromContext added in v0.16.0

func LoggerFromContext(ctx context.Context) io.Writer

func ValidateSnapshotId

func ValidateSnapshotId(id string) error

Types

type BackupProgressEntry

type BackupProgressEntry struct {
	// Common fields
	MessageType string `json:"message_type"` // "summary" or "status" or "error"

	// Error fields
	Error  any    `json:"error"`
	During string `json:"during"`
	Item   string `json:"item"`

	// Summary fields
	FilesNew            int     `json:"files_new"`
	FilesChanged        int     `json:"files_changed"`
	FilesUnmodified     int     `json:"files_unmodified"`
	DirsNew             int     `json:"dirs_new"`
	DirsChanged         int     `json:"dirs_changed"`
	DirsUnmodified      int     `json:"dirs_unmodified"`
	DataBlobs           int     `json:"data_blobs"`
	TreeBlobs           int     `json:"tree_blobs"`
	DataAdded           int     `json:"data_added"`
	TotalFilesProcessed int     `json:"total_files_processed"`
	TotalBytesProcessed int     `json:"total_bytes_processed"`
	TotalDuration       float64 `json:"total_duration"`
	SnapshotId          string  `json:"snapshot_id"`

	// Status fields
	PercentDone  float64  `json:"percent_done"`
	TotalFiles   int      `json:"total_files"`
	FilesDone    int      `json:"files_done"`
	TotalBytes   int      `json:"total_bytes"`
	BytesDone    int      `json:"bytes_done"`
	CurrentFiles []string `json:"current_files"`
}

func (*BackupProgressEntry) Validate

func (b *BackupProgressEntry) Validate() error

type CmdError

type CmdError struct {
	Command string
	Err     error
	Output  string
}

func (*CmdError) Error

func (e *CmdError) Error() string

func (*CmdError) Is

func (e *CmdError) Is(target error) bool

func (*CmdError) Unwrap

func (e *CmdError) Unwrap() error

type ForgetResult

type ForgetResult struct {
	Keep   []Snapshot `json:"keep"`
	Remove []Snapshot `json:"remove"`
}

func (*ForgetResult) Validate

func (r *ForgetResult) Validate() error

type GenericOption

type GenericOption func(opts *GenericOpts)

func WithEnv

func WithEnv(env ...string) GenericOption

func WithEnviron added in v0.11.0

func WithEnviron() GenericOption

func WithFlags

func WithFlags(flags ...string) GenericOption

func WithPropagatedEnvVars

func WithPropagatedEnvVars(extras ...string) GenericOption

func WithTags

func WithTags(tags ...string) GenericOption

type GenericOpts

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

type LsEntry

type LsEntry struct {
	Name  string `json:"name"`
	Type  string `json:"type"`
	Path  string `json:"path"`
	Uid   int    `json:"uid"`
	Gid   int    `json:"gid"`
	Size  int    `json:"size"`
	Mode  int    `json:"mode"`
	Mtime string `json:"mtime"`
	Atime string `json:"atime"`
	Ctime string `json:"ctime"`
}

func (*LsEntry) ToProto

func (e *LsEntry) ToProto() *v1.LsEntry

type Repo

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

func NewRepo

func NewRepo(resticBin string, uri string, opts ...GenericOption) *Repo

NewRepo instantiates a new repository.

func (*Repo) Backup

func (r *Repo) Backup(ctx context.Context, paths []string, progressCallback func(*BackupProgressEntry), opts ...GenericOption) (*BackupProgressEntry, error)

func (*Repo) Forget

func (r *Repo) Forget(ctx context.Context, policy *RetentionPolicy, opts ...GenericOption) (*ForgetResult, error)

func (*Repo) ForgetSnapshot added in v0.12.0

func (r *Repo) ForgetSnapshot(ctx context.Context, snapshotId string, opts ...GenericOption) error

func (*Repo) Init

func (r *Repo) Init(ctx context.Context, opts ...GenericOption) error

func (*Repo) ListDirectory

func (r *Repo) ListDirectory(ctx context.Context, snapshot string, path string, opts ...GenericOption) (*Snapshot, []*LsEntry, error)

func (*Repo) Prune

func (r *Repo) Prune(ctx context.Context, pruneOutput io.Writer, opts ...GenericOption) error

func (*Repo) Restore

func (r *Repo) Restore(ctx context.Context, snapshot string, callback func(*RestoreProgressEntry), opts ...GenericOption) (*RestoreProgressEntry, error)

func (*Repo) Snapshots

func (r *Repo) Snapshots(ctx context.Context, opts ...GenericOption) ([]*Snapshot, error)

func (*Repo) Stats added in v0.8.0

func (r *Repo) Stats(ctx context.Context, opts ...GenericOption) (*RepoStats, error)

func (*Repo) Unlock

func (r *Repo) Unlock(ctx context.Context, opts ...GenericOption) error

type RepoStats added in v0.8.0

type RepoStats struct {
	TotalSize              int64   `json:"total_size"`
	TotalUncompressedSize  int64   `json:"total_uncompressed_size"`
	CompressionRatio       float64 `json:"compression_ratio"`
	CompressionProgress    float64 `json:"compression_progress"`
	CompressionSpaceSaving float64 `json:"compression_space_saving"`
	TotalBlobCount         int64   `json:"total_blob_count"`
	SnapshotsCount         int64   `json:"snapshots_count"`
}

type RestoreProgressEntry

type RestoreProgressEntry struct {
	MessageType    string  `json:"message_type"` // "summary" or "status"
	SecondsElapsed float64 `json:"seconds_elapsed"`
	TotalBytes     int64   `json:"total_bytes"`
	BytesRestored  int64   `json:"bytes_restored"`
	TotalFiles     int64   `json:"total_files"`
	FilesRestored  int64   `json:"files_restored"`
	PercentDone    float64 `json:"percent_done"`
}

func (*RestoreProgressEntry) Validate

func (e *RestoreProgressEntry) Validate() error

type RetentionPolicy

type RetentionPolicy struct {
	KeepLastN          int    // keep the last n snapshots.
	KeepHourly         int    // keep the last n hourly snapshots.
	KeepDaily          int    // keep the last n daily snapshots.
	KeepWeekly         int    // keep the last n weekly snapshots.
	KeepMonthly        int    // keep the last n monthly snapshots.
	KeepYearly         int    // keep the last n yearly snapshots.
	KeepWithinDuration string // keep snapshots within a duration e.g. 1y2m3d4h5m6s
}

type Snapshot

type Snapshot struct {
	Id       string   `json:"id"`
	Time     string   `json:"time"`
	Tree     string   `json:"tree"`
	Paths    []string `json:"paths"`
	Hostname string   `json:"hostname"`
	Username string   `json:"username"`
	Tags     []string `json:"tags"`
	Parent   string   `json:"parent"`
	// contains filtered or unexported fields
}

func (*Snapshot) UnixTimeMs

func (s *Snapshot) UnixTimeMs() int64

func (*Snapshot) Validate

func (s *Snapshot) Validate() error

Jump to

Keyboard shortcuts

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