通过保留相对路径的列表获取远程文件,并在远程计算机上执行此操作

通过保留相对路径的列表获取远程文件,并在远程计算机上执行此操作

1) 我在远程客户端上运行 SSH 会话以从服务器获取文件。

2)有一个服务器,它保存着非常广泛的目录结构。

3)我有一个包含服务器上文件的数千个路径名的列表。然而它们只是服务器全部内容的一小部分。因此,文件将被逐一获取,而不是按目录,没有通配符。

任务:获取所有文件按清单并将它们与所有的在客户端创建的相对路径

我遇到的问题是 sftp 无法在不存在的目录中写入文件:

get -p /q/w/e/r/t/y/file /base/q/w/e/r/t/y/file

不会在 /base/ 中创建 q/w/e/r/t/y/ 的所有序列(甚至不是第一个子目录)

注意:该解决方案也可能适用于单个文件。之后我会尝试批量制作。

不重要的注意事项:实际上,我不需要这些路径 - 但可能存在具有相同名称的文件,并且它们不应在新位置发生冲突。因此,排出一个普通目录中所有文件的想法是不可接受的。

答案1

在执行 sftp 之前结合使用 mkdir 和 dirname

mkdir -p $(dirname /base/q/w/e/r/t/y/file)
  • dirname将提取文件的完整目录路径

  • mkdir -p将确保创建整个目录树
    (即使它部分可用)

相关内容