我写了这样一个 shell 脚本,它通过 ftp 将文件上传到我的部署服务器。如果您想要完全部署,即一次性完成整个项目,则此脚本可以完美运行。但问题是当我更改本地计算机上的特定文件时,现在我希望它使用 ftp 覆盖服务器上现有的相同文件,但它不会覆盖。
MKDIR=`for directory in $FOLDERS; do echo "mkd \"${directory}\""; done`
DELETE=`for file in $DFILES; do echo "delete \"${file}\""; done`
ATTACH=`for file in $FILES; do echo "put \"${file}\""; done`
IFS=$ORIGIFS
# Send updates to server
ftp -nv <<EOF
open $FTPHOST
user $FTPUSER $FTPPASS
binary
cd $FTPDIR
$MKDIR
$ATTACH
quit
EOF
其中:FOLDERS:包含要创建的目录,DELETE 是已删除文件列表的字符串,ATTACH 是服务器上已修改且需要覆盖的文件列表。
在那之后,当我在修改现有文件后第二次运行它时:
local: ./testproject/trunk/test.php ./svnupdate.txt remote: ./testproject/trunk/test.php ./svnupdate.txt
local: ./testproject/trunk/test.php ./svnupdate.txt: No such file or directory
最佳答案
我找到了答案。
我的脚本中的问题陈述:
ATTACH=`for file in $FILES; do echo "put \"${file}\""; done`
我在哪里创建要上传的文件列表。但是这段代码按照@Jdamian 的指示连接每个文件名。 @Jdamian 感谢您指出我的错误。
解决方法:
ATTACH=`for file in $FILES
do
echo "put $file"
done`
关于bash - 如何使用命令通过 FTP 覆盖文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166518/