From 03f66b8d74a78e556760f65dc99aeffa8e12903c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 2 Jul 2017 15:29:54 +0200 Subject: [PATCH 1/2] Create subdirs below data/ --- src/cmds/restic/testdata/small-repo.tar.gz | Bin 9042 -> 11747 bytes src/restic/backend/layout_default.go | 14 ++++++++++++-- src/restic/backend/layout_test.go | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/cmds/restic/testdata/small-repo.tar.gz b/src/cmds/restic/testdata/small-repo.tar.gz index 83959f539b19f6d8f9270fecba960726046d9db9..92ce87962b5a0a60b667f0596f44d775c86c7481 100644 GIT binary patch literal 11747 zcmX|FcRbbq_m_r@QbvT_DA_49BUdP7C5pRc|Fhbyk6&d5Mh@|I!|@pkeuJn@X#87}& zb!qEc_}!XJ;%WC=3mrc6F}RJ}TCe}@R?$E7bnkqj%pSg6mK)n$PMR%$&|MA%gumzr zyFe3}6fAzz|HbX=6sD(+NZb&H>|7X8k9c~VuzzrkAOL0LFB%6Uukrb!w$MwP=u=wY zGI)pBiS#A)CA`ayhq6&G_-Nw5Yt`5xXg%0e1x~KbDV8oq#wl#(8q$eVau!6 zH`GDIh=Q+aGjkf9(hETtqLqq#epx2pn%pDAo*xrJQX_UzX6%_LOJZA&=WY+ zyH9hF-J=Au%PL?L4|E5jK0gW_%I6>l0FvQ6)P+&}5bXRKBk>^yDgdc3&_YHBkQQ|D zV<8jS3m-h%i!tY3 zC@xWU-Ae0dsN+A{Xlgeof9~30)JH3(FIG2>_oh9*Pm{>vX`Z=LnmA4;v9R>7+sU9y z!DWVh_L`O6v>_hn5oj0usM%#eU>cwGSdt!C*_^6QRlYaMIe7U#Kc9U`w1+X%roDum z&2;fXn$r*A6qkmw1h04Fx~W1^ws_D7Nm9Eou4o zWRZWG>lMcdWTCU6qm|Js56k|Kluof~<1RN1H~1PKnD-`-aHNU#e3NEI|1-Q%w5D+_ z-lMF7$URKbvi*XfBQ`H)J)*C^5W{TrrgcM^X}kk9H<2>tE{1ylT7HnDTiNA~Ft6uP z+O2U_ah$&K+o{f5z1+j6l^$&fyM&TKM9JS2!9hWsb!uIPp_bCKMB=LR--~ATGu_8| zHDQ#|cHWYj8am(C{+{%0nIsl%GI@LYOj_2rS;h=^mA+v^CGURUd~q9P+!2uDwBXj| zt!|T`Id5RS<$b%su!|>RZj+|;?|MQp(heJaOaLEsjdm)aoHJZLB$Z#Z2<4w!VVcaE z!kV>zKE9-2Kvtc#Skde_y|3d?KVVmrH(ZFPwb5#qHeEE>o?Gzx7`fHnMfAk;Jcz^7UsctaN=XVL?+(b@4;BkB1c$&k@tQL3zigr%e5#}t7Da*t7X*0tBo$N%N0M)Y|2wne7Xk!U*iz~dUW z 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 literal 9042 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 Date: Sun, 2 Jul 2017 15:58:03 +0200 Subject: [PATCH 2/2] local/sftp: Create dirs on open() --- src/restic/backend/local/local.go | 26 ++++++++------------------ src/restic/backend/sftp/sftp.go | 9 +++++++++ 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/restic/backend/local/local.go b/src/restic/backend/local/local.go index 4d58b187d..fef16f704 100644 --- a/src/restic/backend/local/local.go +++ b/src/restic/backend/local/local.go @@ -35,6 +35,14 @@ func Open(cfg Config) (*Local, error) { be := &Local{Config: cfg, Layout: l} + // create paths for data and refs. MkdirAll does nothing if the directory already exists. + for _, d := range be.Paths() { + err := fs.MkdirAll(d, backend.Modes.Dir) + if err != nil { + return nil, errors.Wrap(err, "MkdirAll") + } + } + return be, nil } @@ -89,26 +97,8 @@ func (b *Local) Save(ctx context.Context, h restic.Handle, rd io.Reader) (err er filename := b.Filename(h) - // create directories if necessary, ignore errors - if h.Type == restic.DataFile { - err = fs.MkdirAll(filepath.Dir(filename), backend.Modes.Dir) - if err != nil { - return errors.Wrap(err, "MkdirAll") - } - } - // create new file f, err := fs.OpenFile(filename, os.O_CREATE|os.O_EXCL|os.O_WRONLY, backend.Modes.File) - if os.IsNotExist(errors.Cause(err)) { - // create the locks dir, then try again - err = fs.MkdirAll(b.Dirname(h), backend.Modes.Dir) - if err != nil { - return errors.Wrap(err, "MkdirAll") - } - - return b.Save(ctx, h, rd) - } - if err != nil { return errors.Wrap(err, "OpenFile") } diff --git a/src/restic/backend/sftp/sftp.go b/src/restic/backend/sftp/sftp.go index f871da324..ae2d8f8c2 100644 --- a/src/restic/backend/sftp/sftp.go +++ b/src/restic/backend/sftp/sftp.go @@ -126,6 +126,15 @@ func Open(cfg Config) (*SFTP, error) { debug.Log("layout: %v\n", sftp.Layout) + // create paths for data and refs. mkdirAll does nothing if the paths already exist. + for _, d := range sftp.Paths() { + err = sftp.mkdirAll(d, backend.Modes.Dir) + debug.Log("mkdirAll %v -> %v", d, err) + if err != nil { + return nil, err + } + } + sftp.Config = cfg sftp.p = cfg.Path return sftp, nil