Scp

如果目錄不存在,scp 可以創建目錄嗎?

  • June 29, 2020

我想用來scp上傳文件但有時目標目錄可能不存在。

是否可以自動創建文件夾?如果是這樣,怎麼做?如果沒有,我可以嘗試什麼替代方法?

這是rsync可以做的許多事情之一。

如果您使用的rsync是過去幾年發布的版本,¹它的基本命令語法類似於scp:²

$ rsync -r local-dir remote-machine:path

local-source這會將其內容複製到$HOME/path/local-dir遠端機器上,創建所需的任何目錄。³

rsync這裡確實有一些限制,可能會影響這是否適用於您的特定情況。例如,它不會創建多級失去的遠端目錄;它只會在遙控器上創建最多一個缺失的級別。rsync您可以通過在命令前加上以下內容輕鬆解決此問題:

$ ssh remote-host 'mkdir -p foo/bar/qux'

$HOME/foo/bar/qux如果樹不存在,這將創建樹。如果它已經存在,它就不會抱怨或做任何其他壞事

rsync有時還有其他令人驚訝的行為。基本上,您要求它弄清楚您要複製的內容,它的猜測可能與您的假設不符。試試看。如果它的行為不符合您的預期並且您看不到原因,請發布有關本地和遠端目錄設置的更多詳細資訊,並給出您嘗試過的命令。


腳註

  1. rsync2.6.0(2004 年 1 月 1 日)之前,它需要-e ssh標誌來使其行為像scp,因為它預設為過時的RSH 協議
  2. scprsync共享一些標誌,但只有一點重疊。
  3. SSH用作傳輸協議時,使用rsync相同的預設值。因此,就像 一樣scp,預設情況下,它將假定遠端電腦上存在與本地使用者同名的使用者。

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