Skip to main content

Script to delete old backups files created with Cobian Backup

The following ruby code will delete from a folder old backups files created with Cobian Backup. The deletion is recursive, so all the folders within the folder will be cleaned.

# 
# Deletes old backups made with Cobian Backup. This code is released under the MIT license.
 
NUMBER_OF_FILES_TO_KEEP = 6
def delete_old_backups(path)
 files =  Dir.entries(path)
 files.sort! {|x,y| y <=> x }
 files.delete_if {|x| x == "." or  x == ".." }
 name_of_file = " "
 new_name_of_file = ""
 file_cnt = 0
 files.each do |f|
   puts f
   new_name_of_file = f.split(" ")[0]
   if new_name_of_file != name_of_file
      file_cnt = 0
      name_of_file = new_name_of_file
   end
    if File.directory?(path + '/' + f)
      delete_old_backups(path + '/' + f)
    end
    file_cnt = file_cnt + 1
    if file_cnt > NUMBER_OF_FILES_TO_KEEP
      puts "delete " + path + '/' + f
      File.delete(path + '/' + f)
    end
  end
end

delete_old_backups("./..")

Comments

Mikesco3 said…
I have a set of scripts that also remove old backups, only I wrote them in Batch because ruby is not always available on all of the machines where I'm running Cobian backup.
the script runs in two parts,
the first part collects a list of what is currently there and renames the list of files that was made an x number of backups ago for deletion.
http://docs.google.com/View?id=dc8hktjh_81f5t9wvhr

the second script deletes the contents that are listed in the list that is ready for deletion.
http://docs.google.com/View?id=dc8hktjh_79cgmfd6ff

Popular posts from this blog

Powershell script for converting JPG to TIFF

The following Powershell script will convert a batch of JPEG files to TIFF format: #This Code is released under MIT license [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") $files_folder = 'C:\path-where-your-jpg-files-are\' $pdfs = get-childitem $files_folder -recurse | where {$_.Extension -match "jpg"} foreach($pdf in $pdfs) { $picture = [System.Drawing.Bitmap]::FromFile( $pdf.FullName ) $tiff = $pdf.FullName.replace('.PDF','').replace('.pdf','').replace('.jpg','').replace('.JPG','') + '.tiff' $picture.Save($tiff) }

Power Automate: SFTP action "Test connection failed"

When I added an SFTP create file action to my Power Automate flow ( https://flow.microsoft.com ) , I got the following error in the action step, within the designer: "Test connection failed" To troubleshoot the Power Automate connection, I had to: go the Power Automate portal then "Data"->"Connections"  the sftp connection was there, I clicked on the ellipsis, and entered the connection info It turns out, that screen provides more details about the connection error. In my case, it was complaining that "SSH host key finger-print xxx format is not supported. It must be in 'MD5' format". I had provided the sha fingerprint that WinScp shows. Instead, I needed to use the MD5 version of the fingerprint. To get that, I had to run in command line (I was in a folder that had openssh in it): ssh -o FingerprintHash=md5 mysftpsite.com To get the fingerprint in MD5 format. I took the string (without the "MD5:" part of the string) and put

Alert if file missing using Powershell

The following Powershell script can be used to send an email alert when a file is missing from a folder or it is the same file from a previous check: $path_mask = "yourfile_*.txt" $previous_file_store = "lastfileread.txt" $script_name = "File Check" ###### Functions ########## Function EMailLog($subject, $message) {    $emailTo = "juanito@yourserver.com"    $emailFrom = "alert@yourserver.com"    $smtpserver="smtp.yourserver.com"       $smtp=new-object Net.Mail.SmtpClient($smtpServer)    $smtp.Send($emailFrom, $emailTo, $subject, $message) } Try {    #get files that match the mask    $curr_file = dir $path_mask |  select name    if ($curr_file.count -gt 0)    {        #file found        #check if the file is different from the previous file read        $previous_file = Get-Content $previous_file_store        $curr_file_name = $curr_file.Item(0).Name        if ($