diff --git a/dvc/command/data_sync.py b/dvc/command/data_sync.py index f840b8ceb..268b620e6 100644 --- a/dvc/command/data_sync.py +++ b/dvc/command/data_sync.py @@ -45,7 +45,7 @@ class CmdDataSync(CmdBase): def run(self): if System.islink(self.parsed_args.target): - data_item = self.settings.path_factory.existing_data_item(self.parsed_args.target) + data_item = self.settings.path_factory.data_item(self.parsed_args.target) return self.sync_symlink(data_item) if os.path.isdir(self.parsed_args.target): @@ -83,9 +83,9 @@ class CmdDataSync(CmdBase): """ sync from cloud, aws version """ bucket = self._get_bucket_aws() - - key_name = self.cache_file_key(item.cache.dvc) + key_name = self.cache_file_key(item.resolved_cache.dvc) key = bucket.get_key(key_name) + if not key: raise DataSyncError('File "{}" does not exist in the cloud'.format(key_name)) diff --git a/dvc/path/data_item.py b/dvc/path/data_item.py index 92c4d048e..6eaf4420f 100644 --- a/dvc/path/data_item.py +++ b/dvc/path/data_item.py @@ -86,6 +86,12 @@ class DataItem(object): cache_file = os.path.join(cache_dir, file_name) return Path(cache_file, self._git) + @cached_property + def resolved_cache(self): + resolved_cache = os.path.realpath(self._data.relative) + return Path(resolved_cache, self._git) + + @cached_property def data_dir_abs(self): return os.path.join(self._git.git_dir_abs, self._config.data_dir)