Skip to content

Commit

Permalink
influxd v1.x backup: allow cross platform remote backups
Browse files Browse the repository at this point in the history
Closes #8256

As now, in v1.x influxd backup DBRetentionAndShardFromPath() uses the local path separator, e.g. "/" on Unix. This does not work when restoring data from systems using the other one, i.e. "\" on Windows.
The proposed change tries both separators before returning an error.

- [X] I've read the contributing section of the project [README](https://github.com/influxdata/influxdb/blob/main/README.md).
- [X] Signed [CLA](https://influxdata.com/community/cla/) (if not already signed).
  • Loading branch information
skladd authored May 28, 2024
1 parent 5fda409 commit 652398c
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions cmd/influxd/backup_util/backup_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,12 @@ func (w *CountingWriter) BytesWritten() int64 {
// retentionAndShardFromPath will take the shard relative path and split it into the
// retention policy name and shard ID. The first part of the path should be the database name.
func DBRetentionAndShardFromPath(path string) (db, retention, shard string, err error) {
a := strings.Split(path, string(filepath.Separator))
a := strings.Split(path, string('/'))
if len(a) != 3 {
return "", "", "", fmt.Errorf("expected database, retention policy, and shard id in path: %s", path)
a = strings.Split(path, string('\\'))
if len(a) != 3 {
return "", "", "", fmt.Errorf("expected database, retention policy, and shard id in path: %s", path)
}
}

return a[0], a[1], a[2], nil
Expand Down

0 comments on commit 652398c

Please sign in to comment.