我有一个文件夹包含静态网站的文件,如:
/site/index.html /site/css/css.css /site/js/js.js /site/images/...
如果我在我的笔记本电脑上更新了某些东西,我想要一个命令将这些文件发送到我的Ubuntu服务器。 我不想在它上面设置FTP,如果我没有,想知道scp是否能够处理这个问题?
命令scp -r source user@target:dest将遍历源的所有子目录并复制它们。
但是, scp行为类似于cp并始终复制文件,即使源和目标都相同。 [请参阅此处了解解决方法。]
由于这是一个静态的网站,你很可能只做更新,而不是重新创build整个事情,所以如果你使用rsync代替scp ,你可能会发现事情会更快。 可能是类似的东西
rsync -av -e ssh source user@target:dest
…开始。 如果你是通过局域网来做这件事的话,我会亲自使用选项-avW代替rsync 。
Rsync也使您能够复制源代码中的删除操作。 所以如果你从树中删除一个文件,你可以像上面那样运行rsync ,并且包含标志--delete ,它将从目标端删除同一个文件。
scp有一个recursion的标志,将做你想要的。 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.
正如其他人所指出的,scp -r和rsync -r是获得你想要的最可靠的方法。
您也可以使用sshfs来“挂载”它,就好像它是一个本地驱动器一样: sshfs user@host:/site /mnt/mountpoint
(不过,你可能最好在本地工作,使用rsync进行部署,只是另一个需要注意的工具。)