code: def do_mirror(self, params):
          
          question = "Are you sure you want to replace %s with %s?" % (params.dst, params.src)
          if params.skip_prompt or self.prompt_yes_no(question):
              self.copy(params, True, True, 0, True)
docs: \x1b[1mNAME\x1b[0m
          mirror - Mirrors from/to local/remote or remote/remote paths
  
  \x1b[1mSYNOPSIS\x1b[0m
          mirror <src> <dst> [async] [verbose] [skip_prompt]
  
  \x1b[1mDESCRIPTION\x1b[0m
          src and dst can be:
  
             /some/path (in the connected server)
             zk://[user:passwd@]host/<path>
             json://!some!path!backup.json/some/path
  
          with a few restrictions. Given the semantic differences that znodes have with filesystem
          directories recursive copying from znodes to an fs could lose data, but to a JSON file it
          would work just fine.
  
          The dst subtree will be modified to look the same as the src subtree with the exception
          of ephemeral nodes.
  
  \x1b[1mOPTIONS\x1b[0m
          * async: do asynchronous copies (default: false)
          * verbose: verbose output of every path (default: false)
          * skip_prompt: don't ask for confirmation (default: false)
  
  \x1b[1mEXAMPLES\x1b[0m
          > mirror /some/znode /backup/copy-znode  # local
          > mirror /some/path json://!home!user!backup.json/ true true