text: Title: [Storage] Typos in file_mount bucket paths have cryptic errors
  Body: I have a bucket `romilb-notebooks` with a directory `my_dataset`. If I misspell the sub-path in my task file_mounts yaml (`my_datasets` instead of `my_dataset`):
  
  ```
  file_mounts:
    /mydata: gs://romilb-notebooks/my_datasets
  ```
  
  `sky launch` fails with a cryptic error:
  
  ```
  Traceback (most recent call last):
    File "/Users/romilb/tools/anaconda3/bin/sky", line 8, in <module>
      sys.exit(cli())
    File "/Users/romilb/tools/anaconda3/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
      return self.main(*args, **kwargs)
    File "/Users/romilb/tools/anaconda3/lib/python3.9/site-packages/click/core.py", line 1055, in main
      rv = self.invoke(ctx)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 368, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/cli.py", line 812, in invoke
      return super().invoke(ctx)
    File "/Users/romilb/tools/anaconda3/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
      return _process_result(sub_ctx.command.invoke(sub_ctx))
    File "/Users/romilb/tools/anaconda3/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
      return ctx.invoke(self.callback, **ctx.params)
    File "/Users/romilb/tools/anaconda3/lib/python3.9/site-packages/click/core.py", line 760, in invoke
      return __callback(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 389, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/cli.py", line 1125, in launch
      _launch_with_confirm(task,
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/cli.py", line 603, in _launch_with_confirm
      sky.launch(
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 389, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 389, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/execution.py", line 468, in launch
      return _execute(
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/execution.py", line 301, in _execute
      backend.sync_file_mounts(handle, task.file_mounts,
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 389, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/utils/common_utils.py", line 368, in _record
      return f(*args, **kwargs)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/backends/backend.py", line 73, in sync_file_mounts
      return self._sync_file_mounts(handle, all_file_mounts, storage_mounts)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/backends/cloud_vm_ray_backend.py", line 3100, in _sync_file_mounts
      self._execute_file_mounts(handle, all_file_mounts)
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/backends/cloud_vm_ray_backend.py", line 4526, in _execute_file_mounts
      if storage.is_directory(src):
    File "/Users/romilb/Romil/Berkeley/Research/sky-experiments/sky/cloud_stores.py", line 125, in is_directory
      p = subprocess.run(command,
    File "/Users/romilb/tools/anaconda3/lib/python3.9/subprocess.py", line 528, in run
      raise CalledProcessError(retcode, process.args,
  subprocess.CalledProcessError: Command 'pushd /tmp &>/dev/null &&     { gcloud --help > /dev/null 2>&1 ||     { mkdir -p ~/.sky/logs &&     wget --quiet https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-424.0.0-linux-x86_64.tar.gz > ~/.sky/logs/gcloud_installation.log &&     tar xzf google-cloud-sdk-424.0.0-linux-x86_64.tar.gz >> ~/.sky/logs/gcloud_installation.log &&     rm -rf ~/google-cloud-sdk >> ~/.sky/logs/gcloud_installation.log  &&     mv google-cloud-sdk ~/ &&     ~/google-cloud-sdk/install.sh -q >> ~/.sky/logs/gcloud_installation.log 2>&1 &&     echo "source ~/google-cloud-sdk/path.bash.inc > /dev/null 2>&1" >> ~/.bashrc &&     source ~/google-cloud-sdk/path.bash.inc >> ~/.sky/logs/gcloud_installation.log 2>&1; }; } &&     popd &>/dev/null && [[ "$(uname)" == "Darwin" ]] && skypilot_gsutil() { gsutil -m -o "GSUtil:parallel_process_count=1" "$@"; } || skypilot_gsutil() { gsutil -m "$@"; }; GOOGLE_APPLICATION_CREDENTIALS=~/.config/gcloud/application_default_credentials.json skypilot_gsutil ls -d gs://romilb-notebooks/my_datasets' returned non-zero exit status 1.
  ```
  
  We should have a cleaner error message here. 