Код:
#!/bin/bash
if ! [[ -d upgraded ]] ; then
mkdir upgraded && cd upgraded
else
cd upgraded
fi
wget $(wget -O- -q https://updates.drupal.org/release-history/drupal/7.x | grep -oPm1 "(?<=<download_link>)[^<]+" | sort -V | grep -v 'dev' | tail -1) && tar -zxf drupal*.tar.gz --exclude=sites && rm -r drupal*.tar.gz && cd ../
read -p "Enter a Drupal-site folder name: " sitename
if [[ -d $sitename ]] ; then
echo "The directory $sitename exists"
echo ""
echo "Creating $sitename backup in upgraded folder"
echo "**********************************************"
cp -aRp "$sitename" upgraded && tar -cf - -C "$sitename" . | gzip -c > upgraded/"$sitename".tar.gz
echo "Backup "$sitename" created, see $sitename.tar.gz file"
else
echo "The directory $sitename does not exist. Try again..."
rm -rf upgraded/drupal* && exit 0
fi
echo ""
echo "Comparing $sitename with original"
echo "*********************************"
diff -ur '--exclude=sites' upgraded/drupal* "$sitename" > upgraded/compare-"$sitename"-`date +%F`.diff
echo "See result in compare-$sitename.diff file"
echo ""
echo "Updating $sitename core"
echo "***********************"
cp -Rf upgraded/drupal-*/* "$sitename" && rm -rf upgraded/drupal* && rm -rf upgraded/"$sitename"
echo "Update '$sitename is completed. Now run update.php script from your browser"
# Document Root (see web-server *.conf file), may be /var/www or /var/www/html, or /htdocs
# - site1
# - site2
# - ... etc. ...
# - drupal_update.sh
# "site1", "site2" its "a Drupal-site folder name"
Необходимо создать на хостинге файл, например, drupal_upgrade.sh, вставить в него этот код. Сохранить файл и сделать его исполняемым.
Необходимые условия:
1. Сервер, на котором размещен ваш сайт, должен использовать любую линукс-подобную операционную систему. Для виртуальных хостингов так оно и есть, практически всегда.
2. Файл должен располагаться на одном уровне с каталогом, содержащим файлы сайта. Например, если файлы сайта лежат в папке public_html, то скрипт необходимо разместить рядом с папкой public_html.
3. Именно это название каталога (public_html) скрипт требует ввести, когда начинает работать. Я сделал так потому, что когда-то приходилось обновлять Друпал-сайты пачками
Из известных проблем - пока две:
1. Когда-то в один прекрасный момент Друпаловцы что-то поменяли там, где хранились их ядра. Поэтому wget забирал не только последнюю версию ядра, но и предыдущую... Исправил.
2. Когда скрипт отрабатывает, он создает копию файловой системы сайта. Поэтому при удалении старых и ненужных файлов возможны проблемы, связанные с правами доступа. Например, если у каких-либо файлов были установлены права типа 400, то скрипт удалить их не сможет. На обновление Друпал это НЕ влияет, сами не удаляемые файлы можно позднее удалить через файловый менеджер на хостинге.
Скрыть