Bash 스크립트는 rsync 전송 결과를 가져와 원래 디렉터리 내의 디렉터리로 압축합니다.

Bash 스크립트는 rsync 전송 결과를 가져와 원래 디렉터리 내의 디렉터리로 압축합니다.

글쎄요, 좀 이상한 것 같아요.
여러 명령이 포함된 매우 간단한 작은 stage.sh 스크립트가 있습니다.

if [ "$(whoami)" == 'David' ]; then
    rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-0/modules/
    rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-1/modules/
    rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-7/modules/
    rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-2/modules/
    echo "Checked out for David"
fi

현재 로그인한 사용자에 따라 다른 상황이 있을 수 있습니다. 소스는 현재 디렉터리입니다($(pwd) 참조). 현재 디렉터리를 가져와서압축 폴더나오세요. 폴더를 압축한다는 것은 아니오를 의미합니다.타르 폭탄, zip 형식이어야 합니다. 항목이 필터링되었으므로 rsync 전송의 출력을 얻고 싶습니다. 명명된 파이프를 사용해 보았습니다. .rsyncrctar/zip 압축 중에 제외하기 위해 이 파일을 사용할 수도 있습니다 . 다음과 같이 읽습니다.

# Meta
- stage.sh
- .rsyncrc

# Repo itself
- .git
- .gitignore

# Distribution Packages
- dist/

# Other files
- */.DS_Store

따라서 압축 중에 해당 파일을 제외용으로 사용할 수 있다면 좋을 것 같습니다. 실제로 테스트하지는 않았지만 가능한지 확실하지 않습니다. 출력은 rsync/zipping 프로세스에서 제외된 ./dist/에 배치되어야 합니다.

보너스 포인트출력 zip 파일의 이름에 버전 번호(폴더와 동일한 이름을 가진 파일 내부에서 가져와 ".php"가 추가된 접미사)가 있는 경우. 버전 번호가 있는 줄은 항상 다음과 같습니다.$this->version = '0.0.1';

답변1

나는 이 스크립트를 생각해 냈습니다 build.sh.

foldername=$(dirname $(pwd))
projname=$(basename $(pwd))
rsync -a --exclude-from=.rsyncrc $(pwd) $TMPDIR
cd $TMPDIR
zip -rq $foldername/$projname/dist/$projname-latest.zip $projname
cd $foldername/$projname

이 파일은 루트 폴더에 있으므로 전체 프로젝트를 zip으로 패키지하고 싶을 때마다 이를 실행한 source build.sh다음거리/폴더는상품명-최신.zip

관련 정보