我想知道如果远程服务器上不存在 scp 是否会创建目标文件夹。例如,这行得通吗?
scp -r /data/install/somefolder user@ftpserver.com:/data/install/somefolder
这里的文件夹/data/install/somefolder
在 ftp 服务器上不存在,那么这个命令会创建它吗?
注意我已经阅读了 rsync 但我还不确定它是如何工作的或如何使用它。
要使用 ssh 和 scp(而不是 rsync)来完成任务:
让我们分成两个步骤:
ssh user@ftpserver.com "mkdir -p /data/install/somefolder"
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"
简短的回答:没有。
...但是 rsync 确实如此,这就是我在我的盒子上使用别名scp
的原因。rsync -Pravdtze ssh
是的,有很多开关,它们结合起来产生了我喜欢的 rsync 行为。由于 rsync 确实提供了一组非常广泛的开关和选项,我建议您对其进行一些研究,看看什么最适合您的需求。手册页是一个很好的起点,但有很多信息很容易获得。这是一个不错的示例列表。
编辑:实际上,在您发布的特定情况下,将创建该文件夹,因为那是您要复制的文件夹。但是,如果您尝试将其复制到user@remotehost:somenonexistentfolder/somefolder
,那么它将失败。