diff --git a/cmd/restic/cmd_ls.go b/cmd/restic/cmd_ls.go
index ff3bbc015..b65a02eb1 100644
--- a/cmd/restic/cmd_ls.go
+++ b/cmd/restic/cmd_ls.go
@@ -48,7 +48,7 @@ func printTree(prefix string, s *server.Server, id backend.ID) error {
 		fmt.Println(printNode(prefix, entry))
 
 		if entry.Type == "dir" && entry.Subtree != nil {
-			err = printTree(filepath.Join(prefix, entry.Name), s, id)
+			err = printTree(filepath.Join(prefix, entry.Name), s, entry.Subtree)
 			if err != nil {
 				return err
 			}
@@ -72,6 +72,11 @@ func (cmd CmdLs) Execute(args []string) error {
 		return err
 	}
 
+	err = s.LoadIndex()
+	if err != nil {
+		return err
+	}
+
 	name, err := backend.FindSnapshot(s, args[0])
 	if err != nil {
 		return err