diff --git a/cmd/unlock.go b/cmd/unlock.go new file mode 100644 index 0000000..6742917 --- /dev/null +++ b/cmd/unlock.go @@ -0,0 +1,29 @@ +package cmd + +import ( + "github.com/cupcakearmy/autorestic/internal" + "github.com/cupcakearmy/autorestic/internal/colors" + "github.com/cupcakearmy/autorestic/internal/lock" + "github.com/spf13/cobra" +) + +var unlockCmd = &cobra.Command{ + Use: "unlock", + Short: "Unlock autorestic only if you are sure that no other instance is running (ps aux | grep autorestic)", + Long: `Unlock autorestic only if you are sure that no other instance is running. +To check you can run "ps aux | grep autorestic".`, + Run: func(cmd *cobra.Command, args []string) { + internal.GetConfig() + err := lock.Unlock() + if err != nil { + colors.Error.Println("Could not unlock:", err) + return + } + + colors.Success.Println("Unlock successful") + }, +} + +func init() { + rootCmd.AddCommand(unlockCmd) +} diff --git a/docs/pages/cli/unlock.md b/docs/pages/cli/unlock.md new file mode 100644 index 0000000..96096f5 --- /dev/null +++ b/docs/pages/cli/unlock.md @@ -0,0 +1,26 @@ +# Unlock + +In case autorestic throws the error message `an instance is already running. exiting`, but there is no instance running you can unlock the lock. + +To verify that there is no instance running you can use `ps aux | grep autorestic`. + +Example with no instance running: + +```bash +> ps aux | grep autorestic +root 39260 0.0 0.0 6976 2696 pts/11 S+ 19:41 0:00 grep autorestic +``` + +Example with an instance running: + +```bash +> ps aux | grep autorestic +root 29465 0.0 0.0 1162068 7380 pts/7 Sl+ 19:28 0:00 autorestic --ci backup -a +root 39260 0.0 0.0 6976 2696 pts/11 S+ 19:41 0:00 grep autorestic +``` + +**If an instance is running you should not unlock as it could lead to data loss!** + +```bash +autorestic unlock +```