我最近开始为一个大学社团管理一个(小型)网站,显然(根据最后一个管理它的人的说法)访问该网站文件的方式是通过 SFTP。我使用 Linux Mint/Nautilus,所以这没有问题。不过,我还有一个本地副本,可以在上传之前使用 Apache/localhost 测试我的更改(暂时忽略我无法真正使其工作......)。我使用 Git 来跟踪我的更改。
有什么办法可以区分 SFTP 版本和我自己的版本,然后只更新更改的文件(基本上是通过 SFTP 进行某种同步),并且可能也将版本控制合并到其中?
顺便说一句,我之前对此的经验很少,因此我们将不胜感激。同样的情况也适用于相当简单的方法来做事,而不一定是最时尚但最糟糕的配置方式。
Thanks!
通过 SSH 使用 Rsync
如果他们运行的是真正的 SSH 服务器,而不是仅 SFTP 服务器,那么您可以使用 rsync 将本地更改推送到远程。例如:
cd /my/project/directory
rsync -PSauve ssh --exclude=.git * [email protected] /cdn-cgi/l/email-protection:/var/www/
您可能还想使用--delete
选项,但如果可能存在仅存在于服务器端且需要保留的文件,请小心。
使用SFTP进行树操作
如果您无法使用 rsync,您可以将上游文件复制到本地分支,比较它们,合并您想要的任何更改,然后将结果推送回来。例如:
cd /my/project/directory
git checkout -b upstream
sftp -r [email protected] /cdn-cgi/l/email-protection:/var/www/\* .
git add .
git commit -m 'Import current files from upstream.'
git checkout master
git diff upstream
: # merge or modify files as needed
sftp [email protected] /cdn-cgi/l/email-protection:/var/www < <(echo 'put -r *')
使用 SCP 代替 SFTP
如果您无法使用 rsync,对于非交互式操作,SCP 通常比 SFTP 好得多。例如:
scp -r . [email protected] /cdn-cgi/l/email-protection:/var/www/
SCP 提供更简洁的界面,并支持符号链接(SFTP 不支持),但对于您的用例可能有其他限制。特别是,它可能不会打印它复制的空目录的名称;这是否重要取决于你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)