Script Bash para obter o resultado da transferência rsync e zip-lo como um diretório no diretório original

1

OK, acho que isso é estranho.
Eu tenho um pequeno script stage.sh muito simplesmente tem um monte de comandos:

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

E também há outros casos de acordo com o usuário atualmente conectado. Note que a fonte é o diretório atual (veja o $ (pwd)). Eu quero adicionar um caso que leva o diretório atual e faz uma pasta zipada fora. Por pasta zipada não quero dizer tarbomb , e ele deve estar no formato zip. Eu gostaria de ter a saída da transferência de rsync, porque já filtra coisas. Eu tentei usar pipes nomeados. Eu também poderia usar o arquivo .rsyncrc para exclusões no processo tar / zipping. Está escrito assim:

# Meta
- stage.sh
- .rsyncrc

# Repo itself
- .git
- .gitignore

# Distribution Packages
- dist/

# Other files
- */.DS_Store

Então, se eu pudesse usar esse arquivo para exclusão no processo de compactação, ele também seria ótimo. Eu realmente não testei isso, mas não tenho certeza se é possível. A saída deve ser colocada em ./dist/, que é excluída do processo de rsync / zipping.

Pontos de bônus se o nome do nome do arquivo zip de saída tiver um número de versão -suffix, extraído de dentro do arquivo que tem o mesmo nome da pasta com ".php" anexado. A linha com o número da versão é sempre assim: $this->version = '0.0.1';

    
por mcdado 26.03.2015 / 18:54

1 resposta

0

Eu criei este script 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

Ele reside na pasta raiz, de modo que sempre que eu quero empacotar em zip todo o projeto, eu corro source build.sh e lá vai, na minha pasta dist / como projectname -latest.zip

    
por 16.04.2015 / 11:45