#!/usr/bin/perl #=============================================================================== # DESCRIPTION: Примитивный скрипт для попарной синхронизации указанных списком # ТЕКСТОВЫХ файлов. Синхронизация производится на основании времени # последнего изменения файла. # # USAGE: Вручную внести в список %files пары файлов, между которыми должна # выполняться синхронизация и запустить скрипт. # # AUTHOR: dimio # URL: http://www.dimio.org # VERSION: 0.1 # CREATED: 2010-07-08 #=============================================================================== require 5.8.8; use warnings; use strict; use encoding 'utf8', STDOUT => 'utf8'; our $VERSION = '0.1'; # Пары файлов для синхронизации указывать в списке ниже: my %files = ( '/path/to/file_1_1' => '/path/to/file_1_2', '/path/to/file_2_1' => '/path/to/file_2_2', # и так далее до победного ); # Процесс пошел... foreach my $file (keys %files) { if ( (stat($file))[9] > (stat($files{$file}))[9] ) { # если первый файл изменён позже второго - обновить второй open (FROM, '<', $file) or die "Can't open $file\n"; my @tmp =; close (FROM); open (TO, '>', $files{$file}) or die "Can't open $files{$file}\n"; print TO @tmp; close (TO); print '-> '.$files{$file}.' is updated from '.$file,"\n"; } elsif ( (stat($file))[9] < (stat($files{$file}))[9] ) { # если второй позже первого - обновить первый open (FROM, '<', $files{$file}) or die "Can't open $files{$file}\n"; my @tmp = ; close (FROM); open (TO, '>', $file) or die "Can't open $file\n"; print TO @tmp; close (TO); print '<- '.$file.' is updated from ',$files{$file},"\n"; } else { print '= updating not required',"\n"; } # иначе обновление не требуется # впрочем в обычных условиях в windows время изменения всегда различается на миллисекунды } exit 0;