Sftp

SFTP mget 和 get 命令將多個文件夾或文件複製到一個伺服器目錄

  • October 30, 2020

我需要使用一個命令複製同一目​​錄的多個文件夾。所以我先做了這個,

sftp> mget -r folder1 folder2

此命令複製folder1到目標伺服器,但將其重命名為folder2.

我可能應該做如下的事情。但是,我沒有嘗試

sftp> get -r folder1 && sleep 5 && get -r folder2

我沒有嘗試過,但我認為它會起作用。

有沒有更好的選擇呢?

mgetsftp 中的子命令是以下命令的別名get

static const struct CMD cmds[] = {
   { "bye",    I_QUIT,     NOARGS  },
   ...
   { "get",    I_GET,      REMOTE  },
   { "mget",   I_GET,      REMOTE  },
   ...
};

get子命令的語法為:

 get [-afPpr] remote-path [local-path]

如果您提供getmget多個參數,它會將第二個參數視為第一個的重命名目標。因此,您無法一次檢索多個目錄;您需要單獨獲取它們:

mget -r folder1 
mget -r folder2

sftp 語法也不允許 shell 樣式的命令連結,所以你不能使用類似的命令:get -r folder1 && .... 也沒有必要sleep在 get 命令之間進行嘗試,除非您出於其他目的需要延遲(本地觀看過程,為網路騰出幾秒鐘的時間等)。

作為 的替代方案sftp,請考慮scp

scp -r user@host:folder1 user@host:folder2 /local/directory

…這將遞歸地將遠端 folder1folder2目錄複製到本地 /local/directory

引用自:https://unix.stackexchange.com/questions/478650