所以我使用 pelican 来写我的博客,并使用 rsync 上传整个内容。好的。
但我也使用 Let's Encrypt,因此需要将存储库 .well-known 保存在我网站的根目录中。
那么有没有办法我可以说“rsync ... --do-not-delete .well-known ...”
目前,那些代表受权限保护,但 rsync 不喜欢它。
这是当前的 rsync 命令(由 pelican 自己安装,我没有写):
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude
Run Code Online (Sandbox Code Playgroud)
顺便说一句:如果您还有一些提高 rsync 效率的建议,我会接受(是的,这与主题无关)。
Hai*_*ong 16
从 man rsync
--delete 这告诉 rsync 从接收方删除无关文件(不在发送方的文件),但仅用于正在同步的目录。您必须要求 rsync 发送整个目录(例如“dir”或“dir/”)而不使用目录内容的通配符(例如“dir/*”),因为通配符被 shell 展开,因此 rsync 得到一个请求传输单个文件,而不是文件的父目录。
所以我觉得应该是
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete \
$(OUTPUTDIR)/ \
$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) \
--cvs-exclude --exclude=/.well-known
Run Code Online (Sandbox Code Playgroud)
(假设.well-known
是在 的根$(SSH_TARGET_DIR)/
)