
Tenho um pacote de software Web instalado em meu servidor Linux. Baixei uma atualização em um arquivo ZIP e quero substituir apenas o que foi alterado. (Por exemplo, todos os arquivos principais devem ser substituídos, mas quaisquer arquivos que eu adicionei não devem ser alterados.) Como faço isso na linha de comando?
Meu método seria descompactá-lo em meu computador pessoal e, em seguida, carregar os arquivos alterados com um gerenciador de arquivos GUI, mas quero aprender como fazer isso na linha de comando.
No meu caso, estou tentando atualizar o YOURLS em um servidor Ubuntu, mas a questão parece geralmente aplicável à maioria dos softwares da Web, como WordPress ou similar.
Responder1
Portanto, (uma) das maneiras mais simples que vem à mente é baixar o arquivo zip, extraí-lo em algum lugar temporário, excluir os arquivos desnecessários e substituir os arquivos YOURLS pelos atualizados que você acabou de baixar.
Para baixar o arquivo (usando wget ou curl) e extraí-lo para um diretório temporário:
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
ou
curl http://linktozipfile/file.zip -o file.zip
então
unzip file.zip
Agora podemos decidir quais arquivos não precisamos e removê-los com a ferramenta rm (remover/excluir).
rm config.php
rm someotherfileidontwannareplace.php
Então podemos substituir todos os arquivos movendo todos os nossos arquivos atualizados para o mesmo diretório e, assim, substituindo os arquivos antigos.
cd ..
rsync -av newfolder/ oldfolder/
Se precisarmos simplesmente adicionar novos arquivos, podemos fazer um método semelhante, mas usar o --existing
sinalizador em mv, para não sobrescrever os arquivos existentes.
Isso seria parecido
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
unzip file.zip
cd ..
rsync -av --existing newfolder/ oldfolder/