Closed FacundoAdorno closed 7 years ago
Considerando hasta el momento el ultimo release estable de la distribución Debian es Jessie, la versión mas actualizada de ant
que se encuentra en sus repositorios es 1.9.4, por lo que para instalar un paquete mayor a las versiones del release stable hay que utilizar el repositorio especial llamado jessie-backports, e instalando como se indica en esta página https://backports.debian.org/Instructions/.
### Agregar la línea inferior en la lista /etc/apt/sources.list
# deb http://ftp.debian.org/debian jessie-backports main
apt-get update
apt-get -t jessie-backports install "package"
Se realizó lo requerido utilizando la invocación a un <target>
interno que ejecuta un script sh ya que el uso de <allbutlast>
no funciona como se esperaba. Se probó de varias formas la manera de seleccionar los directorios de backup, por ejemplo:
<delete includeemptydirs="true">
<allbutlast count="1">
<sort>
<name/>
<resources>
<fileset dir="${dspace.dir}">
<include name="${patron}" />
</fileset>
</resources>
</sort>
</allbutlast>
</delete>
utilizando como ${patrón} p.e. etc.bak-**/**
, etc.bak-*/
, etc.bak-**
, y otros, pero ninguno funcionaba como se esperaba ya que o no se seleccionaba nada para eliminar, o se seleccionaban hasta archivos del directorio de backup que supuestamente debia conservarse. Además los directorios no eran eliminados, sino que se eliminaban los archivos unicamente. Probando con <dirset>
en vez de <fileset>
tampoco se conseguían resultados satisfactorios.
El script de actualización permite, al usuario que la ejecuta, indicar si desea eliminar los directorio de backup generados en el el directorio de instalación. El problema es que se borran todos los backups al confirmar dicha acción.
Sería necesario modificar en el build.xml de ANT la lógica de la tarea 'clean_backups' para que permita eliminar todos los directorios de backups (bin.bak, etc.bak, webapps.bak, lib.bak) excepto el último generado.
Para saber el último generado nos basaremos en el nombre del archivo ya que tiene en sí mismo la fecha en la que fue creado ese backup (p.e. se utiliza el patrón etc.bak-YYYYMMDD-HHmmss). No utilizaremos la fecha del filesystem ya que no es muy confiable y puede ser propenso a errores...
Como en el servidor se utiliza una versión de Apache-Ant >= v1.9.5, se puede realizar lo requerido utilizando la instrucción
que aparentemente permite seleccionar dentro de un aquellos que matchean excepto más reciente (debido al
count=1
).Una solución para un caso similar se propone en StackOverflow --> http://stackoverflow.com/a/30286287.
También podría pensarse en agregar un parámetro que indique los N backups más recientes en vez de sólo el último.
Otros enlaces de posible ayuda