@@ -126,8 +126,12 @@ func SplitLargeFile(file, splitTargetSize string, rmOrigin bool) (splitedFiles [
126
126
// 参数: originDir 为 /data/dbbak/REDIS-FULL-rocksdb-1.1.1.1-30000
127
127
// 参数: tarSaveDir 为 /tmp/
128
128
// 返回值: tarFile 为 /tmp/REDIS-FULL-rocksdb-1.1.1.1-30000.tar
129
- func TarADir (originDir , tarSaveDir string , rmOrigin bool ) (tarFile string , err error ) {
129
+ func TarADir (originDir , tarSaveDir string , rmOrigin bool , tarUseDbTools bool ) (tarFile string , err error ) {
130
130
var tarCmd , rmCmd string
131
+ tarBin := "tar" // use by default: system
132
+ if tarUseDbTools {
133
+ tarBin = consts .TarBin
134
+ }
131
135
basename := filepath .Base (originDir )
132
136
baseDir := filepath .Dir (originDir )
133
137
if tarSaveDir == "" {
@@ -136,23 +140,23 @@ func TarADir(originDir, tarSaveDir string, rmOrigin bool) (tarFile string, err e
136
140
tarFile = filepath .Join (tarSaveDir , basename + ".tar" )
137
141
138
142
if rmOrigin {
139
- tarCmd = fmt .Sprintf (`cd %s && tar -cf %s %s && rm -rf %s` ,
140
- baseDir , filepath .Base (tarFile ), basename , basename )
143
+ tarCmd = fmt .Sprintf (`cd %s && %s -cf %s %s && rm -rf %s` ,
144
+ baseDir , tarBin , filepath .Base (tarFile ), basename , basename )
141
145
rmCmd = fmt .Sprintf ("rm -f %s" , tarFile )
142
146
} else {
143
- tarCmd = fmt .Sprintf (`cd %s && tar -cf %s %s` , baseDir , filepath .Base (tarFile ), basename )
147
+ tarCmd = fmt .Sprintf (`cd %s && %s -cf %s %s` , baseDir , tarBin , filepath .Base (tarFile ), basename )
144
148
rmCmd = fmt .Sprintf ("rm -f %s" , tarFile )
145
149
}
146
150
mylog .Logger .Info (tarCmd )
147
151
maxRetryTimes := 5
148
152
for maxRetryTimes >= 0 {
149
153
maxRetryTimes --
150
154
err = nil
151
- _ , err = RunBashCmd (tarCmd , "" , nil , 6 * time .Hour )
155
+ _ , err = RunBashCmd (tarCmd , "" , nil , 8 * time .Hour )
152
156
if err != nil && ! strings .Contains (err .Error (), "file changed as we read it" ) {
153
157
// 如果报错则删除tar文件然后重试
154
158
mylog .Logger .Info (rmCmd )
155
- RunBashCmd (rmCmd , "" , nil , 10 * time .Minute )
159
+ RunBashCmd (rmCmd , "" , nil , 30 * time .Minute )
156
160
continue
157
161
}
158
162
err = nil
@@ -169,7 +173,7 @@ func TarADir(originDir, tarSaveDir string, rmOrigin bool) (tarFile string, err e
169
173
func TarAndSplitADir (originDir , targetSaveDir , splitTargetSize string , rmOrigin bool ) (
170
174
splitedFiles []string , err error ) {
171
175
var tarFile string
172
- tarFile , err = TarADir (originDir , targetSaveDir , rmOrigin )
176
+ tarFile , err = TarADir (originDir , targetSaveDir , rmOrigin , false )
173
177
if err != nil {
174
178
return
175
179
}
0 commit comments