Klicken

Synchronisation von Text-Dateien - einfaches Perl-Skript

Es geschah, dass ich sehr notwendig geworden, um Dateien zwischen einer begrenzten Anzahl von USB-Stick und dem Computer zu synchronisieren. Zur gleichen Händen hin und her zu kopieren, zu erinnern, was die letzte Datei bearbeitet - langweilig, und das "Monster" unnötig, weil der Synchronisation primitive Aufgabe werden, denn eine rekursive Verzeichnis-Synchronisierung und anderen Schnickschnack brauche ich nicht.

Ich beschloss, eine einfache Skizze Perl-Skript (weil Perl ist mein Zuhause und am Arbeitsplatz, im Gegensatz zu zB bash), die auf diese Dateien stattfinden würde und ich synchronisiert sie basierend auf dem Datum der letzten Änderung, in anderen Worten - die neuesten Dateien ersetzt werden veraltet.

Kaum gesagt als getan. Das Skript vergleicht ein Paar von Dateien in den Hash in den Körper des Skripts und ggf. aufgeführt, führt die Synchronisation. Der Text des Skripts wird, kann sinnvoll sein, jemand anderen als mich:

 #! / Usr / bin / perl #========================================= ======== # Beschreibung: Ein primitives paarweise Synchronisierungsskript für die angegebene Liste # Textdateien.  Die Synchronisation erfolgt basierend auf der Zeit # Datei durchgeführt wurde zuletzt geändert.  # # Aufruf: Manuell, um% files Dateipaar, zwischen denen # synchronisiert werden soll und führen Sie das Skript aus.  # # AUTHOR: dimio # URL: http://www.dimio.org # VERSION: 0,1 # erstellt: 2010-07-08 #==================== ============================= erfordern 5.8.8; use warnings; use strict; verwenden encoding 'utf8', STDOUT => ' utf8 '; unsere $ version = '0 .1'; # Paaren, um Dateien wie unten aufgeführt # synchronisieren die Richtigkeit der Namen sowie die Existenz von Dateien kann nicht überprüft werden!  my% files = ('/ cygdrive/e/tst1/doc_accounting.odb' => './tst2/database.odb', '/ cygdrive/e/tst1/table.ods' => './tst2/file_for_test. ods ', # und so weiter bis zum Sieg) # Der Prozess hat begonnen ...  foreach my $ file (keys% files) {if ((stat ($ file)) [9]> (stat ($ files {$ file})) [9]) {# wenn die erste Datei nach dem zweiten geändert wird - auf den zweiten offenen update (AB, '<', $ file) or die "kann nicht geöffnet werden $ file \ n"; my @ tmp = <from>; close (AUS); open (TO, '>', $ files {$ file} ) or die "kann nicht geöffnet werden $ files {$ file} \ n"; print TO @ tmp; close (TO);. print'->'. $ files {$ file} "  . wird aus "$ file aktualisiert," \ n ";} elsif ((stat ($ file)) [9] <(stat ($ files {$ file})) [9]) {# falls eine Sekunde später als die erste - update zum ersten Mal öffnen (AUS, '<', $ files {$ file}) or die "kann nicht geöffnet werden $ files {$ file} \ n"; my @ tmp = <from>; close (AUS); open (TO, '>', $ file) or die "kann nicht geöffnet werden $ file \ n"; print TO @ tmp; close (TO);. print'<-'. $ file '  von aktualisiert ', $ files {$ file}, "\ n";} else {print' = Aktualisierung nicht erforderlich "," \ n ";} # else # update ist unter normalen Bedingungen nicht aber unter Windows ändern erforderlich ist immer anders in Millisekunden} exit 0; 

PS By the way, noch einmal froh, dass ich Linux verwenden - machte ein paar Minuten für die Skript-Tag mit einer Icon-Leiste für Gnome.
Es ist auch die Quelle des Skripts verfügbar ist, wie immer, in den " Soft- ".

Mehr zu ähnlichen Themen:

Kategorie Filed under: Linux , Coding | Tag Tags: , , , | Kommentare No Comments

Hinterlasse eine Antwort