Scp
如果目錄不存在,scp 可以創建目錄嗎?
我想用來
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
有時還有其他令人驚訝的行為。基本上,您要求它弄清楚您要複製的內容,它的猜測可能與您的假設不符。試試看。如果它的行為不符合您的預期並且您看不到原因,請發布有關本地和遠端目錄設置的更多詳細資訊,並給出您嘗試過的命令。腳註:
- 在
rsync
2.6.0(2004 年 1 月 1 日)之前,它需要-e ssh
標誌來使其行為像scp
,因為它預設為過時的RSH 協議。scp
並rsync
共享一些標誌,但只有一點重疊。SSH
用作傳輸協議時,使用rsync
相同的預設值。因此,就像 一樣scp
,預設情況下,它將假定遠端電腦上存在與本地使用者同名的使用者。