Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Резервное копирование файлов с помощью Perl / 5 сообщений из 5, страница 1 из 1
20.10.2014, 18:32
    #38782178
Kushtym
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Резервное копирование файлов с помощью Perl
Ув. коллеги, прошу подсказку
Есть задача написать скрипт резервного копирования большого количества файлов на удаленный сервер, который будет видеться как локальный диск, соответственно требование к объему трафика и нагрузке при анализе файлов на сервере и в каталоге
Как вы видите это дело?
...
Рейтинг: 0 / 0
20.10.2014, 19:23
    #38782210
Kushtym
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Резервное копирование файлов с помощью Perl
Я нашел вот такой скрипт, но он выпадает с ошибкой undefined subroutine &main::configure
Умеет сравнивать названия файлов и хеши, запускается Perl script.pl C:Dir1 C:Dir2 -s
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
use strict;
use Getopt::Long;
# НАЧАЛО ФРАГМЕНТА A
use vars qw( %Config $gFileCount $KILOBYTE $MEGABYTE 
$GIGABYTE $TERABYTE );
$TERABYTE = 1024 * ( $GIGABYTE = 1024 * ( $MEGABYTE = 1024 * 
( $KILOBYTE = 1024 ) ) );
my %FileList;
my %File;
my %Size;
# КОНЕЦ ФРАГМЕНТА A
$| = 1;
Configure( \%Config );
if( $Config{help} )
{
Syntax();
exit;
}
# НАЧАЛО ФРАГМЕНТА B
foreach my $DirNumber ( 1, 2 )
{
$gFileCount = 0;
CollectFileList( $Config{dir_path}->{$DirNumber}, \%FileList, $DirNumber, "." );
}
print STDERR " ", " " x 80, " ";
PrintReport( \%FileList );
# КОНЕЦ ФРАГМЕНТА B
# НАЧАЛО ФРАГМЕНТА C
sub CollectFileList
{
my( $Path, $FileList, $Context, $RelativePath ) = @_;
my( @DirList );
if( opendir( DIR, $Path ) )
{
foreach my $Object ( readdir( DIR ) )
{
next if( "." eq $Object || ".." eq $Object );
my $ObjectPath = "$Path$Object";
my $RelativeObjectPath = lc "$RelativePath$Object";
if( ++$gFileCount < 200 || $gFileCount % 100 )
{
my $PrettyPath = sprintf( "%6d) %s", $gFileCount, 
AbbreviatePath( $ObjectPath, 70 ) );
print STDERR " " . "$PrettyPath" . " " x ( 79 - length( $PrettyPath ) );
} 
if( -d $ObjectPath )
{
push( @DirList, $Object ) if( $Config{recurse_subdir} );
}
else
{
$FileList->{$RelativeObjectPath}->{$Context} = 
( $Config{dont_collect_file_length} ) ? undef: -s $ObjectPath; 
}
}
closedir( DIR );
}
foreach my $Dir ( @DirList )
{
CollectFileList( "$Path$Dir", $FileList, $Context, "$RelativePath$Dir" );
}
}
# КОНЕЦ ФРАГМЕНТА C
sub PrintReport 
{
# НАЧАЛО ФРАГМЕНТА D
my( $FileList ) = @_;
$gFileCount = 0;
$~ = "Header";
write;
$~ = "Data";
foreach my $Path ( sort( keys( %{$FileList} ) ) )
{
foreach my $DirNumber ( 1, 2 )
{
$File{$DirNumber} = ( exists $FileList->{$Path}->{$DirNumber} )? $Path : "";
$Size{$DirNumber} = $FileList->{$Path}->{$DirNumber} || 0; 
}
# КОНЕЦ ФРАГМЕНТА D
# НАЧАЛО ФРАГМЕНТА E
if( $File{1} ne $File{2} || $Size{1} != $Size{2} )
{
++$gFileCount;
foreach my $DirNumber ( 1, 2 ) 
{
$File{$DirNumber} = sprintf( "%s (%s)", $File{$DirNumber}, 
FormatNumberPretty( $Size{$DirNumber} ) ) 
if( exists $FileList->{$Path}->{$DirNumber} );
}
write;
}
# КОНЕЦ ФРАГМЕНТА E
}
}
...
Рейтинг: 0 / 0
20.10.2014, 19:28
    #38782213
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Резервное копирование файлов с помощью Perl
KushtymЕсть задача написать скрипт резервного копирования большого количества файлов на удаленный серверrsync не предлагать?
...
Рейтинг: 0 / 0
20.10.2014, 19:40
    #38782219
Kushtym
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Резервное копирование файлов с помощью Perl
если бы....IIS винда....
...
Рейтинг: 0 / 0
20.10.2014, 21:33
    #38782273
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Резервное копирование файлов с помощью Perl
KushtymвиндаДык есть вроде https://ru.wikipedia.org/wiki/CwRsync
Сам не работал с ней, ничего не могу сказать. С другой стороны, под винду вроде не так уж мало всяких бекапилок.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Резервное копирование файлов с помощью Perl / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]