bash - 如何使用命令通过 FTP 覆盖文件?

标签 bash shell ftp ftp-client

我写了这样一个 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/

相关文章:

java - FTP 客户端不断被服务器拒绝上传权限

linux - 使用 bash 将子目录扁平化并在文件名前加上目录名

c++ - linux下如何同时运行多个shell命令

linux - unix下同步四个shell脚本依次运行

linux - 如何仅将最新的子目录复制到目标 linux shell 脚本

linux - 从 shell 脚本中的另一个文件读取命令?

java - Android平台jdk1.7内如何使用sun.net.ftp.FtpClient

perl - Net::FTPSSL 在命令 channel [0] (0, 1) () 上给出错误 Unexpected EOF...

linux - Mac 上的 sed 未按预期更新文件

linux - 减号操作错误