This example is used to maintain the webcamera (named 'pear') which saves it's images to a date-stamped directory daily. Any directory which is older than 14 days will be marked for deletion.
def directory_housekeeping() lifespan = 14 format_mask = 'm_d_y' separator = format_mask.match(/[\_*\-]/).to_s earliest_date = Time.now + (60 * 60 * 24) * -lifespan cut_off_date = Date.new(y=earliest_date.year,m=earliest_date.month,d=earliest_date.day) a_format = Array.new a_format[0] = format_mask.match(/^[y,m,d]*/).to_s a_format[1] = format_mask.match(separator + '[y,m,d]*').to_s.gsub(separator,'') a_format[2] = format_mask.match('[y,m,d]$').to_s file = File.new('../housekeeping/webcam_pear/dir.xml') ddoc = REXML::Document.new(file) file.close file_delete = File.new('../housekeeping/webcam_pear/files2delete.xml', 'w') doc_delete = Document.new() doc_delete.add_element('files') ddoc.root.elements.each('file') do |file_node| sfile = file_node.text idate = Array.new idate[0] = sfile.match(/^\d*/).to_s.to_i idate[1] = sfile.match(/\_\d*/).to_s.gsub(separator,'').to_i idate[2] = sfile.match(/\_\d*\d$/).to_s.gsub(separator,'').to_i h = Hash.new 0.upto(2) {|i| h[a_format[i]] = idate[i]} file_date = Date.new(y=h['y'], m=h['m'], d=h['d']) if file_date < cut_off_date o_file2delete = Element.new('file') o_file2delete.text = file_date.strftime(dformat) doc_delete.root.add_element o_file2delete end end file_delete.puts doc_delete end
file: dir.xml
<dir> <file>11_4_2007</file> <file>11_5_2007</file> <file>11_6_2007</file> <file>11_7_2007</file> <file>11_8_2007</file> <file>11_9_2007</file> <file>12_10_2007</file> <file>12_11_2007</file> <file>12_1_2007</file> <file>12_12_2007</file> <file>12_13_2007</file> <file>12_14_2007</file> <file>12_15_2007</file> <file>12_16_2007</file> <file>12_17_2007</file> <file>12_18_2007</file> <file>12_19_2007</file> <file>12_20_2007</file> <file>12_21_2007</file> <file>12_2_2007</file> <file>12_22_2007</file> <file>12_23_2007</file> <file>12_24_2007</file> <file>12_25_2007</file> <file>12_26_2007</file> <file>12_27_2007</file> <file>12_28_2007</file> <file>12_3_2007</file> <file>12_4_2007</file> <file>12_5_2007</file> <file>12_6_2007</file> <file>12_7_2007</file> <file>12_8_2007</file> <file>12_9_2007</file> </dir>
file: files2delete.xml
<files> <file>11_4_2007</file> <file>11_5_2007</file> <file>11_6_2007</file> <file>11_7_2007</file> <file>11_8_2007</file> <file>11_9_2007</file> <file>12_10_2007</file> <file>12_11_2007</file> <file>12_1_2007</file> <file>12_12_2007</file> <file>12_13_2007</file> <file>12_14_2007</file> <file>12_15_2007</file> <file>12_2_2007</file> <file>12_3_2007</file> <file>12_4_2007</file> <file>12_5_2007</file> <file>12_6_2007</file> <file>12_7_2007</file> <file>12_8_2007</file> <file>12_9_2007</file> </files>
I really need it desperately. Thanks in advance.