关于linux:scp是否创建目标文件夹(如果不存在)

Does scp create the target folder if it does not exist

我想知道如果远程服务器上不存在scp,它将创建目标文件夹。 例如,这行得通吗?

1
scp -r /data/install/somefolder user@ftpserver.com:/data/install/somefolder

此处/data/install/somefolder文件夹在ftp服务器上不存在,那么此命令会创建它吗?

N.B. 我已经阅读了有关rsync的信息,但还不确定如何工作或如何使用它。


要使用ssh和scp(而不是rsync)来完成任务:

让我们分为两个步骤:

1.如果缺少,请创建目录:

1
ssh user@ftpserver.com"mkdir -p /data/install/somefolder"

2.复制到它:

1
scp -r /data/install/somefolder user@ftpserver.com:/data/install/somefolder

放在一起

1
2
3
4
server="[email protected]"
destiny="/data/install/somefolder"
src="/data/install/somefolder"
ssh"$server""mkdir -p $destiny" && scp -r"$src""$server:$destiny"


简短的回答:不。

...但是rsync确实如此,这就是为什么我在框上将scp别名为rsync -Pravdtze ssh的原因。 是的,有很多开关,这些开关共同产生了我偏爱的rsync行为。 由于rsync确实提供了非常广泛的开关和选项集,因此我建议您对其进行一些研究,以了解最适合您的需求。 联机帮助页是一个不错的起点,但是有很多信息很容易获得。 这是一个不错的示例列表。

编辑:实际上,在您发布的特定情况下,将创建文件夹,因为这就是您要复制的文件夹。 但是,如果您尝试将其复制到user@remotehost:somenonexistentfolder/somefolder,则它将失败。