1) リモートクライアントで SSH セッションを実行し、サーバーからファイルをインポートします。
2)非常に広範なディレクトリ構造を保持するサーバーがあります。
3)サーバー上のファイルへの何千ものパス名を含むリストがあります。ただし、これはサーバー全体のほんの一部です。したがって、ファイルはワイルドカードなしでディレクトリごとにインポートされるのではなく、1つずつインポートされます。
処置: すべてのファイルのインポートリストとしてそしてそれらをすべて組み合わせるクライアント側で生成された相対パス。
私が経験している問題は、sftpが存在しないディレクトリにファイルを書き込めないことです。
get -p /q/w/e/r/t/y/file /base/q/w/e/r/t/y/file
q/w/e/r/t/y/のすべてのシーケンスが/base/に生成されるわけではありません(最初のサブディレクトリでもありません)
注:この回避策は個々のファイルにも適用できます。後でまとめて作ってみましょう。
重要ではない注意:実際にはこれらのパスは必要ありません。ただし、同じ名前のファイルが存在する可能性があり、新しい場所で競合しないでください。したがって、共通ディレクトリ内のすべてのファイルを空にするという考えは受け入れられません。
答え1
sftp を実行する前に、dirname で mkdir を使用してください。
mkdir -p $(dirname /base/q/w/e/r/t/y/file)
dirname
抽出するファイルのフルディレクトリパスmkdir -p
完全なディレクトリツリーが作成されたことを確認します
(部分的に利用可能な場合でも)。