我有一个文件夹,其中包含静态网站的文件,例如:
/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
并始终复制文件,即使源文件和目标文件相同。[参见这里寻求解决方法。
由于这是一个静态网站,您很可能只会进行更新,而不是重新创建整个网站,因此,如果您使用rsync
ssh 而不是 ,您可能会发现事情进展得更快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源文件夹用户名@服务器:目的文件夹