Skip to content
sept 16 / David Regnier

Script pour une mise à jour automatique de Typo3

Cet article traite des montées de version de Typo3 4.5.x.
Vous avez la possibilité d’utiliser ce script pour automatiser l’ « upgrade » de votre version de Typo3.
Le script backup votre ancienne release Typo3 et va mettre en place les nouvelles sources sur votre serveur Linux.

Script pour l’ « upgrade » de Typo3: update_typo3.sh

#!/bin/sh

#
# Author : regnier_david@yahoo.fr
# Purpose: Upgrade typo3 version
#

#########################################################
# BEGIN EDIT THIS ONLY
#########################################################

# Adjust var, Typo3 version etc ...
TYPO3_DIR="typo3_instance"
TYPO3_NEW_VERSION_DIR="/home/user/packages/typo3_src-4.5.5/"

#########################################################
# END EDIT THIS ONLY
#########################################################

#########################################################
# DO NOT EDIT LINES ABOVE
#########################################################
DAY_DATE=$(date +"%d%m%Y")
TYPO3_BACKUP_DIR='/home/user/backup/backup_'$TYPO3_DIR'_'$DAY_DATE'/'
TYPO3_TEMP_DIR='/home/user/backup/temp/'
TYPO3_CURRENT_VERSION_DIR='/www/html/'$TYPO3_DIR'/'

clear

#
# Backup old Typo3 version
#
echo "Step 1 -> Backup old Typo3 version"
mkdir -p $TYPO3_BACKUP_DIR
mkdir -p $TYPO3_TEMP_DIR
# t3lib
/bin/cp -rf $TYPO3_CURRENT_VERSION_DIR't3lib/' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# typo3
/bin/cp -rf $TYPO3_CURRENT_VERSION_DIR'typo3/' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# index.php
/bin/cp -f $TYPO3_CURRENT_VERSION_DIR'index.php' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# localconf.php
/bin/cp -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/localconf.php' $TYPO3_BACKUP_DIR >/dev/null 2>&1

#
# Delete old Typo3 version
#
echo "Step 2 -> Move old Typo3 version"
# t3lib
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR't3lib/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# typo3
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# index.php
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'index.php' $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Copy new Typo3 version
#
echo "Step 3 -> Copy new Typo3 version"
/bin/cp -rf $TYPO3_NEW_VERSION_DIR* $TYPO3_CURRENT_VERSION_DIR >/dev/null 2>&1

#
# Cleanup temp*
#
echo "Step 4 -> Cleanup temp DIR and temp_CACHED* files"
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3temp/'* $TYPO3_TEMP_DIR >/dev/null 2>&1
mkdir -p $TYPO3_CURRENT_VERSION_DIR'typo3temp/llxml'
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/temp_CACHED'* $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Fix permissions
#
echo "Step 5 -> Fix permissions"
chown apache:apache -R $TYPO3_CURRENT_VERSION_DIR*
chmod 755 -R $TYPO3_CURRENT_VERSION_DIR*

# Done
echo "Step 6 -> Upgrade done"

Script pour le « rollback » de Typo3: rollback_typo3.sh

#!/bin/sh

#
# Author : regnier_david@yahoo.fr
# Purpose: Rollback typo3 version
#

#########################################################
# BEGIN EDIT THIS ONLY
#########################################################

# Adjust var, Typo3 version etc ...
TYPO3_DIR="typo3_instance"

#########################################################
# END EDIT THIS ONLY
#########################################################

#########################################################
# DO NOT EDIT LINES ABOVE
#########################################################
DAY_DATE=$(date +"%d%m%Y")
TYPO3_BACKUP_DIR='/home/user/backup/backup_'$TYPO3_DIR'_'$DAY_DATE'/'
TYPO3_TEMP_DIR='/home/user/backup/temp_rollback/'
TYPO3_CURRENT_VERSION_DIR='/www/html/'$TYPO3_DIR'/'

clear

#
# Move new Typo3 release
#
echo "Step 1 -> Move new release to temp DIR"
mkdir -p $TYPO3_TEMP_DIR
# t3lib
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR't3lib/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# typo3
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# index.php
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'index.php' $TYPO3_TEMP_DIR >/dev/null 2>&1
# localconf.php
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/localconf.php' $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Copy old Typo3 release
#
echo "Step 2 -> Copy old Typo3 version"
# t3lib
/bin/cp -rf $TYPO3_BACKUP_DIR't3lib/' $TYPO3_CURRENT_VERSION_DIR >/dev/null 2>&1
# typo3
/bin/cp -rf $TYPO3_BACKUP_DIR'typo3/' $TYPO3_CURRENT_VERSION_DIR >/dev/null 2>&1
# index.php
/bin/cp -f $TYPO3_BACKUP_DIR'index.php' $TYPO3_CURRENT_VERSION_DIR >/dev/null 2>&1
# localconf.php
/bin/cp -f $TYPO3_BACKUP_DIR'localconf.php' $TYPO3_CURRENT_VERSION_DIR'typo3conf/' >/dev/null 2>&1

#
# Cleanup temp*
#
echo "Step 4 -> Cleanup temp DIR and temp_CACHED* files"
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3temp/'* $TYPO3_TEMP_DIR >/dev/null 2>&1
mkdir -p $TYPO3_CURRENT_VERSION_DIR'typo3temp/llxml'
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/temp_CACHED'* $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Fix permissions
#
echo "Step 5 -> Fix permissions"
chown apache:apache -R $TYPO3_CURRENT_VERSION_DIR*
chmod 755 -R $TYPO3_CURRENT_VERSION_DIR*

# Done
echo "Step 6 -> Upgrade done"

Autre version pour l’ « upgrade » de Typo3 (cette version va vérifier les répertoires): update_typo3_v2.sh

#!/bin/sh

#
# Author : regnier_david@yahoo.fr
# Purpose: Upgrade typo3 version
#

#########################################################
# BEGIN EDIT THIS ONLY
#########################################################

# Adjust var, Typo3 version etc ...
TYPO3_DIR="typo3_dev"
TYPO3_NEW_VERSION_DIR="/home/user/livraison/packages/typo3_src-4.5.5/"
# Adjust server for matching
# dev / recette / prod
TYPO3_SERVER="dev"

#########################################################
# END EDIT THIS ONLY
#########################################################

#########################################################
# DO NOT EDIT LINES ABOVE
#########################################################
DAY_DATE=$(date +"%d%m%Y")
TYPO3_BACKUP_DIR='/home/user/backup/backup_'$TYPO3_DIR'_'$DAY_DATE'/'
TYPO3_TEMP_DIR='/home/user/backup/temp/'
TYPO3_CURRENT_VERSION_DIR='/www/html/'$TYPO3_DIR'/'

clear

# Init function
call_main_process () {
#
# Backup old Typo3 version
#
echo "Step 1 -> Backup old Typo3 version"
mkdir -p $TYPO3_BACKUP_DIR
mkdir -p $TYPO3_TEMP_DIR
# t3lib
/bin/cp -rf $TYPO3_CURRENT_VERSION_DIR't3lib/' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# typo3
/bin/cp -rf $TYPO3_CURRENT_VERSION_DIR'typo3/' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# index.php
/bin/cp -f $TYPO3_CURRENT_VERSION_DIR'index.php' $TYPO3_BACKUP_DIR >/dev/null 2>&1
# localconf.php
/bin/cp -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/localconf.php' $TYPO3_BACKUP_DIR >/dev/null 2>&1

#
# Delete old Typo3 version
#
echo "Step 2 -> Move old Typo3 version"
# t3lib
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR't3lib/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# typo3
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3/' $TYPO3_TEMP_DIR >/dev/null 2>&1
# index.php
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'index.php' $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Copy new Typo3 version
#
echo "Step 3 -> Copy new Typo3 version"
/bin/cp -rf $TYPO3_NEW_VERSION_DIR* $TYPO3_CURRENT_VERSION_DIR >/dev/null 2>&1

#
# Cleanup temp*
#
echo "Step 4 -> Cleanup temp DIR and temp_CACHED* files"
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3temp/'* $TYPO3_TEMP_DIR >/dev/null 2>&1
mkdir -p $TYPO3_CURRENT_VERSION_DIR'typo3temp/llxml'
/bin/mv -f $TYPO3_CURRENT_VERSION_DIR'typo3conf/temp_CACHED'* $TYPO3_TEMP_DIR >/dev/null 2>&1

#
# Fix permissions
#
echo "Step 5 -> Fix permissions"
chown apache:apache -R $TYPO3_CURRENT_VERSION_DIR*
chmod 755 -R $TYPO3_CURRENT_VERSION_DIR*
chmod 755 -R /home/user/*

# Done
echo "Step 6 -> Upgrade done"

# Success
exit 0
}

#
# Main logic
#
if [ -d $TYPO3_NEW_VERSION_DIR ]
then
	if [ -d $TYPO3_CURRENT_VERSION_DIR ]
	then
		if [ $TYPO3_SERVER = dev -a $TYPO3_DIR = typo3_afpa ]
		then
			call_main_process
		elif [ $TYPO3_SERVER = recette -a $TYPO3_DIR = typo3_rec ]
		then
			call_main_process
		elif [ $TYPO3_SERVER = prod -a $TYPO3_DIR = typo3_prod ]
		then
			call_main_process
		else
			echo 'Erreur -> Le serveur de '$TYPO3_SERVER' ne correspond pas au répertoire: '$TYPO3_DIR
			exit 1
		fi
	else
		echo 'Erreur -> La version actuelle de Typo3 '$TYPO3_CURRENT_VERSION_DIR' ne correspond pas'
		exit 1
	fi
else
	echo 'Erreur -> Le package de livraison '$TYPO3_NEW_VERSION_DIR' est inexistant'
	exit 1
fi

#
# End
#
Vous devez modifier ce script en fonction de vos environnements: votre répertoire qui contient votre site web Typo3, le chemin des nouvelles sources.

Pour exécuter les scripts sur votre serveur Linux

./update_typo3.sh
./rollback_typo3.sh