我编写了这样一个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
答案 0 :(得分:0)
我找到了答案。
我的脚本中的问题陈述:
ATTACH=`for file in $FILES; do echo "put \"${file}\""; done`
我在哪里创建要上传的文件列表。但是这段代码将@Jdamian告诉每个文件名连接起来。 @Jdamian感谢你指出我的错误。
解决方案:
ATTACH=`for file in $FILES
do
echo "put $file"
done`