PageRenderTime 107ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/scripts/core/cleaner/cleaner.pl

https://bitbucket.org/vps/videoscripts
Perl | 1386 lines | 846 code | 283 blank | 257 comment | 62 complexity | 41fd32b6f4f2459f431cc0dde8690f7d MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. #!/usr/bin/perl -I/opt/CNNi/videoscripts/libraries/perl
  2. # Ivan Leon
  3. # Date: 29 APR 2011
  4. # Script: cleaner.pl
  5. # $Id:$
  6. # Libraries
  7. use strict;
  8. use DMT::Video_Logs;
  9. use DMT::directories_parser;
  10. use Net::FTP;
  11. use Date::Manip;
  12. use Sys::Hostname;
  13. # Start Logging
  14. log_setglobal_logfile('cleaner/cleaner');
  15. log_init();
  16. # Directories
  17. my $scripts_root_dir = &get_directory_path('scriptsroot');
  18. my $scripts_logs_dir = &get_directory_path('scriptlogs');
  19. my $scripts_core_dir = &get_directory_path('corescripts');
  20. my $video_news_finished_dir = &get_directory_path('videofinishednews');
  21. my $video_news_incoming_dir = &get_directory_path('videoincomingnews');
  22. my $video_news_preprocessor_dir = &get_directory_path('videopreprocessornews');
  23. my $video_news_production_dir = &get_directory_path('videoproductionnews');
  24. my $video_news_temp_dir = &get_directory_path('videotempnews');
  25. my $video_news_logs_backup_dir = $video_news_production_dir . '/videoscripts/logs';
  26. my $video_sports_finished_dir = &get_directory_path('videofinishedsports');
  27. my $video_sports_incoming_dir = &get_directory_path('videoincomingsports');
  28. my $video_sports_preprocessor_dir = &get_directory_path('videopreprocessorsports');
  29. my $video_sports_production_dir = &get_directory_path('videoproductionsports');
  30. my $video_sports_temp_dir = &get_directory_path('videotempsports');
  31. my $video_sports_partners_dir = &get_directory_path('videopartnerssports');
  32. my $video_sports_logs_backup_dir = $video_sports_production_dir . '/videoscripts/logs';
  33. # Globals
  34. my $current_time = localtime;
  35. my $current_year = &UnixDate($current_time, "%Y");
  36. my $current_month = &UnixDate($current_time, "%m");
  37. my $current_day = &UnixDate($current_time, "%d");
  38. my $current_hour = &UnixDate($current_time, "%H");
  39. my $current_minute = &UnixDate($current_time, "%M");
  40. my $current_time_epoch = Date_SecsSince1970GMT($current_month, $current_day, $current_year, $current_hour, $current_minute, 00);
  41. log_data("Current time: " . $current_time . " (" . $current_time_epoch . ")");
  42. log_data("Current Date (YYYY/MM/DD - Hour:Minute): " . $current_year . "/" . $current_month . "/" . $current_day . " - " . $current_hour . ":" . $current_minute);
  43. # Clean video repository directories
  44. &clean_video_repository_directories($video_news_finished_dir);
  45. &clean_video_repository_directories($video_sports_finished_dir);
  46. # Clean video proxy directories
  47. &clean_video_proxy_directories($video_news_finished_dir);
  48. &clean_video_proxy_directories($video_sports_finished_dir);
  49. # Clean preprocessor directories
  50. &clean_preprocessor_directories();
  51. # Clean temp directories
  52. &clean_temp_directories($video_news_temp_dir);
  53. &clean_temp_directories($video_sports_temp_dir);
  54. # Clean quickclips directory
  55. &clean_quickclips_directory();
  56. # Clean TEG Offpkgr directory
  57. &clean_teg_offpkgr_directory();
  58. # Clean logs directories
  59. &clean_logs_directories();
  60. # Clean done directories
  61. &clean_done_directories();
  62. # Clean failed counter directory
  63. &clean_failed_counter_directory();
  64. # Clean news jobs notifications monitor directory
  65. &clean_news_jobs_notifications_monitor_directory();
  66. # Clean sports jobs notifications monitor directory
  67. &clean_sports_jobs_notifications_monitor_directory();
  68. # Clean veas directory
  69. &clean_veas_directory($video_news_incoming_dir);
  70. &clean_veas_directory($video_sports_incoming_dir);
  71. # Clean agility profiles backup directory
  72. &clean_agility_profiles_backup_san_directory($video_news_production_dir);
  73. &clean_agility_profiles_backup_san_directory($video_sports_production_dir);
  74. &clean_agility_profiles_backup_local_directory();
  75. # Clean sports partners directories
  76. &clean_sports_partners_directories();
  77. # Clean NBA teams incoming directories
  78. &clean_nba_teams_incoming_directories($video_sports_incoming_dir . '/nba/teams');
  79. # Clean Elemental finished and incoming directories - Testing period
  80. #&clean_elemental_finished_directory($video_sports_finished_dir . '/elemental');
  81. #&clean_elemental_incoming_directory($video_sports_incoming_dir . '/elemental');
  82. # Clean Adactus Gfx directory
  83. &clean_cnn_adactus_gfx_directory($video_news_production_dir . '/videoscripts/cnn_adactus_gfx');
  84. # Clean news license usage directory
  85. &clean_news_license_usage_directory($video_news_production_dir . '/videoscripts/news_license_usage_monitor');
  86. # Clean directory
  87. &clean_directory($video_sports_incoming_dir . '/digitalrapids');
  88. # Clean sub directories
  89. &clean_sub_directories($video_sports_finished_dir . '/digitalrapids');
  90. # Clean thumbnail directories - Will not be needed after properties move to CMS3
  91. # Clean incoming directories
  92. ######## To keep SAG Awards Archived files alive ########
  93. log_system("touch /video/sports/finished/tbs/videos_repository/sag_archived_redcarpet/playList.xml");
  94. log_system("touch /video/sports/finished/tbs/videos_repository/sag_archived_redcarpet/sag_awards_redcarpet.mp4");
  95. #########################################################
  96. # Finish Logging
  97. log_complete();
  98. #################
  99. ## Subroutines ##
  100. #################
  101. sub clean_video_repository_directories {
  102. log_data("Subroutine: clean_video_repository_directories");
  103. my $video_finished_dir = shift;
  104. # Repository directories array
  105. my @directories = '';
  106. if ($video_finished_dir =~ /news/) { # News directory
  107. @directories = ('cnn', 'cnne', 'hln', 'money', 'ttn');
  108. } elsif ($video_finished_dir =~ /sports/) { # Sports directory
  109. @directories = ('adultswim', 'cartoon', 'nba', 'ncaa', 'pga', 'si', 'tbs', 'tcm', 'tntla', 'tnt', 'trutv');
  110. } else { # Unknown directory
  111. log_error("Unknown directory: " . $video_finished_dir);
  112. return;
  113. }
  114. # Process repository directories
  115. log_data("Process repository directories");
  116. foreach my $directory (@directories) {
  117. # Build repository directory path
  118. my $repository_directory = $video_finished_dir . "/$directory/videos_repository";
  119. log_data("Processing repository directory: " . $repository_directory);
  120. # Get list of files
  121. log_data("Get list of files");
  122. my @files_array = sort(qx `/usr/bin/find $repository_directory -type f`);
  123. # Process files
  124. foreach my $file (@files_array) {
  125. log_data("Processing file: " . $file);
  126. # Get file's last modified time
  127. chomp $file;
  128. my $file_timestamp = (stat($file))[9];
  129. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  130. # Determine time difference
  131. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  132. log_data("File time difference: " . $file_time_difference . " day(s)");
  133. # Delete files older than 7 days
  134. if ($file_time_difference > 7) {
  135. log_data("Delete file: " . $file);
  136. log_system("/bin/rm -f \'$file\'");
  137. }
  138. }
  139. # Get list of day directories
  140. log_data("Get list of day directories");
  141. my @day_directories_array = sort(grep(/\d{4}\/\d{2}\/\d{2}$/, qx `/usr/bin/find $repository_directory -type d`));
  142. # Process day directories
  143. foreach my $day_directory (@day_directories_array) {
  144. log_data("Processing day directory: " . $day_directory);
  145. # Extract day directory date info
  146. my ($day_dir_year, $day_dir_month, $day_dir_day) = ($day_directory =~ /(\d{4})\/(\d{2})\/(\d{2})/);
  147. log_data("Day directory date: " . $day_dir_year . "/" . $day_dir_month . "/" . $day_dir_day);
  148. # Set day directory modified time
  149. my $day_directory_timestamp = Date_SecsSince1970GMT($day_dir_month, $day_dir_day, $day_dir_year, $current_hour, $current_minute, 00);
  150. log_data("Day directory last modified: " . localtime($day_directory_timestamp) . " (" . $day_directory_timestamp . ")");
  151. # Determine time difference
  152. my $day_directory_time_difference = int(($current_time_epoch - $day_directory_timestamp)/(60 * 60 * 24));
  153. log_data("Day directory time difference: " . $day_directory_time_difference . " day(s)");
  154. # Delete day directories older than 7 days
  155. if ($day_directory_time_difference > 7) {
  156. log_data("Delete day directory: " . $day_directory);
  157. log_system("/bin/rm -f -r $day_directory");
  158. }
  159. }
  160. # Get list of month directories
  161. log_data("Get list of month directories");
  162. my @month_directories_array = sort(grep(/\d{4}\/\d{2}$/, qx `/usr/bin/find $repository_directory -type d`));
  163. # Process month directories
  164. foreach my $month_directory (@month_directories_array) {
  165. log_data("Processing month directory: " . $month_directory);
  166. chomp $month_directory;
  167. # Determine file's last modified time
  168. my $month_directory_timestamp = (stat($month_directory))[9];
  169. log_data("Month directory last modified: " . localtime($month_directory_timestamp));
  170. # Determine time difference
  171. my $month_directory_time_difference = int(($current_time_epoch - $month_directory_timestamp)/(60 * 60 * 24));
  172. log_data("Month directory time difference: " . $month_directory_time_difference . " day(s)");
  173. # Delete month directories older than 30 days
  174. if ($month_directory_time_difference > 30) {
  175. log_data("Delete month directory: " . $month_directory);
  176. log_system("/bin/rm -f -r $month_directory");
  177. }
  178. }
  179. # Get list of year directories
  180. log_data("Get list of year directories");
  181. my @year_directories_array = sort(grep(/\d{4}$/, qx `/usr/bin/find $repository_directory -type d`));
  182. # Process year directories
  183. foreach my $year_directory (@year_directories_array) {
  184. log_data("Processing year directory: " . $year_directory);
  185. # Extract year directory date info
  186. my ($year_dir_year) = ($year_directory =~ /(\d{4})/);
  187. log_data("Year directory date: " . $year_dir_year);
  188. # Delete year directories if current year is different and month is 02
  189. if (($year_dir_year ne $current_year)&&($current_month eq '02')) {
  190. log_data("Delete year directory: " . $year_directory);
  191. log_system("/bin/rm -f -r $year_directory");
  192. }
  193. }
  194. }
  195. }
  196. sub clean_preprocessor_directories {
  197. log_data("Subroutine: clean_preprocessor_directories");
  198. # Preprocessor directories array
  199. my @directories = ($video_news_preprocessor_dir, $video_sports_preprocessor_dir);
  200. # Process preprocessor directories
  201. log_data("Process preprocessor directories");
  202. foreach my $preprocessor_directory (@directories) {
  203. log_data("Preprocessor directory: " . $preprocessor_directory);
  204. # Get list of files
  205. log_data("Get list of files");
  206. my @files_array = sort(qx `/usr/bin/find $preprocessor_directory -type f`);
  207. # Process files
  208. foreach my $file (@files_array) {
  209. log_data("Processing file: " . $file);
  210. # Get file's last modified time
  211. chomp $file;
  212. my $file_timestamp = (stat($file))[9];
  213. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  214. # Determine time difference
  215. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  216. log_data("File time difference: " . $file_time_difference . " day(s)");
  217. # Delete files older than 3 days
  218. if ($file_time_difference > 3) {
  219. log_data("Delete file: " . $file);
  220. log_system("/bin/rm -f \'$file\'");
  221. }
  222. }
  223. # Get list of directories
  224. log_data("Get list of directories");
  225. my @directories_array = sort(qx `/usr/bin/find $preprocessor_directory -type d`);
  226. # Process directories
  227. foreach my $directory (@directories_array) {
  228. log_data("Processing directory: " . $directory);
  229. chomp $directory;
  230. # Determine file's last modified time
  231. my $directory_timestamp = (stat($directory))[9];
  232. log_data("Directory last modified: " . localtime($directory_timestamp));
  233. # Determine time difference
  234. my $directory_time_difference = int(($current_time_epoch - $directory_timestamp)/(60 * 60 * 24));
  235. log_data("Directory time difference: " . $directory_time_difference . " day(s)");
  236. # Delete directories older than 3 days
  237. if ($directory_time_difference > 3) {
  238. log_data("Delete directory: " . $directory);
  239. log_system("/bin/rm -f -r $directory");
  240. }
  241. }
  242. }
  243. }
  244. sub clean_logs_directories {
  245. log_data("Subroutine: clean_logs_directories");
  246. # Get list of log files
  247. log_data("Get list of log files");
  248. my @log_files_array = sort(grep(/.log$/, qx `/usr/bin/find $scripts_logs_dir -type f`));
  249. # Process log files
  250. foreach my $log_file (@log_files_array) {
  251. log_data("Processing log file: " . $log_file);
  252. # Get log directory name
  253. my ($log_directory_name) = ($log_file =~ /\/logs\/(.+)\//);
  254. log_data("Log directory name: " . $log_directory_name);
  255. # Get file's last modified time
  256. chomp $log_file;
  257. my $log_file_timestamp = (stat($log_file))[9];
  258. log_data("Log file last modified: " . localtime($log_file_timestamp) . " (" . $log_file_timestamp . ")");
  259. # Determine time difference
  260. my $log_file_time_difference = int(($current_time_epoch - $log_file_timestamp)/(60 * 60 * 24));
  261. log_data("Log file time difference: " . $log_file_time_difference . " day(s)");
  262. # Get the local host name
  263. my $local_host_name = hostname();
  264. if ($local_host_name =~ /turner.com/) { # Remove turner domain
  265. ($local_host_name) = ($local_host_name =~ /(.+).turner.com/);
  266. }
  267. log_data("Local Host Name: " . $local_host_name);
  268. # Determine which log backup directory to use
  269. my $log_backup_dir = '';
  270. if (($log_directory_name =~ /cnn_/)||($log_directory_name =~ /cnne_/)||($log_directory_name =~ /money_/)||($log_directory_name =~ /hln_/)||($log_directory_name =~ /news_/)) { # News log directory
  271. log_data("News log directory");
  272. # Set the log backup directory path
  273. $log_backup_dir = $video_news_logs_backup_dir . '/' . $local_host_name . '/' . $log_directory_name;
  274. } else { # Sports log directory
  275. log_data("Sports log directory");
  276. # Set the log backup directory path
  277. $log_backup_dir = $video_sports_logs_backup_dir . '/' . $local_host_name . '/' . $log_directory_name;
  278. }
  279. log_data("Log backup directory path: " . $log_backup_dir);
  280. # Check if log backup directory exists
  281. if (!(-d $log_backup_dir)) { # Log backup directory not found
  282. log_error("Log backup directory not found: " . $log_backup_dir);
  283. # Create missing directory
  284. log_system("mkdir $log_backup_dir");
  285. chmod(0775, $log_backup_dir);
  286. }
  287. # Move to log to backup directory if older than 1 day
  288. if ($log_file_time_difference >= 1) {
  289. log_data("Move file: " . $log_file);
  290. log_system("mv $log_file $log_backup_dir");
  291. }
  292. }
  293. # Get list of news backup log files
  294. log_data("Get list of news backup log files");
  295. my @news_log_backup_files_array = sort(grep(/.log$/, qx `/usr/bin/find $video_news_logs_backup_dir -type f`));
  296. # Process news backup log files
  297. foreach my $news_log_backup_file (@news_log_backup_files_array) {
  298. log_data("Processing news backup log file: " . $news_log_backup_file);
  299. # Get file's last modified time
  300. chomp $news_log_backup_file;
  301. my $news_backup_log_file_timestamp = (stat($news_log_backup_file))[9];
  302. log_data("News backup log file last modified: " . localtime($news_backup_log_file_timestamp) . " (" . $news_backup_log_file_timestamp . ")");
  303. # Determine time difference
  304. my $news_backup_log_file_time_difference = int(($current_time_epoch - $news_backup_log_file_timestamp)/(60 * 60 * 24));
  305. log_data("News backup log file time difference: " . $news_backup_log_file_time_difference . " day(s)");
  306. # Delete log backup files older than 15 days
  307. if ($news_backup_log_file_time_difference > 15) {
  308. log_data("Delete news log backup file: " . $news_log_backup_file);
  309. log_system("/bin/rm -f $news_log_backup_file");
  310. }
  311. }
  312. # Get list of sports backup log files
  313. log_data("Get list of sports backup log files");
  314. my @sports_log_backup_files_array = sort(grep(/.log$/, qx `/usr/bin/find $video_sports_logs_backup_dir -type f`));
  315. # Process sports backup log files
  316. foreach my $sports_log_backup_file (@sports_log_backup_files_array) {
  317. log_data("Processing sports backup log file: " . $sports_log_backup_file);
  318. # Get file's last modified time
  319. chomp $sports_log_backup_file;
  320. my $sports_backup_log_file_timestamp = (stat($sports_log_backup_file))[9];
  321. log_data("Sports backup log file last modified: " . localtime($sports_backup_log_file_timestamp) . " (" . $sports_backup_log_file_timestamp . ")");
  322. # Determine time difference
  323. my $sports_backup_log_file_time_difference = int(($current_time_epoch - $sports_backup_log_file_timestamp)/(60 * 60 * 24));
  324. log_data("Sports backup log file time difference: " . $sports_backup_log_file_time_difference . " day(s)");
  325. # Delete log backup files older than 15 days
  326. if ($sports_backup_log_file_time_difference > 15) {
  327. log_data("Delete sports log backup file: " . $sports_log_backup_file);
  328. log_system("/bin/rm -f $sports_log_backup_file");
  329. }
  330. }
  331. }
  332. sub clean_done_directories {
  333. log_data("Subroutine: clean_logs_directories");
  334. # Get list of files
  335. log_data("Get list of files for /done/ directories");
  336. my @done1_files_array = sort(grep(/\/done\//, qx `/usr/bin/find $scripts_root_dir -type f`));
  337. # Process files
  338. foreach my $file (@done1_files_array) {
  339. log_data("Processing file: " . $file);
  340. # Get file's last modified time
  341. chomp $file;
  342. my $file_timestamp = (stat($file))[9];
  343. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  344. # Determine time difference
  345. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  346. log_data("File time difference: " . $file_time_difference . " day(s)");
  347. # Delete files older than 15 days
  348. if ($file_time_difference > 15) {
  349. log_data("Delete file: " . $file);
  350. log_system("/bin/rm -f \'$file\'");
  351. }
  352. }
  353. # Get list of files
  354. log_data("Get list of files for _done/ directories");
  355. my @done2_files_array = sort(grep(/_done\//, qx `/usr/bin/find $scripts_root_dir -type f`));
  356. # Process files
  357. foreach my $file (@done2_files_array) {
  358. log_data("Processing file: " . $file);
  359. # Get file's last modified time
  360. chomp $file;
  361. my $file_timestamp = (stat($file))[9];
  362. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  363. # Determine time difference
  364. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  365. log_data("File time difference: " . $file_time_difference . " day(s)");
  366. # Delete files older than 15 days
  367. if ($file_time_difference > 15) {
  368. log_data("Delete file: " . $file);
  369. log_system("/bin/rm -f \'$file\'");
  370. }
  371. }
  372. # Get list of files
  373. log_data("Get list of files for /nba_league_pass/done_ directories");
  374. my @done3_files_array = sort(grep(/\/nba_league_pass\/done_/, qx `/usr/bin/find $scripts_root_dir -type f`));
  375. # Process files
  376. foreach my $file (@done3_files_array) {
  377. log_data("Processing file: " . $file);
  378. # Get file's last modified time
  379. chomp $file;
  380. my $file_timestamp = (stat($file))[9];
  381. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  382. # Determine time difference
  383. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  384. log_data("File time difference: " . $file_time_difference . " day(s)");
  385. # Delete files older than 15 days
  386. if ($file_time_difference > 15) {
  387. log_data("Delete file: " . $file);
  388. log_system("/bin/rm -f \'$file\'");
  389. }
  390. }
  391. }
  392. sub clean_quickclips_directory {
  393. log_data("Subroutine: clean_quickclips_directory");
  394. # Build quickclips directory path
  395. my $quickclips_directory = $video_news_finished_dir . "/cnn/quickclips";
  396. log_data("Processing quickclips directory: " . $quickclips_directory);
  397. # Get list of directories
  398. log_data("Get list of directories");
  399. my @directories_array = sort(qx `/usr/bin/find $quickclips_directory -type d`);
  400. # Process directories
  401. foreach my $directory (@directories_array) {
  402. log_data("Processing directory: " . $directory);
  403. chomp $directory;
  404. # Determine file's last modified time
  405. my $directory_timestamp = (stat($directory))[9];
  406. log_data("Directory last modified: " . localtime($directory_timestamp));
  407. # Determine time difference
  408. my $directory_time_difference = int(($current_time_epoch - $directory_timestamp)/(60 * 60 * 24));
  409. log_data("Directory time difference: " . $directory_time_difference . " day(s)");
  410. # Delete directories older than 7 days
  411. if ($directory_time_difference > 7) {
  412. log_data("Delete directory: " . $directory);
  413. log_system("/bin/rm -f -r $directory");
  414. }
  415. }
  416. }
  417. sub clean_failed_counter_directory {
  418. log_data("Subroutine: clean_failed_counter_directory");
  419. # Read failed counter directory
  420. my $failed_counter_directory = $scripts_core_dir . "/failed_handler/counter";
  421. log_data("Reading failed counter directory: $failed_counter_directory");
  422. opendir(FAILEDCOUNTERDIR, $failed_counter_directory) || log_error("Couldn't open $failed_counter_directory : $!");
  423. my @failed_counter_array = grep (/.txt$/, sort(readdir(FAILEDCOUNTERDIR)));
  424. close(FAILEDCOUNTERDIR);
  425. # Process failed counter files
  426. foreach my $failed_counter_file (@failed_counter_array) {
  427. log_data("Processing failed counter file: " . $failed_counter_file);
  428. chomp $failed_counter_file;
  429. # Determine file's last modified time
  430. my $failed_counter_file_timestamp = (stat("$failed_counter_directory/$failed_counter_file"))[9];
  431. log_data("File last modified: " . localtime($failed_counter_file_timestamp));
  432. # Determine time difference
  433. my $failed_counter_file_time_difference = int(($current_time_epoch - $failed_counter_file_timestamp)/(60 * 60 * 24));
  434. log_data("File time difference: " . $failed_counter_file_time_difference . " day(s)");
  435. # Delete files older than 7 days
  436. if ($failed_counter_file_time_difference > 7) {
  437. log_data("Delete file: " . $failed_counter_directory . "/" . $failed_counter_file);
  438. log_system("/bin/rm -f $failed_counter_directory/$failed_counter_file");
  439. }
  440. }
  441. }
  442. sub clean_news_jobs_notifications_monitor_directory {
  443. log_data("Subroutine: clean_news_jobs_notifications_monitor_directory");
  444. # Read news notifications XML directory
  445. my $news_notifications_xml_directory = $video_news_production_dir . "/videoscripts/news_jobs_notifications_monitor/notification_xmls";
  446. log_data("Reading news notifications XML directory: $news_notifications_xml_directory");
  447. opendir(NEWSXMLDIR, $news_notifications_xml_directory) || log_error("Couldn't open $news_notifications_xml_directory : $!");
  448. my @news_notification_xml_array = grep (/.xml$/, sort(readdir(NEWSXMLDIR)));
  449. close(NEWSXMLDIR);
  450. # Process news notifications XML files
  451. foreach my $news_notification_xml_file (@news_notification_xml_array) {
  452. log_data("Processing news notifications XML file: " . $news_notification_xml_file);
  453. chomp $news_notification_xml_file;
  454. # Determine file's last modified time
  455. my $news_notification_xml_file_timestamp = (stat("$news_notifications_xml_directory/$news_notification_xml_file"))[9];
  456. log_data("File last modified: " . localtime($news_notification_xml_file_timestamp));
  457. # Determine time difference
  458. my $news_notification_xml_file_time_difference = int(($current_time_epoch - $news_notification_xml_file_timestamp)/(60 * 60 * 24));
  459. log_data("File time difference: " . $news_notification_xml_file_time_difference . " day(s)");
  460. # Delete files older than 7 days
  461. if ($news_notification_xml_file_time_difference > 7) {
  462. log_data("Delete file: " . $news_notifications_xml_directory . "/" . $news_notification_xml_file);
  463. log_system("/bin/rm -f $news_notifications_xml_directory/$news_notification_xml_file");
  464. }
  465. }
  466. }
  467. sub clean_sports_jobs_notifications_monitor_directory {
  468. log_data("Subroutine: clean_sports_jobs_notifications_monitor_directory");
  469. # Read sports notifications XML directory
  470. my $sports_notifications_xml_directory = $video_sports_production_dir . "/videoscripts/sports_jobs_notifications_monitor/notification_xmls";
  471. log_data("Reading sports notifications XML directory: $sports_notifications_xml_directory");
  472. opendir(SPORTSXMLDIR, $sports_notifications_xml_directory) || log_error("Couldn't open $sports_notifications_xml_directory : $!");
  473. my @sports_notification_xml_array = grep (/.xml$/, sort(readdir(SPORTSXMLDIR)));
  474. close(SPORTSXMLDIR);
  475. # Process sports notifications XML files
  476. foreach my $sports_notification_xml_file (@sports_notification_xml_array) {
  477. log_data("Processing sports notifications XML file: " . $sports_notification_xml_file);
  478. chomp $sports_notification_xml_file;
  479. # Determine file's last modified time
  480. my $sports_notification_xml_file_timestamp = (stat("$sports_notifications_xml_directory/$sports_notification_xml_file"))[9];
  481. log_data("File last modified: " . localtime($sports_notification_xml_file_timestamp));
  482. # Determine time difference
  483. my $sports_notification_xml_file_time_difference = int(($current_time_epoch - $sports_notification_xml_file_timestamp)/(60 * 60 * 24));
  484. log_data("File time difference: " . $sports_notification_xml_file_time_difference . " day(s)");
  485. # Delete files older than 7 days
  486. if ($sports_notification_xml_file_time_difference > 7) {
  487. log_data("Delete file: " . $sports_notifications_xml_directory . "/" . $sports_notification_xml_file);
  488. log_system("/bin/rm -f $sports_notifications_xml_directory/$sports_notification_xml_file");
  489. }
  490. }
  491. }
  492. sub clean_veas_directory {
  493. log_data("Subroutine: clean_veas_directory");
  494. my $video_incoming_dir = shift;
  495. # Veas directories array
  496. my @directories = '';
  497. if ($video_incoming_dir =~ /news/) { # News directory
  498. @directories = ('cnn','money','veas');
  499. } elsif ($video_incoming_dir =~ /sports/) { # Sports directory
  500. @directories = ('si','nba');
  501. } else { # Unknown directory
  502. log_data("Unknown directory: " . $video_incoming_dir);
  503. return;
  504. }
  505. # Process veas directories
  506. log_data("Process veas directories");
  507. foreach my $directory (@directories) {
  508. # Build veas directory path
  509. my $veas_directory = $video_incoming_dir . "/veas/$directory";
  510. log_data("Processing veas directory: " . $veas_directory);
  511. # Get list of files
  512. log_data("Get list of files");
  513. my @files_array = sort(qx `/usr/bin/find $veas_directory -type f`);
  514. # Process files
  515. foreach my $file (@files_array) {
  516. log_data("Processing file: " . $file);
  517. # Get file's last modified time
  518. chomp $file;
  519. my $file_timestamp = (stat($file))[9];
  520. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  521. # Determine time difference
  522. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  523. log_data("File time difference: " . $file_time_difference . " day(s)");
  524. # Delete files older than 10 days
  525. if ($file_time_difference > 10) {
  526. log_data("Delete file: " . $file);
  527. log_system("/bin/rm -f \'$file\'");
  528. }
  529. }
  530. # Get list of day directories
  531. log_data("Get list of day directories");
  532. my @day_directories_array = sort(grep(/\d{4}\/\d{2}\/\d{2}$/, qx `/usr/bin/find $veas_directory -type d`));
  533. # Process day directories
  534. foreach my $day_directory (@day_directories_array) {
  535. log_data("Processing day directory: " . $day_directory);
  536. # Extract day directory date info
  537. my ($day_dir_year, $day_dir_month, $day_dir_day) = ($day_directory =~ /(\d{4})\/(\d{2})\/(\d{2})/);
  538. log_data("Day directory date: " . $day_dir_year . "/" . $day_dir_month . "/" . $day_dir_day);
  539. # Set day directory modified time
  540. my $day_directory_timestamp = Date_SecsSince1970GMT($day_dir_month, $day_dir_day, $day_dir_year, $current_hour, $current_minute, 00);
  541. log_data("Day directory last modified: " . localtime($day_directory_timestamp) . " (" . $day_directory_timestamp . ")");
  542. # Determine time difference
  543. my $day_directory_time_difference = int(($current_time_epoch - $day_directory_timestamp)/(60 * 60 * 24));
  544. log_data("Day directory time difference: " . $day_directory_time_difference . " day(s)");
  545. # Delete day directories older than 10 days
  546. if ($day_directory_time_difference > 10) {
  547. log_data("Delete day directory: " . $day_directory);
  548. log_system("/bin/rm -f -r $day_directory");
  549. }
  550. }
  551. # Get list of month directories
  552. log_data("Get list of month directories");
  553. my @month_directories_array = sort(grep(/\d{4}\/\d{2}$/, qx `/usr/bin/find $veas_directory -type d`));
  554. # Process month directories
  555. foreach my $month_directory (@month_directories_array) {
  556. log_data("Processing month directory: " . $month_directory);
  557. chomp $month_directory;
  558. # Determine file's last modified time
  559. my $month_directory_timestamp = (stat($month_directory))[9];
  560. log_data("Month directory last modified: " . localtime($month_directory_timestamp));
  561. # Determine time difference
  562. my $month_directory_time_difference = int(($current_time_epoch - $month_directory_timestamp)/(60 * 60 * 24));
  563. log_data("Month directory time difference: " . $month_directory_time_difference . " day(s)");
  564. # Delete month directories older than 30 days
  565. if ($month_directory_time_difference > 30) {
  566. log_data("Delete month directory: " . $month_directory);
  567. log_system("/bin/rm -f -r $month_directory");
  568. }
  569. }
  570. # Get list of year directories
  571. log_data("Get list of year directories");
  572. my @year_directories_array = sort(grep(/\d{4}$/, qx `/usr/bin/find $veas_directory -type d`));
  573. # Process year directories
  574. foreach my $year_directory (@year_directories_array) {
  575. log_data("Processing year directory: " . $year_directory);
  576. # Extract year directory date info
  577. my ($year_dir_year) = ($year_directory =~ /(\d{4})/);
  578. log_data("Year directory date: " . $year_dir_year);
  579. # Delete year directories if current year is different and month is 02
  580. if (($year_dir_year ne $current_year)&&($current_month eq '02')) {
  581. log_data("Delete year directory: " . $year_directory);
  582. log_system("/bin/rm -f -r $year_directory");
  583. }
  584. }
  585. }
  586. }
  587. sub clean_temp_directories {
  588. log_data("Subroutine: clean_temp_directories");
  589. my $video_temp_dir = shift;
  590. # Read temp directory
  591. log_data("Reading temp directory: " . $video_temp_dir);
  592. opendir(TEMDIR, $video_temp_dir) || log_error("Couldn't open $video_temp_dir : $!");
  593. my @temp_directories_array = sort(readdir(TEMDIR));
  594. close(TEMDIR);
  595. # Process temp directories
  596. foreach my $temp_sub_directory (@temp_directories_array) {
  597. if (($temp_sub_directory !~ /DS_Store/)&&($temp_sub_directory !~ /workers/)&&($temp_sub_directory ne '.')&&($temp_sub_directory ne '..')) {
  598. log_data("Processing temp sub-directory: " . $temp_sub_directory);
  599. # Read temp sub-directory
  600. log_data("Reading temp sub-directory: " . $video_temp_dir . "/" . $temp_sub_directory);
  601. opendir(TEMSUBDIR, "$video_temp_dir/$temp_sub_directory") || log_error("Couldn't open $video_temp_dir/$temp_sub_directory : $!");
  602. my @temp_sub_directory_array = sort(readdir(TEMSUBDIR));
  603. close(TEMSUBDIR);
  604. foreach my $temp_sub_directory_file (@temp_sub_directory_array) {
  605. if (($temp_sub_directory_file ne '.')&&($temp_sub_directory_file ne '..')) {
  606. log_data("Processing temp sub-directory file: " . $temp_sub_directory_file);
  607. # Determine temp file's last modified time
  608. my $temp_file_timestamp = (stat("$video_temp_dir/$temp_sub_directory/$temp_sub_directory_file"))[9];
  609. log_data("Temp file last modified: " . localtime($temp_file_timestamp));
  610. # Determine time difference
  611. my $temp_file_time_difference = int(($current_time_epoch - $temp_file_timestamp)/(60 * 60 * 24));
  612. log_data("Temp file time difference: " . $temp_file_time_difference . " day(s)");
  613. # Delete files older than 3 days
  614. if ($temp_file_time_difference > 3) {
  615. log_data("Delete temp file: $video_temp_dir/$temp_sub_directory/$temp_sub_directory_file");
  616. log_system("/bin/rm -f -r $video_temp_dir/$temp_sub_directory/$temp_sub_directory_file");
  617. }
  618. }
  619. }
  620. }
  621. }
  622. }
  623. sub clean_agility_profiles_backup_san_directory {
  624. log_data("Subroutine: clean_agility_profiles_backup_san_directory");
  625. my $video_production_dir = shift;
  626. # Read profiles backup directory
  627. my $video_profiles_backup_directory = $video_production_dir . "/profiles_backup";
  628. log_data("Read profiles backup directory: " . $video_profiles_backup_directory);
  629. opendir(PROFILESDIR, $video_profiles_backup_directory) || log_error("Couldn't open $video_profiles_backup_directory : $!");
  630. my @video_zip_files_array = grep (/.zip$/, sort(readdir(PROFILESDIR)));
  631. close(PROFILESDIR);
  632. # Process profiles backup Zip files
  633. foreach my $video_zip_file (@video_zip_files_array) {
  634. log_data("Processing profiles backup Zip file: " . $video_zip_file);
  635. chomp $video_zip_file;
  636. # Determine file's last modified time
  637. my $video_profiles_backup_zip_file_timestamp = (stat("$video_profiles_backup_directory/$video_zip_file"))[9];
  638. log_data("File last modified: " . localtime($video_profiles_backup_zip_file_timestamp));
  639. # Determine time difference
  640. my $video_profiles_backup_zip_file_time_difference = int(($current_time_epoch - $video_profiles_backup_zip_file_timestamp)/(60 * 60 * 24));
  641. log_data("File time difference: " . $video_profiles_backup_zip_file_time_difference . " day(s)");
  642. # Delete files older than 30 days
  643. if ($video_profiles_backup_zip_file_time_difference > 30) {
  644. log_data("Delete file: " . $video_profiles_backup_directory . "/" . $video_zip_file);
  645. log_system("/bin/rm -f $video_profiles_backup_directory/$video_zip_file");
  646. }
  647. }
  648. }
  649. sub clean_agility_profiles_backup_local_directory {
  650. log_data("Subroutine: clean_agility_profiles_backup_local_directory");
  651. # Read profiles backup directory
  652. my $video_profiles_backup_directory = $scripts_core_dir . "/agility_profiles/profiles_backup";
  653. log_data("Read profiles backup directory: " . $video_profiles_backup_directory);
  654. opendir(PROFILESDIR, $video_profiles_backup_directory) || log_error("Couldn't open $video_profiles_backup_directory : $!");
  655. my @video_zip_files_array = grep (/.zip$/, sort(readdir(PROFILESDIR)));
  656. close(PROFILESDIR);
  657. # Process profiles backup Zip files
  658. foreach my $video_zip_file (@video_zip_files_array) {
  659. log_data("Processing profiles backup Zip file: " . $video_zip_file);
  660. chomp $video_zip_file;
  661. # Determine file's last modified time
  662. my $video_profiles_backup_zip_file_timestamp = (stat("$video_profiles_backup_directory/$video_zip_file"))[9];
  663. log_data("File last modified: " . localtime($video_profiles_backup_zip_file_timestamp));
  664. # Determine time difference
  665. my $video_profiles_backup_zip_file_time_difference = int(($current_time_epoch - $video_profiles_backup_zip_file_timestamp)/(60 * 60 * 24));
  666. log_data("File time difference: " . $video_profiles_backup_zip_file_time_difference . " day(s)");
  667. # Delete files older than 15 days
  668. if ($video_profiles_backup_zip_file_time_difference > 15) {
  669. log_data("Delete file: " . $video_profiles_backup_directory . "/" . $video_zip_file);
  670. log_system("/bin/rm -f $video_profiles_backup_directory/$video_zip_file");
  671. }
  672. }
  673. }
  674. sub clean_sports_partners_directories {
  675. log_data("Subroutine: clean_sports_partners_directories");
  676. # Get list of files
  677. log_data("Get list of files");
  678. my @files_array = sort(grep(/.txt$/, qx `/usr/bin/find $video_sports_partners_dir -type f`));
  679. # Process files
  680. foreach my $file (@files_array) {
  681. log_data("Processing file: " . $file);
  682. # Get file's last modified time
  683. chomp $file;
  684. my $file_timestamp = (stat($file))[9];
  685. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  686. # Determine time difference
  687. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  688. log_data("File time difference: " . $file_time_difference . " day(s)");
  689. # Delete files older than 60 days
  690. if ($file_time_difference > 60) {
  691. log_data("Delete file: " . $file);
  692. log_system("/bin/rm -f \'$file\'");
  693. }
  694. }
  695. }
  696. sub clean_elemental_finished_directory {
  697. log_data("Subroutine: clean_elemental_finished_directory");
  698. my $elemental_finished_dir = shift;
  699. log_data("Elemental finished directory: " . $elemental_finished_dir);
  700. # Get list of files
  701. log_data("Get list of files");
  702. my @files_array = sort(qx `/usr/bin/find $elemental_finished_dir -type f`);
  703. # Process files
  704. foreach my $file (@files_array) {
  705. log_data("Processing file: " . $file);
  706. # Get file's last modified time
  707. chomp $file;
  708. my $file_timestamp = (stat($file))[9];
  709. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  710. # Determine time difference
  711. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  712. log_data("File time difference: " . $file_time_difference . " day(s)");
  713. # Delete files older than 7 days
  714. if ($file_time_difference > 7) {
  715. log_data("Delete file: " . $file);
  716. log_system("/bin/rm -f \'$file\'");
  717. }
  718. }
  719. # Get list of month directories
  720. log_data("Get list of month directories");
  721. my @month_directories_array = sort(grep(/\d{4}\/\d{2}$/, qx `/usr/bin/find $elemental_finished_dir -type d`));
  722. # Process month directories
  723. foreach my $month_directory (@month_directories_array) {
  724. log_data("Processing month directory: " . $month_directory);
  725. chomp $month_directory;
  726. # Determine file's last modified time
  727. my $month_directory_timestamp = (stat($month_directory))[9];
  728. log_data("Month directory last modified: " . localtime($month_directory_timestamp));
  729. # Determine time difference
  730. my $month_directory_time_difference = int(($current_time_epoch - $month_directory_timestamp)/(60 * 60 * 24));
  731. log_data("Month directory time difference: " . $month_directory_time_difference . " day(s)");
  732. # Delete month directories older than 30 days
  733. if ($month_directory_time_difference > 30) {
  734. log_data("Delete month directory: " . $month_directory);
  735. log_system("/bin/rm -f -r $month_directory");
  736. }
  737. }
  738. # Get list of year directories
  739. log_data("Get list of year directories");
  740. my @year_directories_array = sort(grep(/\d{4}$/, qx `/usr/bin/find $elemental_finished_dir -type d`));
  741. # Process year directories
  742. foreach my $year_directory (@year_directories_array) {
  743. log_data("Processing year directory: " . $year_directory);
  744. # Extract year directory date info
  745. my ($year_dir_year) = ($year_directory =~ /(\d{4})/);
  746. log_data("Year directory date: " . $year_dir_year);
  747. # Delete year directories if current year is different and month is 02
  748. if (($year_dir_year ne $current_year)&&($current_month eq '02')) {
  749. log_data("Delete year directory: " . $year_directory);
  750. log_system("/bin/rm -f -r $year_directory");
  751. }
  752. }
  753. }
  754. sub clean_elemental_incoming_directory {
  755. log_data("Subroutine: clean_elemental_incoming_directory");
  756. my $elemental_incoming_dir = shift;
  757. log_data("Elemental incoming directory: " . $elemental_incoming_dir);
  758. # Get list of files
  759. log_data("Get list of files");
  760. my @files_array = sort(qx `/usr/bin/find $elemental_incoming_dir -type f`);
  761. # Process files
  762. foreach my $file (@files_array) {
  763. log_data("Processing file: " . $file);
  764. # Get file's last modified time
  765. chomp $file;
  766. my $file_timestamp = (stat($file))[9];
  767. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  768. # Determine time difference
  769. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  770. log_data("File time difference: " . $file_time_difference . " day(s)");
  771. # Delete files older than 7 days
  772. if ($file_time_difference > 7) {
  773. log_data("Delete file: " . $file);
  774. log_system("/bin/rm -f \'$file\'");
  775. }
  776. }
  777. }
  778. sub clean_nba_teams_incoming_directories {
  779. log_data("Subroutine: clean_nba_teams_incoming_directories");
  780. my $nba_teams_incoming_dir = shift;
  781. log_data("NBA teams incoming directory: " . $nba_teams_incoming_dir);
  782. # Get list of files
  783. log_data("Get list of files");
  784. my @files_array = sort(grep(/.flv$/, qx `/usr/bin/find $nba_teams_incoming_dir -type f`));
  785. # Process files
  786. foreach my $file (@files_array) {
  787. log_data("Processing file: " . $file);
  788. # Get file's last modified time
  789. chomp $file;
  790. my $file_timestamp = (stat($file))[9];
  791. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  792. # Determine time difference
  793. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  794. log_data("File time difference: " . $file_time_difference . " day(s)");
  795. # Delete files older than 15 days
  796. if ($file_time_difference > 15) {
  797. log_data("Delete file: " . $file);
  798. log_system("/bin/rm -f \'$file\'");
  799. }
  800. }
  801. }
  802. sub clean_cnn_adactus_gfx_directory {
  803. log_data("Subroutine: clean_cnn_adactus_gfx_directory");
  804. my $adactus_gfx_dir = shift;
  805. log_data("Adactus Gfx directory: " . $adactus_gfx_dir);
  806. # Get list of files
  807. log_data("Get list of files");
  808. my @files_array = sort(grep(/.xml$/, qx `/usr/bin/find $adactus_gfx_dir -type f`));
  809. # Process files
  810. foreach my $file (@files_array) {
  811. log_data("Processing file: " . $file);
  812. # Get file's last modified time
  813. chomp $file;
  814. my $file_timestamp = (stat($file))[9];
  815. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  816. # Determine time difference
  817. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  818. log_data("File time difference: " . $file_time_difference . " day(s)");
  819. # Delete files older than 7 days
  820. if ($file_time_difference > 7) {
  821. log_data("Delete file: " . $file);
  822. log_system("/bin/rm -f \'$file\'");
  823. }
  824. }
  825. }
  826. sub clean_news_license_usage_directory {
  827. log_data("Subroutine: clean_news_license_usage_directory");
  828. my $news_license_usage_dir = shift;
  829. log_data("News license usage directory: " . $news_license_usage_dir);
  830. # Get list of files
  831. log_data("Get list of files");
  832. my @files_array = sort(grep(/.xml$/, qx `/usr/bin/find $news_license_usage_dir -type f`));
  833. # Process files
  834. foreach my $file (@files_array) {
  835. log_data("Processing file: " . $file);
  836. # Get file's last modified time
  837. chomp $file;
  838. my $file_timestamp = (stat($file))[9];
  839. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  840. # Determine time difference
  841. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  842. log_data("File time difference: " . $file_time_difference . " day(s)");
  843. # Delete files older than 7 days
  844. if ($file_time_difference > 7) {
  845. log_data("Delete file: " . $file);
  846. log_system("/bin/rm -f \'$file\'");
  847. }
  848. }
  849. }
  850. sub clean_video_proxy_directories {
  851. log_data("Subroutine: clean_video_proxy_directories");
  852. my $video_finished_dir = shift;
  853. # Repository directories array
  854. my @directories = '';
  855. if ($video_finished_dir =~ /news/) { # News directory
  856. @directories = ('cnn', 'money');
  857. } elsif ($video_finished_dir =~ /sports/) { # Sports directory
  858. @directories = ('si', 'nba');
  859. } else { # Unknown directory
  860. log_error("Unknown directory: " . $video_finished_dir);
  861. return;
  862. }
  863. # Process repository directories
  864. log_data("Process repository directories");
  865. foreach my $directory (@directories) {
  866. # Build repository directory path
  867. my $repository_directory = $video_finished_dir . "/$directory/proxyoutput";
  868. log_data("Processing repository directory: " . $repository_directory);
  869. # Get list of files
  870. log_data("Get list of files");
  871. my @files_array = sort(qx `/usr/bin/find $repository_directory -type f`);
  872. # Process files
  873. foreach my $file (@files_array) {
  874. log_data("Processing file: " . $file);
  875. # Get file's last modified time
  876. chomp $file;
  877. my $file_timestamp = (stat($file))[9];
  878. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  879. # Determine time difference
  880. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  881. log_data("File time difference: " . $file_time_difference . " day(s)");
  882. # Delete files older than 7 days
  883. if ($file_time_difference > 7) {
  884. log_data("Delete file: " . $file);
  885. log_system("/bin/rm -f \'$file\'");
  886. }
  887. }
  888. # Get list of day directories
  889. log_data("Get list of day directories");
  890. my @day_directories_array = sort(grep(/\d{4}\/\d{2}\/\d{2}$/, qx `/usr/bin/find $repository_directory -type d`));
  891. # Process day directories
  892. foreach my $day_directory (@day_directories_array) {
  893. log_data("Processing day directory: " . $day_directory);
  894. # Extract day directory date info
  895. my ($day_dir_year, $day_dir_month, $day_dir_day) = ($day_directory =~ /(\d{4})\/(\d{2})\/(\d{2})/);
  896. log_data("Day directory date: " . $day_dir_year . "/" . $day_dir_month . "/" . $day_dir_day);
  897. # Set day directory modified time
  898. my $day_directory_timestamp = Date_SecsSince1970GMT($day_dir_month, $day_dir_day, $day_dir_year, $current_hour, $current_minute, 00);
  899. log_data("Day directory last modified: " . localtime($day_directory_timestamp) . " (" . $day_directory_timestamp . ")");
  900. # Determine time difference
  901. my $day_directory_time_difference = int(($current_time_epoch - $day_directory_timestamp)/(60 * 60 * 24));
  902. log_data("Day directory time difference: " . $day_directory_time_difference . " day(s)");
  903. # Delete day directories older than 7 days
  904. if ($day_directory_time_difference > 7) {
  905. log_data("Delete day directory: " . $day_directory);
  906. log_system("/bin/rm -f -r $day_directory");
  907. }
  908. }
  909. # Get list of month directories
  910. log_data("Get list of month directories");
  911. my @month_directories_array = sort(grep(/\d{4}\/\d{2}$/, qx `/usr/bin/find $repository_directory -type d`));
  912. # Process month directories
  913. foreach my $month_directory (@month_directories_array) {
  914. log_data("Processing month directory: " . $month_directory);
  915. chomp $month_directory;
  916. # Determine file's last modified time
  917. my $month_directory_timestamp = (stat($month_directory))[9];
  918. log_data("Month directory last modified: " . localtime($month_directory_timestamp));
  919. # Determine time difference
  920. my $month_directory_time_difference = int(($current_time_epoch - $month_directory_timestamp)/(60 * 60 * 24));
  921. log_data("Month directory time difference: " . $month_directory_time_difference . " day(s)");
  922. # Delete month directories older than 30 days
  923. if ($month_directory_time_difference > 30) {
  924. log_data("Delete month directory: " . $month_directory);
  925. log_system("/bin/rm -f -r $month_directory");
  926. }
  927. }
  928. # Get list of year directories
  929. log_data("Get list of year directories");
  930. my @year_directories_array = sort(grep(/\d{4}$/, qx `/usr/bin/find $repository_directory -type d`));
  931. # Process year directories
  932. foreach my $year_directory (@year_directories_array) {
  933. log_data("Processing year directory: " . $year_directory);
  934. # Extract year directory date info
  935. my ($year_dir_year) = ($year_directory =~ /(\d{4})/);
  936. log_data("Year directory date: " . $year_dir_year);
  937. # Delete year directories if current year is different and month is 02
  938. if (($year_dir_year ne $current_year)&&($current_month eq '02')) {
  939. log_data("Delete year directory: " . $year_directory);
  940. log_system("/bin/rm -f -r $year_directory");
  941. }
  942. }
  943. }
  944. }
  945. sub clean_directory {
  946. log_data("Subroutine: clean_directory");
  947. my $clean_dir = shift;
  948. log_data("Clean directory: " . $clean_dir);
  949. # Get list of files
  950. log_data("Get list of files");
  951. my @files_array = sort(qx `/usr/bin/find $clean_dir -type f`);
  952. # Process files
  953. foreach my $file (@files_array) {
  954. log_data("Processing file: " . $file);
  955. # Get file's last modified time
  956. chomp $file;
  957. my $file_timestamp = (stat($file))[9];
  958. log_data("File last modified: " . localtime($file_timestamp) . " (" . $file_timestamp . ")");
  959. # Determine time difference
  960. my $file_time_difference = int(($current_time_epoch - $file_timestamp)/(60 * 60 * 24));
  961. log_data("File time difference: " . $file_time_difference . " day(s)");
  962. # Delete files older than 7 days
  963. if ($file_time_difference > 7) {
  964. log_data("Delete file: " . $file);
  965. log_system("/bin/rm -f \'$file\'");
  966. }
  967. }
  968. }
  969. sub clean_sub_directories {
  970. log_data("Subroutine: clean_sub_directories");
  971. my $sub_directory = shift;
  972. log_data("Sub directory: " . $sub_directory);
  973. # Get list of files
  974. log_data("Get list of files");
  975. my @files_array = sort(qx `/usr/bin/find $sub_directory -type f`);
  976. # Process files
  977. foreach my $file (@fil

Large files files are truncated, but you can click here to view the full file