mirror of
https://github.com/restic/restic.git
synced 2025-01-03 05:35:43 +00:00
Fix S3 legacy layout migration
This commit is contained in:
parent
04e49924fb
commit
5a6f2f9fa0
1 changed files with 20 additions and 4 deletions
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/restic/restic/internal/backend"
|
"github.com/restic/restic/internal/backend"
|
||||||
"github.com/restic/restic/internal/backend/s3"
|
"github.com/restic/restic/internal/backend/s3"
|
||||||
|
"github.com/restic/restic/internal/cache"
|
||||||
"github.com/restic/restic/internal/debug"
|
"github.com/restic/restic/internal/debug"
|
||||||
"github.com/restic/restic/internal/errors"
|
"github.com/restic/restic/internal/errors"
|
||||||
"github.com/restic/restic/internal/restic"
|
"github.com/restic/restic/internal/restic"
|
||||||
|
@ -21,10 +22,25 @@ func init() {
|
||||||
// "default" layout.
|
// "default" layout.
|
||||||
type S3Layout struct{}
|
type S3Layout struct{}
|
||||||
|
|
||||||
|
func toS3Backend(repo restic.Repository) *s3.Backend {
|
||||||
|
b := repo.Backend()
|
||||||
|
// unwrap cache
|
||||||
|
if be, ok := b.(*cache.Backend); ok {
|
||||||
|
b = be.Backend
|
||||||
|
}
|
||||||
|
|
||||||
|
be, ok := b.(*s3.Backend)
|
||||||
|
if !ok {
|
||||||
|
debug.Log("backend is not s3")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return be
|
||||||
|
}
|
||||||
|
|
||||||
// Check tests whether the migration can be applied.
|
// Check tests whether the migration can be applied.
|
||||||
func (m *S3Layout) Check(ctx context.Context, repo restic.Repository) (bool, error) {
|
func (m *S3Layout) Check(ctx context.Context, repo restic.Repository) (bool, error) {
|
||||||
be, ok := repo.Backend().(*s3.Backend)
|
be := toS3Backend(repo)
|
||||||
if !ok {
|
if be == nil {
|
||||||
debug.Log("backend is not s3")
|
debug.Log("backend is not s3")
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -75,8 +91,8 @@ func (m *S3Layout) moveFiles(ctx context.Context, be *s3.Backend, l backend.Layo
|
||||||
|
|
||||||
// Apply runs the migration.
|
// Apply runs the migration.
|
||||||
func (m *S3Layout) Apply(ctx context.Context, repo restic.Repository) error {
|
func (m *S3Layout) Apply(ctx context.Context, repo restic.Repository) error {
|
||||||
be, ok := repo.Backend().(*s3.Backend)
|
be := toS3Backend(repo)
|
||||||
if !ok {
|
if be == nil {
|
||||||
debug.Log("backend is not s3")
|
debug.Log("backend is not s3")
|
||||||
return errors.New("backend is not s3")
|
return errors.New("backend is not s3")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue