我正在使用lftp来自动化gitlab ci部署.我运行一个脚本来部署我的代码,除了我需要上传到其他服务器的"静态"文件.这是我当前代码的示例.
script: - > lftp -e "mirror --exclude ^\.git.* --exclude-glob *.sql --exclude-glob *.sqlite3 --exclude-glob *.txt --exclude-glob *.csv --exclude-glob *.pyc --exclude settings.py --exclude migracion/ --exclude static/ --exclude ^Resources/Private/ --exclude \.gitlab-ci.yaml -eRv $CI_PROJECT_DIR /pro/ject/dirs; quit;" sftp://$ACC
这工作正常,但在此之后,我必须手动将静态文件上传到静态文件服务器.你能帮我一个只能获取所有静态文件夹中文件的脚本吗?静态文件夹可以位于root用户和其他文件夹中.许多Thx.
您可以使用 :
lftp -u username,passwd ftp.foobar.cmo \ -e "mirror -e -R -x .git -x static/ -p ./ dev-site ; quit"
在镜子里:
-e
:删除不再存在的文件
-R
:表示从本地计算机上传到ftp服务器
-x
:指定要排除的目录.你可以拥有多个-x
-p
:并行化
./
:你想上传的本地目录
dev-site
:远程目录,上传必须去.注意远程dir参数:
如果它与尾端(dev-site/
),您的当前目录将上传INSIDE这个目录在FTP服务器上
如果它没有以trail(dev-site
)结尾,那么你的当前dir将作为这个dir 上传到ftp服务器上
如果YOUT使用此与GitLab CI上传你的静态生成的文档,这里有一个例子.gitlab-ci.yml
与mkdocs
+ lftp
:
# Build static html site with mkdocs : build: stage: build script: - mkdocs build # first upload, exclude static files: - lftp -u ftp_username,$FTP_PASSWORD ftp.foobar.org -e "mirror -x static -R -p site dev ; quit" # upload only static to other server: - lftp -u ftp_username,$FTP_PASSWORD ftp.otherserv.org -e "mirror -R -p static/ remote/dir ; quit"