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
将确保创建整个目录树
(即使它部分可用)