我可以 scp 一个包含子文件夹的文件夹吗?

我可以 scp 一个包含子文件夹的文件夹吗?

我有一个文件夹,其中包含静态网站的文件,例如:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

如果我在笔记本电脑上更新了某些内容,我希望通过一条命令将文件发送到我的 ubuntu 服务器。如果没有必要,我不想在其上设置 FTP,想知道 scp 是否能够处理这个问题?

答案1

该命令scp -r source user@target:dest将遍历来源并复制它们。

但是,scp其行为类似于cp并始终复制文件,即使源文件和目标文件相同。[参见这里寻求解决方法。

由于这是一个静态网站,您很可能只会进行更新,而不是重新创建整个网站,因此,如果您使用rsyncssh 而不是 ,您可能会发现事情进展得更快scp。可能是这样的

rsync -av -e ssh source user@target:dest

...开始吧。如果您通过 LAN 执行此操作,我个人建议使用-avW选项rsync

Rsync 还使您能够复制源中的删除;因此,如果您从树中删除文件,则可以rsync按上述方式运行并包含标志--delete,它将从目标端删除相同的文件。

答案2

scp 有一个递归标志,可以执行您想要的操作。scp -r /base/directory user@server:/to/location

man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.

答案3

正如其他人所指出的,scp -r 和 rsync -r 是获取所需内容的最可靠方法。

您还可以使用 sshfs 来“挂载”它,就像它是本地驱动器一样:sshfs user@host:/site /mnt/mountpoint

(不过,您最好在本地工作并使用 rsync 进行部署。这只是另一个需要注意的工具。)

答案4

使用以下命令

scp -r源文件夹用户名@服务器:目的文件夹

相关内容