Schrift
[thread]3696[/thread]

Backup: Verschieben v. Dateien

Leser: 2


<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-06-13 13:32
#34476 #34476
Hallo!

Ich benötige ein Script, das die Dateien aus einer Verzeichnisstruktur (Hauptverzeichnis: Structure/, beliebig viele Unterverzeichnisse) in die gleiche Verzeichnisstruktur, nur unter ein anderes Hauptverzeichnis: Structure.Backup/ verschiebt.

Mein Script verschiebt aber nur die Dateien auf der ersten Ebene in das andere Hauptverzeichnis. Die Verzeichnisstruktur im Backup-Bereich ist bereits angelegt.

Wie geht das?

Vielen Dank!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my $path_files = "Structure/";
my $path_files_history = "Structure.Backup/";

# Verz. zum lesen oeffnen
opendir (BASE, $path_files) || die "Cannot read directory: ";
# Verzeichnis einlesen (checken ob datei)
my @dir = grep { $_ !~ /^..?$/ && -f "$path_files/$_" } readdir(BASE);
closedir (BASE);
# Alle eingelesenen Dateien durchgehen
foreach my $file (@dir) {
# Und kopieren
copy("$path_files/$file", "$path_files_backup/$file");
}
\n\n

<!--EDIT|renee|1150191408-->
renee
 2006-06-13 13:36
#34477 #34477
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest Dir vielleicht mal CPAN:File::NCopy anschauen!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;
use File::NCopy;

my $path_files = 'Structure/';
my $path_files_history = 'Structure.Backup/';

my $file = File::NCopy->new(recursive => 1);
$file->copy($path_files,$path_files_history);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
browsie
 2006-06-21 10:00
#34478 #34478
User since
2006-06-20
1 Artikel
BenutzerIn
[default_avatar]
Oben die Lösung hat funktioniert. Vielen Dank! Jetzt wollte ich eine andere Variante austesten, nämlich diese. Aber die bringt folgende Fehlermeldung:
"Structure/ and Structure.Backup/ are identical."

Obwohl in Structure.Backup/ noch gar kein Inhalt vorhanden ist.

Was läuft falsch?

Vielen Dank!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use File::Basename;
use File::Copy::Recursive qw(dircopy);


my $orig = "Structure/";
my $new = "Structure.Backup/";

dircopy($orig,$new);
\n\n

<!--EDIT|esskar|1150870490-->
esskar
 2006-06-21 10:15
#34479 #34479
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ist "Structure/" vielleicht auch leer?
existiert es?
richtig geschrieben?
Dubu
 2006-06-21 11:38
#34480 #34480
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Machst du das unter Windows?

File::Copy::Recursive prüft, ob Device und Inode-Nummer von Quelle und Ziel identisch sind. Unter Windows ist die Inode-Nummer, die stat() liefert, anscheinend immer 0, daher werden zwei Verzeichnisse auf dem gleichen Device immer als identisch angesehen. Das hieße, dass File::Copy::Recursive so nicht unter Windows funktionieren kann.
renee
 2006-06-21 16:05
#34481 #34481
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann mach mal:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use strict;
use File::Basename;
use File::Copy::Recursive qw(dircopy);


my $orig = "Structure/";
my $new = "Structure.Backup/";

$File::Copy::Recursive::PFSCheck = 0;
dircopy($orig,$new);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2006-07-04 11:48
#34482 #34482
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die gestern auf CPAN gestellte Version von CPAN:File::Copy::Recursive sollte diesen Fehler beheben...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2006-06-13 13:32.