<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://techwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Bacula_Reclaim_Space_Script</id>
	<title>Bacula Reclaim Space Script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://techwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=Bacula_Reclaim_Space_Script"/>
	<link rel="alternate" type="text/html" href="http://techwiki.co.uk/index.php?title=Bacula_Reclaim_Space_Script&amp;action=history"/>
	<updated>2026-04-16T05:55:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://techwiki.co.uk/index.php?title=Bacula_Reclaim_Space_Script&amp;diff=28&amp;oldid=prev</id>
		<title>Adam.birds: Created page with &quot;Create a file called '''reclaimspace.sh''' in the '''/root''' directory. To do this do the following:  &lt;pre&gt; cd /root &lt;/pre&gt;  &lt;pre&gt; vi reclaimspace.sh &lt;/pre&gt;  Then copy and pa...&quot;</title>
		<link rel="alternate" type="text/html" href="http://techwiki.co.uk/index.php?title=Bacula_Reclaim_Space_Script&amp;diff=28&amp;oldid=prev"/>
		<updated>2016-04-28T10:13:56Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Create a file called &amp;#039;&amp;#039;&amp;#039;reclaimspace.sh&amp;#039;&amp;#039;&amp;#039; in the &amp;#039;&amp;#039;&amp;#039;/root&amp;#039;&amp;#039;&amp;#039; directory. To do this do the following:  &amp;lt;pre&amp;gt; cd /root &amp;lt;/pre&amp;gt;  &amp;lt;pre&amp;gt; vi reclaimspace.sh &amp;lt;/pre&amp;gt;  Then copy and pa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Create a file called '''reclaimspace.sh''' in the '''/root''' directory. To do this do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi reclaimspace.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then copy and paste the following in to that file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#***********************************************************&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
## get a list of volumes that do exist on the disk but do not in the catalog.&lt;br /&gt;
CATALOGVOLS=$(mktemp -p /tmp catvols.XXXXXXXX);&lt;br /&gt;
DISKVOLS=$(mktemp -p /tmp diskvols.XXXXXXXX);&lt;br /&gt;
mysql -N -u root bacula &amp;lt;&amp;lt;&amp;lt;'SELECT VolumeName from Media' &amp;gt;$CATALOGVOLS;&lt;br /&gt;
find /home/bacula -name &amp;quot;srv-*&amp;quot; -printf &amp;quot;%f\n&amp;quot; | egrep -v \.bsr$ &amp;gt;$DISKVOLS;&lt;br /&gt;
 &lt;br /&gt;
## iterate through catalogvols and look for the diskvol entry&lt;br /&gt;
cat $DISKVOLS | while read VOL; do&lt;br /&gt;
if ! grep -q $VOL $CATALOGVOLS; then&lt;br /&gt;
echo -n $VOL does not exist! Deleting ..;&lt;br /&gt;
find /home/bacula -name $VOL -exec rm -f {} \;&lt;br /&gt;
echo &amp;quot;Deleted&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
done&lt;br /&gt;
 &lt;br /&gt;
## Get a list of jobs which failed and are using a volume unnecessarily.&lt;br /&gt;
mysql -N -u root bacula &amp;lt;&amp;lt;&amp;lt;'&lt;br /&gt;
SELECT DISTINCT Job.JobId,VolumeName FROM Media LEFT JOIN (Job, JobMedia)&lt;br /&gt;
ON (Media.MediaId = JobMedia.MediaId&lt;br /&gt;
AND Job.JobId = JobMedia.JobId&lt;br /&gt;
AND Job.JobStatus NOT IN (&amp;quot;C&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;e&amp;quot;,&amp;quot;T&amp;quot;))&lt;br /&gt;
WHERE Media.VolumeName LIKE &amp;quot;srv-%&amp;quot;' | while read DATA; do&lt;br /&gt;
JOBID=$(echo $DATA | tr -s &amp;quot; &amp;quot; | cut -d &amp;quot; &amp;quot; -f1)&lt;br /&gt;
VOL=$(echo $DATA | cut -d&amp;quot; &amp;quot; -f2)&lt;br /&gt;
 &lt;br /&gt;
COUNT=$(mysql -N -u root bacula &amp;lt;&amp;lt;&amp;lt;'SELECT COUNT(DISTINCT Job.JobId) from Job, Media, JobMedia WHERE VolumeName=&amp;quot;'$VOL'&amp;quot; AND Media.MediaId = JobMedia.MediaId AND Job.JobId = JobMedia.JobId AND JobStatus IN (&amp;quot;C&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;e&amp;quot;,&amp;quot;T&amp;quot;)')&lt;br /&gt;
if [ &amp;quot;$COUNT&amp;quot; -gt &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
# the volumes in use. Don’t delete!&lt;br /&gt;
continue;&lt;br /&gt;
fi&lt;br /&gt;
 &lt;br /&gt;
if [ &amp;quot;$JOBID&amp;quot; != &amp;quot;NULL&amp;quot; ]; then&lt;br /&gt;
echo -e &amp;quot;delete job JobID=$JOBID\nyes\nquit\n&amp;quot; | /usr/sbin/bconsole 2&amp;gt;&amp;amp;1 &amp;gt;/dev/null&lt;br /&gt;
fi&lt;br /&gt;
echo -n &amp;quot;Deleting $VOL as unusable.. &amp;quot;&lt;br /&gt;
echo -e &amp;quot;delete volume=$VOL\nyes\nquit\n&amp;quot; | /usr/sbin/bconsole 2&amp;gt;&amp;amp;1&amp;gt; /dev/null&lt;br /&gt;
find /home/bacula -name $VOL -exec rm -f {} \;&lt;br /&gt;
echo &amp;quot;OK&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
rm $CATALOGVOLS;&lt;br /&gt;
rm $DISKVOLS;&lt;br /&gt;
#***********************************************************&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then use the following command to make the '''reclaimspace.sh''' script executable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x reclaimspace.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then execute the file using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./reclaimspace.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Bacula]]&lt;br /&gt;
[[Category:Backups]]&lt;br /&gt;
[[Category:Bash Scripts]]&lt;br /&gt;
[[Category:Scripts]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>Adam.birds</name></author>
		
	</entry>
</feed>