40

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

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

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

注意我已经阅读了 rsync 但我还不确定它是如何工作的或如何使用它。

4

2 回答 2

47

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

解决方案

让我们分成两个步骤:

1.如果丢失创建目录:

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

2.复制到它:

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

把它们放在一起

server="user@ftpserver.com"
destiny="/data/install/somefolder"
src="/data/install/somefolder"
ssh "$server" "mkdir -p $destiny" && scp -r "$src" "$server:$destiny"
于 2014-08-06T10:12:16.227 回答
24

简短的回答:没有。

...但是 rsync 确实如此,这就是我在我的盒子上使用别名scp的原因。rsync -Pravdtze ssh是的,有很多开关,它们结合起来产生了我喜欢的 rsync 行为。由于 rsync 确实提供了一组非常广泛的开关和选项,我建议您对其进行一些研究,看看什么最适合您的需求。手册页是一个很好的起点,但有很多信息很容易获得。这是一个不错的示例列表

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

于 2012-10-16T18:23:39.120 回答