Deseja rsync alguns arquivos depois que eles foram sedados

2

Eu gostaria de rsync alguns arquivos HTML para um servidor web que estão em forma de produção. Para obtê-los em forma de produção, eu tenho que inserir trivialmente uma string ".production" em uma tag de script. Eu posso fazer isso com este comando sed:

sed 's/steal\.js/steal\.production\.js/g' */*.html

Eu sei que posso sed -i no local e rysync os arquivos, em seguida, sed -i -los de volta quando eu terminar, mas eu gostaria de ser capaz de fazer algo como rsync padrão para um arquivo de destino no máquina remota. Dessa forma, eu nunca precisaria me preocupar com a possibilidade de corromper meus arquivos html cancelando o script no meio da transferência.

Alguma recomendação sobre como abordar isso?

    
por Rich 02.05.2011 / 07:38

2 respostas

3

Se você tem um pouco de espaço livre (é barato hoje em dia, certo?), você pode fazer um rsync local de sua árvore de desenvolvimento para uma segunda cópia do projeto - uma árvore de "teste" - em sua caixa de desenvolvimento. Em seguida, execute as modificações de produção necessárias na árvore de teste e execute o rsync "real" da árvore de teste para o servidor de produção.

Você pode manter a árvore de teste em torno de uma velocidade extra de implantação ou excluí-la posteriormente para liberar espaço; depende de você.

Ou você pode manter a árvore de teste no servidor de produção. Nesse caso, você pode fazer apenas um rsync, fazer suas alterações e, em seguida, fazer algumas renomeações de diretório rápidas para que a árvore de preparação seja agora a árvore de produção e a árvore de produção antiga agora seja a árvore de preparação. Dessa forma, você nunca tem um site atualizado parcialmente em produção.

    
por 02.05.2011 / 08:33
1

Sugiro que ter que acessar diferentes nomes de arquivos em caixas de desenvolvimento e produção é um hack que você deve considerar remover.

  • Você poderia usar o controle de versão para manter um desenvolvimento e uma ramificação de produção do mesmo projeto. Continue mesclando o desenvolvimento em sua ramificação de produção, mas use seu pequeno script para manter o código em estado de produção antes de confirmar essa ramificação. Use seu servidor para fazer o checkout do ramo de produção, ou apenas rsync aquele em toda.
  • Você pode ter um pouco de código do lado do servidor para decidir qual nome de arquivo usar: if (hostname = productionserver) ...
  • Você poderia usar um redirecionamento do lado do servidor para exibir arquivos diferentes no mesmo URL de solicitação com base no nome do host ou em algum tipo de arquivo de tag dentro do seu projeto.
por 02.05.2011 / 12:46

Tags