Search code examples
antbuildbackup

ANT build- Deleting multiple dirsets


I have added a target in a build file to delete backups that are older than 4 days by using a timestamp:

    <tstamp>
        <format pattern="MM/DD/yyyy HH:MM aa" offset="-4" property="backup.deletedate" />
    </tstamp>
    <echo message="Deleting log directories created on or before ${backup.deletedate}" />
    <delete verbose="true">
        <dirset dir="${backup.dir}/CI">
            <date datetime="${backup.deletedate}" when="before" checkdirs="true" />
        </dirset>
        <dirset dir="${backup.dir}/DEV_MASTER">
            <date datetime="${backup.deletedate}" when="before" checkdirs="true" />
        </dirset>
    </delete>

However it ony deletes from the first directory (CI) and skips the second.

How can I set it to remove from BOTH directories?


Solution

  • Seems the dirset collection was skipping non-empty directories. I overcame it by using a fileset for the entire backup dir:

        <tstamp>
            <format pattern="MM/DD/yyyy HH:MM aa" offset="-4" property="backup.deletedate" />
        </tstamp>
        <echo message="Deleting log directories created on or before ${backup.deletedate}" />       
        <delete verbose="true" includeemptydirs="true">
            <fileset dir="${backup.dir}">               
                <date datetime="${backup.deletedate}" when="before" checkdirs="true" />
            </fileset>
        </delete>
    

    Works like a charm!