
У меня установлен пакет веб-программного обеспечения на моем сервере Linux. Я загрузил обновление в ZIP-файле и хочу перезаписать только то, что изменилось. (Например, все основные файлы должны быть заменены, но все добавленные мной файлы не должны быть затронуты.) Как это сделать из командной строки?
Я бы распаковал его на своем персональном компьютере, а затем загрузил бы измененные файлы с помощью графического файлового менеджера, но я хочу узнать, как это сделать из командной строки.
В моем случае я пытаюсь обновить YOURLS на сервере Ubuntu, но этот вопрос, похоже, применим к большинству веб-программного обеспечения, например WordPress или подобного.
решение1
Итак, (один) из самых простых способов, который приходит на ум, — это загрузить zip-файл, извлечь его во временное место, удалить ненужные файлы, а затем заменить файлы YOURLS обновленными, которые вы только что скачали.
Чтобы загрузить файл (с помощью wget или curl) и извлечь его во временный каталог:
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
или
curl http://linktozipfile/file.zip -o file.zip
затем
unzip file.zip
Теперь мы можем решить, какие файлы нам не нужны, и удалить их с помощью инструмента rm (remove/delete).
rm config.php
rm someotherfileidontwannareplace.php
Затем мы можем заменить все файлы, переместив все наши обновленные файлы в тот же каталог и таким образом заменив старые файлы.
cd ..
rsync -av newfolder/ oldfolder/
Если нам просто нужно добавить новые файлы, то мы можем воспользоваться аналогичным методом, но использовать флаг --existing
mv, чтобы не перезаписывать существующие файлы.
Это будет выглядеть так
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
unzip file.zip
cd ..
rsync -av --existing newfolder/ oldfolder/