jag har knåpat ihop ett perl script som gör detta nu ^_^
Borde vara ganska enkelt att använda, om man kallar scriptet för backup.pl
så kör man det såhär:
Kod: Markera allt
./backup.pl --dir sökväg
eller bara
./backup.pl
edit: det fungerar att ange sökervägar som . .. och ~/ osv...
Om man bara kör backup.pl så kommer filerna att kopieras till ~/backup annars till mappen man angav som sökväg. OBS! mappen som filerna ska kopieras till måste existera scriptet skapar inga ny mappar. Så innan man kan köra ./backup.pl utan sökväg så måste man skapa mappen backup i sin hem katalog.
Scriptet kommer att skapa en log fil i mappen där filerna sparas där allt det gör står, samt kommer det att fråga dig om du vill skriva över filer, om det redan ligger en fil med samma namn i mappen.
För att köra scriptet så skapa en ny fil och döp den till backup.pl (eller vad du tycker att den ska heta) och klistra in koden som finns längst nere i posten i den filen, skriv sedan detta för att göra filen körbar.
sedan är det bara att skriva ./backup.pl för att köra den.
filerna som kommer att kopieras till backup mappen är dessa alltså:
/etc/X11/xorg.conf kommer att sparas som xorg.conf
/boot/grub/menu.lst kommer att sparas som menu.lst
/etc/fstab som fstab...
Alla filer sparas i mappen ~/backup om inget annat anges med --dir sökväg
Om man vill lägga till egna filer som scriptet ska spara så är det bara att lägga till dom i koden, följ bara syntaxen så ska det inte vara nåt problem. MEN se till att lägga till filen i BÃ…DA listorna!
Anledning att filerna ligger i båda listorna är för att man ska kunna spara filerna med vilket namn man vill
Kod: Markera allt
@file_path = ("/etc/X11/xorg.conf",
"/boot/grub/menu.lst",
"/etc/fstab");
@file_names = ("xorg.conf",
"menu.lst",
"fstab");
tex den här kodsnutten skulle spara /etx/X11/xorg.conf som min_xorg_config
och /boot/grub/menu.lst som grub_menu
och /etc/fstab som gammla_fstab och alla dessa filer kommer att hammna i mappen ~/backup om inget annat är angivet med --dir sökväg.
Kod: Markera allt
@file_path = ("/etc/X11/xorg.conf",
"/boot/grub/menu.lst",
"/etc/fstab");
@file_names = ("min_xorg_config",
"grub_menu",
"gammla_fstab");
Kod för scriptet: (det är den här koden du vill klippa ut)
Kod: Markera allt
#!/usr/bin/perl
#använder inte perl -w eftersom datum koden spottar
#ut en massa jobbiga varningar om oanvända variabler...
use File::Copy;
$|++;
#kolla om någon sökväg har angivits.
if($#ARGV == 1 && $ARGV[0] eq "--dir") {
$path = $ARGV[1];
} else {
$path = "~/backup/";
}
# lägger till / på slutet om det inte redan finns det...
if($path !~ /\/$/) {
$path .= "/";
}
# skapa/öppna logfilen
open(LOG,">>$path"."log") or die("Kunde inte skapa logfilen: $!\n");
#skriv in i logfilen när backuppen påbörjades
print LOG "Påbörjar backup *** [";
($sec,$min,$hour,$mday,$mon,$year,$wday,
$yday,$isdst)=localtime(time);
printf LOG "%4d-%02d-%02d %02d:%02d:%02d]\n",
$year+1900,$mon+1,$mday,$hour,$min,$sec;
#
# ÄNDRA HÄR!
#
@file_path = ("/etc/X11/xorg.conf",
"/boot/grub/menu.lst",
"/etc/fstab");
#
#GLÖM INTE ATT LÄGGA TILL FILEN HÄR OCKSÃ…!!
#
@file_names = ("xorg.conf",
"menu.lst",
"fstab");
#börjar kopiera filerna...
for ($count=0; $count <= $#file_names; $count++) {
$char = 'j';
if( -e $file_path[$count]) {
if( -e "$path"."$file_names[$count]") {
print "$path"."$file_names[$count] existerar, Vill du skriva över den? \n";
system "stty", '-icanon', 'eol', "\001";
$char = 'x';
while($char ne 'j' and $char ne 'n') {
print "(j/n)\n";
$char = getc(STDIN);
}
if($char eq 'n') {
print LOG "Ersätter inte fil $path"."$file_names[$count]\n";
print "Ersätter inte fil $path"."$file_names[$count]\n";
} else {
print LOG "Ersätter fil $path"."$file_names[$count]\n";
print "Ersätter fil $path"."$file_names[$count]\n";
}
} if($char eq 'j') {
unless(copy($file_path[$count], $path.$file_names[$count])) {
print LOG "kunde inte kopiera fil [$file_path[$count]] *** [$!]\n";
print "kunde inte kopiera fil [$file_path[$count]] *** [$!]\n";
} else {
print "Filen $file_path[$count] är sparad som $path".
"$file_names[$count]\n";
print LOG "Filen $file_path[$count] är sparad som $path".
"$file_names[$count]\n";
}
}
} else {
print "Filen $file_path[$count] existerar inte\n";
print LOG "Filen $file_path[$count] existerar inte\n";
}
}
print LOG "Backup avslutad.\n";
close(LOG);