Sida 1 av 1

Konfigurationsfils-kopieringsskript

Postat: 01 dec 2006, 16:36
av Vanilj
Ingen skriptkunnig som kan slänga ihop ett skript som kopierar undan de viktigaste konfigurationsfilerna som tex /etc/fstab och /etc/X11/xorg.conf och /boot/menu.lst ?

Mottagarkatalog kan tex vara /home/din användare/backup eller nåt annat smart.
Min tanke var då att man innan man pillar en massa kan köra skriptet för att enkelt kunna återställa om det skrotar sig.

Eller finns det redan ett sådan skript nånstans?

Konfigurationsfils-kopieringsskript

Postat: 01 dec 2006, 19:18
av zero gravity
#!/bin/bash
#copy important system files
cp /etc/X11/xorg.conf /home/"din användare"/backup/xorg.conf
cp /boot/menu.lst /home/"din användare"/backup/menu.lst



Eller något liknande borde funka(har inte testat). Ersätt bara "din användare" och se till att skapa katalogen backup i din hemkatalog. Gör också scriptet körbart. Högerklicka mm

Konfigurationsfils-kopieringsskript

Postat: 01 dec 2006, 20:19
av Okänd
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.

Kod: Markera allt

chmod +x backup.pl
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);

Konfigurationsfils-kopieringsskript

Postat: 02 dec 2006, 20:38
av Vanilj
Strålande, precis nåt sånt var jag ute efter. Kanoners!