Guest User

Untitled

a guest
Jun 24th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. @rem = '-*- Perl -*-';
  2. @rem = '
  3. @echo off
  4. perl -S %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. ';
  7.  
  8. # INCREMENTAL BACKUP SCRIPT.
  9. #
  10. # Author: Toli Lerios
  11.  
  12.  
  13. use strict;
  14. use English;
  15. use File::Remove;
  16. use Net::SMTP;
  17. use Sys::Hostname;
  18.  
  19.  
  20. # Error checking.
  21.  
  22. if (@ARGV!=0) {
  23. warn "\n";
  24. warn "Usage: ",__FILE__,"\n";
  25. die "\n";
  26. }
  27.  
  28. # Configuration.
  29.  
  30. my($password)="Mykalani1";
  31. my($rsync)="C:/Progra~1/cwRsync/bin/rsync.exe --exclude /public/Temp/";
  32. my($src)="backups\@10.10.1.4::data/";
  33. my($dst_root)="E:/backups/KServer";
  34. my($max_copies)=30;
  35. my($smtp_host)="mondeo.websitewelcome.com";
  36. my($email_self)="backups\@kalani.com";
  37. my(@email_admins)=
  38. ("<lydia\@kalani.com>",
  39. "<it\@kalani.com>",
  40. "<paul\@kalani.com>"); # Set to () to stop email notifications.
  41. my($host)=hostname();
  42.  
  43. # Ensure existence of subdirectories.
  44.  
  45. my($files_dir)=$dst_root."/files";
  46. mkdir($files_dir,0777) if (!(-e $files_dir));
  47. my($log_dir)=$dst_root."/logs";
  48. mkdir($log_dir,0777) if (!(-e $log_dir));
  49.  
  50. # Remove old backups (and associated logs).
  51.  
  52. my(@old_backups)=sort(glob($files_dir."/*"));
  53. while (scalar(@old_backups)>=$max_copies) {
  54. my($old_backup)=shift(@old_backups);
  55. warn "Removing ".$old_backup."\n";
  56. File::Remove::remove(\1,$old_backup);
  57. my($date)=($old_backup=~m@/([^/]+)$@);
  58. unlink($log_dir."/".$date.".txt");
  59. }
  60.  
  61. # Copy changed files.
  62.  
  63. my($link_opt)="";
  64. if (scalar(@old_backups)>0) {
  65. $link_opt="--link-dest=".pop(@old_backups)." ";
  66. }
  67. my($dum,$dum,$dum,$mday,$mon,$year)=localtime();
  68. my($date)=sprintf("%04d_%02d_%02d",$year+1900,$mon+1,$mday);
  69. $ENV{"RSYNC_PASSWORD"}=$password;
  70. my($dst)=$files_dir."/".$date;
  71. $dst=~s@(\w):@/cygdrive/\1@;
  72. my($out)=$log_dir."/".$date."_".$host."_out.txt";
  73. my($err)=$log_dir."/".$date."_".$host."_err.txt";
  74. my($cmd)=$rsync." -v -a --delete ".$link_opt.$src." ".$dst.
  75. " 1>".$out." 2>".$err;
  76. warn "Running ".$cmd."\n";
  77. system($cmd);
  78. if ((-s $err)==0) {
  79. unlink($err);
  80. } else {
  81. warn "Errors occured.\n";
  82. if ($#email_admins>0) {
  83. warn "Sending error report.\n";
  84. my($smtp)=Net::SMTP->new($smtp_host);
  85. $smtp->auth($email_self,$password);
  86. $smtp->mail($email_self);
  87. my($email_admin);
  88. foreach $email_admin (@email_admins) {
  89. $smtp->to($email_admin);
  90. }
  91. $smtp->data();
  92. $smtp->datasend("From: Backup script <".$email_self.">\n");
  93. $smtp->datasend("To: ".join(',',@email_admins)."\n");
  94. $smtp->datasend("Subject: Nonempty KServer backup error log on ".
  95. $host."\n\n");
  96. $smtp->datasend("Nonempty KServer backup error log on ".
  97. $host."\n\n");
  98. open(ERR,"<".$err);
  99. while (<ERR>) {
  100. $smtp->datasend($_);
  101. }
  102. close(ERR);
  103. $smtp->dataend();
  104. $smtp->quit();
  105. }
  106. }
  107. die "Done.\n";
  108.  
  109. __END__
  110. :endofperl
Add Comment
Please, Sign In to add comment