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`
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다