powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Резервное копирование файлов с помощью Perl
5 сообщений из 5, страница 1 из 1
Резервное копирование файлов с помощью Perl
    #38782178
Kushtym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. коллеги, прошу подсказку
Есть задача написать скрипт резервного копирования большого количества файлов на удаленный сервер, который будет видеться как локальный диск, соответственно требование к объему трафика и нагрузке при анализе файлов на сервере и в каталоге
Как вы видите это дело?
...
Рейтинг: 0 / 0
Резервное копирование файлов с помощью Perl
    #38782210
Kushtym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я нашел вот такой скрипт, но он выпадает с ошибкой 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
Резервное копирование файлов с помощью Perl
    #38782213
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KushtymЕсть задача написать скрипт резервного копирования большого количества файлов на удаленный серверrsync не предлагать?
...
Рейтинг: 0 / 0
Резервное копирование файлов с помощью Perl
    #38782219
Kushtym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если бы....IIS винда....
...
Рейтинг: 0 / 0
Резервное копирование файлов с помощью Perl
    #38782273
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KushtymвиндаДык есть вроде https://ru.wikipedia.org/wiki/CwRsync
Сам не работал с ней, ничего не могу сказать. С другой стороны, под винду вроде не так уж мало всяких бекапилок.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Резервное копирование файлов с помощью Perl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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