mirror of
https://github.com/rclone/rclone.git
synced 2026-01-04 17:43:50 +00:00
cmd and fs: Added new command settier which performs storage tier changes on
supported remotes
This commit is contained in:
committed by
Nick Craig-Wood
parent
9594fd0a0c
commit
7accd30da8
54
cmd/settier/settier.go
Normal file
54
cmd/settier/settier.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package settier
|
||||
|
||||
import (
|
||||
"github.com/ncw/rclone/cmd"
|
||||
"github.com/ncw/rclone/fs/operations"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
cmd.Root.AddCommand(commandDefintion)
|
||||
}
|
||||
|
||||
var commandDefintion = &cobra.Command{
|
||||
Use: "settier tier remote:path",
|
||||
Short: `Changes storage class/tier of objects in remote.`,
|
||||
Long: `
|
||||
rclone settier changes storage tier or class at remote if supported.
|
||||
Few cloud storage services provides different storage classes on objects,
|
||||
for example AWS S3 and Glacier, Azure Blob storage - Hot, Cool and Archive,
|
||||
Google Cloud Storage, Regional Storage, Nearline, Coldline etc.
|
||||
|
||||
Note that, certain tier chages make objects not available to access immediately.
|
||||
For example tiering to archive in azure blob storage makes objects in frozen state,
|
||||
user can restore by setting tier to Hot/Cool, similarly S3 to Glacier makes object
|
||||
inaccessible.true
|
||||
|
||||
You can use it to tier single object
|
||||
|
||||
rclone settier Cool remote:path/file
|
||||
|
||||
Or use rclone filters to set tier on only specific files
|
||||
|
||||
rclone --include "*.txt" settier Hot remote:path/dir
|
||||
|
||||
Or just provide remote directory and all files in directory will be tiered
|
||||
|
||||
rclone settier tier remote:path/dir
|
||||
`,
|
||||
Run: func(command *cobra.Command, args []string) {
|
||||
cmd.CheckArgs(2, 2, command, args)
|
||||
tier := args[0]
|
||||
input := args[1:]
|
||||
fsrc := cmd.NewFsSrc(input)
|
||||
cmd.Run(false, false, command, func() error {
|
||||
isSupported := fsrc.Features().SetTier
|
||||
if !isSupported {
|
||||
return errors.Errorf("Remote %s does not support settier", fsrc.Name())
|
||||
}
|
||||
|
||||
return operations.SetTier(fsrc, tier)
|
||||
})
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user