Distribution: Andere
Version: 5.0
Architektur: 32-Bit PC
Desktop: GNOME
Andere Distribution: Debian
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 |
if (-e "backupconf"){
my @Dateien;
open(CONFIG, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIG>){
push(@Dateien,$_); }
close(CONFIG);
$data = @Dateien["0"];
if ($data){
copy($data, "$backup_medium/backup/");}}
system("tar --remove-files -C $backup_medium -cvf $backup_medium/backup_$date.tar backup");
|
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
apensiv@apensiv:~/Perl/Projekte$ ./backup.pl Unsuccessful stat on filename containing newline at /usr/share/perl/5.8/File/Copy.pm line 85. Unsuccessful stat on filename containing newline at /usr/share/perl/5.8/File/Copy.pm line 95. Unsuccessful open on filename containing newline at /usr/share/perl/5.8/File/Copy.pm line 122. backup/ backup/bookmarks.html backup/fstab backup/xorg.conf backup/ubuntu-files backup/sources.list backup/smb.conf Backup erfolgreich erstellt apensiv@apensiv:~/Perl/Projekte$ |
|
|
Quellcode |
1 |
ls -l /dev/disk/by-uuid |
|
|
PHP-Quelltext |
1 2 3 4 |
while(<CONFIG>){
chomp ($_);
push(@Dateien,$_);
}
|
Distribution: Andere
Version: 5.0
Architektur: 32-Bit PC
Desktop: GNOME
Andere Distribution: Debian
|
|
Quellcode |
1 |
./backup.pl -add /home/Desktop/user/dokument.odt
|
|
|
PHP-Quelltext |
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 |
#!/usr/bin/perl
# backup.pl -- by Apensiv and zero77
use POSIX qw/strftime/;
use File::Copy;
$command_one = $ARGV['0'];
$command_two = $ARGV['1'];
if ($command_one eq "-add")
{
open(CONF,">>backup.conf");
print CONF "$command_two\n";
close(DATEI);
print "$command_two wurde der backup.conf hinzugefuegt, bitte machen sie ein Backup\n";
}
else{
my @log;
$home = $ENV{'HOME'} . "/.mozilla/firefox/7x14efmv.default/bookmarks.html";
$backup_medium = '/home/apensiv/Desktop';
$date = strftime "%d.%m.%Y", localtime;
if (-e "$backup_medium")
{
mkdir ("$backup_medium/backup");
system("dpkg --get-selections | grep -v deinstall > $backup_medium/backup/ubuntu-files");
copy('/etc/apt/sources.list', "$backup_medium/backup/");
copy('/etc/X11/xorg.conf', "$backup_medium/backup/");
copy('/etc/fstab', "$backup_medium/backup/");
copy('/etc/samba/smb.conf', "$backup_medium/backup/");
copy($home, "$backup_medium/backup/");
if (-e "backup.conf"){
my @Dateien;
open(CONFIG, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIG>){
chomp($_);
push(@Dateien,$_);}
close(CONFIG);
$var = $Dateien[0];
copy ("$var", "$backup_medium/backup/");
}
system("tar --remove-files -C $backup_medium -cvf $backup_medium/backup_$date.tar backup");
if (-e "$backup_medium/backup_$date.tar"){
print "Backup erfolgreich erstellt\n";}
else{
print "ERROR: Es konnte kein Backup erstellt werden\n";}}
else{
print "Backupmedium konnte nicht gefunden werden\n";}}
|

|
|
Quellcode |
1 |
ls -l /dev/disk/by-uuid |

Zitat
Als nächste Aufgabe, werde ich einen Befehl einbauen, mit dem man das Backup-Verzeichnis ändern kann.
|
|
Quellcode |
1 |
system("cp -aru ...");
|
|
|
Quellcode |
1 |
cp -aru |
|
|
PHP-Quelltext |
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
#!/usr/bin/perl -w
# backup.pl -- inspired by Apensiv
# -- by zero77
use strict;
# eingebundene module
use POSIX qw/strftime/; # uhrzeit
#use File::Copy; # betriebssystemunabhaengige file-copy-funktion
my $home = $ENV{'HOME'};
my $backup_medium='/files/backup';
my $verzeichnis="/dev/disk/by-uuid";
my $target;
my $date=strftime "%d_%m_%Y", localtime;
my $progress=0;
my @laufwerke;
my $z_laufwerke;
my $i;
my $auswahl;
my $method;
my $eingabe;
my $update;
# auslesen der vorhandenen laufwerke
opendir(DIR, $verzeichnis) || die "$verzeichnis: $!";
@laufwerke=readdir(DIR);
$z_laufwerke=@laufwerke-2;
closedir(DIR);
chdir $verzeichnis;
# ausgabe der uuids mit passenden /dev/xxx
$i=1;
foreach (@laufwerke) {
if (-l $_) {
my $link=readlink($_);
$link=~s/../..//g;
print "\n" . $i . ") " . $link . " (UUID " . $_ . ") ";
$i++;
}
}
print "\n";
print "Medium auswählen: (1-" . $z_laufwerke . "): ";
$auswahl=<STDIN>;
chomp $auswahl;
if ($auswahl eq "") {
$target="41f9f791-bae0-4ae9-9531-922714a9ec8e";
}
else {
$target=$laufwerke[$auswahl+1];
}
# ziellaufwerk ueberpruefungen
if (-e "/dev/disk/by-uuid/$target") { # platte angeschlossen?
if (!-e "$backup_medium") { # platte gemountet?
my $mount=system("mount /files");
if ($mount==0) { # wenn nicht, mounten
print "Externe USB - Platte gemountet\n";
}
}
#backup-art festlegen
$target=readlink($target);
$target=~s/../../ /g;
print "Ziellaufwerk:" . $target . "\n";
print "\n";
print "1) Update des Backup - erstellt komplettes Backup oder bringt Backup up2date\n";
print "2) Tagesstand sichern - erstellt komplettes Backup mit Zeitstempel\n";
print "Bitte wählen: ";
$method=<STDIN>;
chomp $method;
while ($method ne "1" and $method ne "2") {
print "Bitte wählen (1 oder 2): ";
$method=<STDIN>;
chomp $method;
}
if ($method eq "1") {
$progress=1;
}
else {
$backup_medium=$backup_medium . "/" . $date;
print "ttt: $backup_medium\n";
if (!-e "$backup_medium") { # existiert aktuelles verzeichnis
system("mkdir $backup_medium");
$progress=1;
}
else {
print ("\nVerzeichnis mit aktuellem Datum $date vorhanden\n");
print ("Backup fortsetzen? (ja/nein): ");
$eingabe=<STDIN>;
chomp $eingabe;
while ($eingabe ne "ja" and $eingabe ne "nein") {
print "ja oder nein: ";
$eingabe=<STDIN>;
chomp $eingabe;
}
if ($eingabe eq "ja") { # update oder ueberschreiben
print ("Update des Backups oder Verzeichnis neu? (upd/neu): ");
$update=<STDIN>;
chomp $update;
while ($update ne "upd" and $update ne "neu") {
print "upd oder neu: ";
$update=<STDIN>;
chomp $update;
}
if ($update eq "neu") {
print "Entferne altes Backup...\n";
system ("rm -rfv $backup_medium");
system("mkdir $backup_medium");
}
$progress=1;
}
}
}
# backup
if ($progress==1) {
if (!-e "$backup_medium/configfiles") {
system("mkdir $backup_medium/configfiles");
}
print "Sichere Daten:\n";
print "sichere Liste der installierten Programme... \n";
system("dpkg --get-selections | grep -v deinstall > $backup_medium/configfiles/ubuntu_files");
print "sichere /etc/apt/sources.list... \n";
system("cp -aru /etc/apt/sources.list $backup_medium/configfiles/");
print "sichere /etc/fstab... \n";
system("cp -aru /etc/fstab $backup_medium/configfiles/");
print "sichere /etc/X11/xorg.conf... \n";
system("cp -aru /etc/X11/xorg.conf $backup_medium/configfiles/");
print "sichere /etc/samba/smb.conf... \n";
system("cp -aru /etc/samba/smb.conf $backup_medium/configfiles/");
print "sichere /home...";
system("cp -aru $home $backup_medium/");
print "sichere projekte... \n";
system("cp -aru /storage/projekte $backup_medium/");
print "sichere bilder... \n";
system("cp -aru /storage/bilder $backup_medium/");
print " sichere mp3... \n";
system("cp -aru /storage/mp3 $backup_medium/");
print " sichere pimp... \n";
system("cp -aru /storage/pimp $backup_medium/");
print " sichere tellico... \n";
system("cp -aru /storage/tellico $backup_medium/");
print " sichere scripts... \n";
system("cp -aru /storage/scripts $backup_medium/");
print " sichere win_xp... \n";
system("cp -aru /storage/win_xp $backup_medium/");
print " sichere lampp-Dateien... \n";
system("cp -aru /opt/lampp/htdocs $backup_medium/");
print "\n Backup beendet\n"
}
else {
print "Beende Backup-Vorgang\n";
}
}
else { # platte nicht angeschlossen
print "Backup-Medium nicht angeschlossen\n";
print "Beende Backup-Vorgang, bitte externe USB-Platte anschließen\n";
}
#dpkg --set-selections < ubuntu-files
#sudo dselect
#Nach Start von dselect "I" druecken, nach Installation aller Pakete mit "Q" oder "B" (je nach Sprachversion) beenden.
|
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »zero77« (9. November 2007, 22:45)
Distribution: Andere
Version: 5.0
Architektur: 32-Bit PC
Desktop: GNOME
Andere Distribution: Debian
|
|
PHP-Quelltext |
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 |
#!/usr/bin/perl
# backup.pl -- by Apensiv and zero77
use POSIX qw/strftime/;
use File::Copy;
$command_one = $ARGV['0'];
$command_two = $ARGV['1'];
if ($command_one eq "-add")
{
open(CONF,">>backup.conf");
print CONF "$command_two\n";
close(DATEI);
print "$command_two wurde der backup.conf hinzugefuegt, bitte machen sie ein Backup\n";
}
else{
my @log;
$home = $ENV{'HOME'} . "/.mozilla/firefox/7x14efmv.default/bookmarks.html";
my @config;
open(CONFIGFILE, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIGFILE>){
chomp($_);
push(@config,$_);}
close(CONFIGFILE);
$backup_medium = $config["0"];
$date = strftime "%d.%m.%Y", localtime;
if (-e "$backup_medium")
{
mkdir ("$backup_medium/backup");
system("dpkg --get-selections | grep -v deinstall > $backup_medium/backup/ubuntu-files");
copy('/etc/apt/sources.list', "$backup_medium/backup/");
copy('/etc/X11/xorg.conf', "$backup_medium/backup/");
copy('/etc/fstab', "$backup_medium/backup/");
copy('/etc/samba/smb.conf', "$backup_medium/backup/");
copy($home, "$backup_medium/backup/");
if (-e "backup.conf"){
my @Dateien;
open(CONFIG, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIG>){
chomp($_);
push(@Dateien,$_);}
close(CONFIG);
$anzahl = @Dateien;
my $count = "2";
while ($count <= $anzahl)
{
$var = $Dateien[$count];
copy ("$var", "$backup_medium/backup/");
$count++;
}
}
system("tar --remove-files -C $backup_medium -cvf $backup_medium/backup_$date.tar backup");
if (-e "$backup_medium/backup_$date.tar"){
print "Backup erfolgreich erstellt\n";}
else{
print "ERROR: Es konnte kein Backup erstellt werden\n";}}
else{
print "Backupmedium konnte nicht gefunden werden\n";}}
|
|
|
PHP-Quelltext |
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 |
#!/usr/bin/perl
# backup.pl -- by Apensiv and zero77
use POSIX qw/strftime/;
use File::Copy;
$command_one = $ARGV['0'];
$command_two = $ARGV['1'];
if ($command_one eq "-add")
{
open(CONF,">>backup.conf");
print CONF "$command_two\n";
close(DATEI);
print "$command_two wurde der backup.conf hinzugefuegt, bitte machen sie ein Backup\n";
}
else{
my @log;
$home = $ENV{'HOME'};
my @config;
open(CONFIGFILE, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIGFILE>){
chomp($_);
push(@config,$_);}
close(CONFIGFILE);
$backup_medium = $config["0"];
$date = strftime "%d.%m.%Y", localtime;
if (-e "$backup_medium"){
mkdir ("$backup_medium/backup");
system("dpkg --get-selections | grep -v deinstall > $backup_medium/backup/ubuntu-files");
if (-e "backup.conf"){
my @Dateien;
open(CONFIG, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIG>){
chomp($_);
push(@Dateien,$_);}
close(CONFIG);
$anzahl = @Dateien;
my $count = "2";
while ($count <= $anzahl){
$var = $Dateien[$count];
copy ("$var", "$backup_medium/backup/");
$count++;}}
system("tar --remove-files -C $backup_medium -cvf $backup_medium/backup_$date.tar backup");
if (-e "$backup_medium/backup_$date.tar"){
print "Backup erfolgreich erstellt\n";}
else{
print "ERROR: Es konnte kein Backup erstellt werden\n";}}
else{
print "Backupmedium konnte nicht gefunden werden\n";}}
|
Zitat
/media/disk
/etc/apt/sources.list
/etc/X11/xorg.conf
/etc/fstab
/etc/samba/smb.conf
|
|
Quellcode |
1 |
./backup.pl -medium /media/usb-stick
|
|
|
PHP-Quelltext |
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 |
#!/usr/bin/perl
# backup.pl -- by Apensiv and zero77
use POSIX qw/strftime/;
use File::Copy;
$command_one = $ARGV['0'];
$command_two = $ARGV['1'];
if ($command_one eq "-add"){
open(CONF,">>backup.conf");
print CONF "$command_two\n";
close(CONF);
print "$command_two wurde der backup.conf hinzugefuegt, bitte machen sie ein Backup\n";}
elsif ($command_one eq "-medium"){
my @Dateien;
open(MED_CONFIG_R, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<MED_CONFIG_R>){
chomp($_);
push(@Dateien,$_);}
close(MED_CONFIG_R);
@Dateien["0"] = $command_two;
open(MED_CONF_W,">backup.conf");
foreach $name (@Dateien) {
print MED_CONF_W "$name\n";}
close(MED_CONF_W);
print "Das neue Backupverzeichnis lautet: " . @Dateien["0"] . "\n"; }
else{
my @log;
$home = $ENV{'HOME'};
my @config;
open(CONFIGFILE, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIGFILE>){
chomp($_);
push(@config,$_);}
close(CONFIGFILE);
$backup_medium = $config["0"];
$date = strftime "%d.%m.%Y", localtime;
if (-e "$backup_medium"){
mkdir ("$backup_medium/backup");
system("dpkg --get-selections | grep -v deinstall > $backup_medium/backup/ubuntu-files");
if (-e "backup.conf"){
my @Dateien;
open(CONFIG, "<backup.conf") || die "backup.conf: Oeffnen fehlgeschlagen\n";
while(<CONFIG>){
chomp($_);
push(@Dateien,$_);}
close(CONFIG);
$anzahl = @Dateien;
my $count = "2";
while ($count <= $anzahl){
$var = $Dateien[$count];
copy ("$var", "$backup_medium/backup/");
$count++;}}
system("tar --remove-files -C $backup_medium -cvf $backup_medium/backup_$date.tar backup");
if (-e "$backup_medium/backup_$date.tar"){
print "Backup erfolgreich erstellt\n";}
else{
print "ERROR: Es konnte kein Backup erstellt werden\n";}}
else{
print "Backupmedium konnte nicht gefunden werden\n";}}
|
|
|
PHP-Quelltext |
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
#!/usr/bin/perl -w
# by zero77 & apensiv
# script zum einfachen sichern von dateien und verzeichnissen
# auf ein beliebiges laufwerk, in ein beliebiges verzeichnis
#
# zu sichernde files werden in der subroutine Kopiere_dateien
# festgelegt und können dort geändert werden:
# @config_files >> konfigurationsdateien
# @backup_files >> beliebige dateien und verzeichnisse
# module
use strict;
use Getopt::Std;
use POSIX qw/strftime/;
use File::Find;
use File::Copy;
use File::Path;
# variablen
our $opt_h;
our $opt_t;
our $opt_f;
my $date=strftime "%d_%m_%Y", localtime;
my $home = $ENV{'HOME'};
my $input;
my $select;
my $path;
# check der parameter
getopts("t:h,f");
if ($opt_h) {
Hilfe();
}
else {
if ($opt_t){
my $test=$opt_t;
if (chop ($test) ne "/") {
$opt_t=$opt_t."/";
}
Pruefe_ziel();
if ($opt_f) {
print "Komplettes Backup\n";
}
else {
print "Erstellen oder Aktualisieren des Backups\n";
}
Waehle_ordner();
print "\n Backup-Ordner nach Sichern packen (ja/nein; default=\'nein\'): ";
my $tar=<STDIN>;
chomp $tar;
if ($tar eq "") {
$tar="nein";
}
while ($tar ne "ja" and $tar ne "nein") {
print " ja oder nein: ";
$tar=<STDIN>;
chomp $tar;
}
my $time_start=time();
Kopiere_dateien();
if ($tar eq "ja") {
Packe_ordner();
}
print " Sicherung erstellt\n";
my $time_end=time();
my $time=$time_end-$time_start;
my $minutes=int($time/60);
my $seconds=$time%60;
if ($minutes <= "0") {
print " Dauer des Sicherungsvorgangs: $seconds s\n";
}
else {
$minutes=int ($time/60);
print " Dauer des Sicherungsvorgangs: $minutes min, $seconds s\n";
}
}
else {
print " Bitte Zielverzeichnis angeben!\n";
Hilfe();
}
}
# subroutinen
sub Hilfe {
print " USAGE: backup.pl -t [/pfad/zum/ziel] [OPTION]\n";
print " -t [/pfad/zum/ziel] Zielverzeichnis angeben\n";
print " ...dort wird der das Sicherungsverzeichnis erstellt bzw. genutzt\n";
print " -f komplettes Backup, eventuell vorhandenes Backup wird überschrieben\n";
print " -h gibt diese Hilfe aus\n";
}
sub Pruefe_ziel {
if (!-e $opt_t) {
die " Option \'-t $opt_t\' überprüfen >> $opt_t existiert nicht\n";
}
}
sub Waehle_ordner {
print " 1) Backupnamen wählen\n";
print " 2) Datum \'$date\' setzen\n";
print " Bitte wählen (default=\'1\'): ";
$select=<STDIN>;
chomp $select;
if ($select eq "") {
$select="1";
}
while ($select ne "1" and $select ne "2") {
print " Bitte wählen (1 oder 2): ";
$select=<STDIN>;
chomp $select;
}
if ($select eq "1") {
print "\n Vorhandene Dateien: ";
my $dir=$opt_t;
Lese_verzeichnis($dir);
print " Backupnamen eingeben (default=\'backup\'): ";
$input=<STDIN>;
chomp $input;
if ($input eq "") {
$input="backup";
}
}
else {
$input=$date;
}
$path=$opt_t.$input;
if (-e $path) {
print " * Verzeichnis $path existiert\n";
if ($opt_f) {
print " * erstelle \'$input\' neu\n";
}
else {
print " * aktualisiere \'$input\'\n";
}
}
else {
print " * \'$input\' existiert nicht in $opt_t\n";
print " * lege \'$input\' an\n";
mkpath ($path);
}
}
sub Lese_verzeichnis {
my $dir=$_[0];
my @subdir;
my $count_subs;
opendir(DIR, $dir) || die "$dir: $!";
@subdir=readdir(DIR);
$count_subs=@subdir;
if ($count_subs == 2) {
print $count_subs-2 . "! ";
print " Da keine Unterverzeichnisse existieren, kann es sein, dass das gewünschte Laufwerk nicht gemountet ist. \n";
print " Mounten versuchen (ja/nein)? ";
my $mount=<STDIN>;
chomp $mount;
while ($mount ne "ja" and $mount ne "nein") {
print " ja oder nein: ";
$mount=<STDIN>;
chomp $mount;
}
if ($mount eq "ja") {
Mounte_verzeichnis();
}
}
foreach (@subdir) {
my $test=index($_,".");
if ($test != 0 and $_ ne "lost+found") {
print "$_ ";
}
}
print "\n";
closedir(DIR);
chdir $opt_t;
}
sub Mounte_verzeichnis {
my $mount=system("mount $opt_t");
print " * mounte $opt_t ";
if ($mount==0) { # wenn nicht, mounten
print " ok\n";
}
else {
die " mounten fehlgeschlagen";
}
}
sub Kopiere_dateien {
if ($opt_f) {
rmtree ("$path/*") || die " Problem beim Löschen";
print " * erstelle vorhandenes Backup neu\n";
}
if (!-e "$path/configfiles") {
mkdir ("$path/configfiles");
}
my @config_files=("/etc/apt/sources.list",
"/etc/fstab",
"/etc/X11/xorg.conf",
"/etc/samba/smb.conf");
my @backup_files=("$home",
"/opt/lampp/htdocs/",
"/storage/projekte/",
"/storage/pimp/",
"/storage/win_xp",
"/storage/bilder/",
"/storage/mp3/");
print " Sichere Daten:\n";
print " * sichere Liste der installierten Programme... ";
system("dpkg --get-selections | grep -v deinstall > $path/configfiles/ubuntu_files");
print ("ok\n");
print " * sichere Config-Files:\n";
foreach (@config_files) {
print " $_... ";
copy ($_,"$path/configfiles");
print "ok\n";
}
foreach (@backup_files) {
print " * sichere $_... ";
system("cp -aruf $_ $path/");
print "ok\n";
}
print "\n Kopiervorgang beendet\n";
}
sub Packe_ordner {
print "Packe $path\n";
system("tar --remove-files -C $path -cvf $path"."_"."$date.tar $path");
print " * $path gepackt\n";
if (-e "$path" . "_" . "$date.tar"){
print " Backup erfolgreich erstellt\n";}
else{
print " Fehler beim Packen\n";
}
}
#installieren der ubuntu_files
#
# * dpkg --set-selections < ubuntu-files
# * sudo dselect
# Nach Start von dselect "I" druecken, nach Installation aller Pakete mit "Q" oder "B" (je nach Sprachversion) beenden.
|
Zitat
![]()
Quellcode
1./backup.pl -medium /media/usb-stick
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »zero77« (12. November 2007, 22:54)
Distribution: Andere
Version: 5.0
Architektur: 32-Bit PC
Desktop: GNOME
Andere Distribution: Debian

Zitat
bekommst du da keinen Ärger, wenn der Stick mal nicht gemountet ist bzw. zwei USB-Medien angeschlossen sind?...
Zitat
Nach dem ich beim näheren Betrachten, mein Script doch etwas grottig fand...
Zitat
Zur Zeit übernimmt er den Pfad einfach nicht,wenn es ihn nicht gibt.

Zitat
Wo tritt bei dir dieser riesige Freiraum auf?
Zitat
Zitat
Nach dem ich beim näheren Betrachten, mein Script doch etwas grottig fand...
Passiert mir auch ständig

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »zero77« (12. November 2007, 19:57)

|
|
PHP-Quelltext |
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
#!/usr/bin/perl -w
# by zero77 & apensiv
# script zum einfachen sichern von dateien und verzeichnissen
# auf ein beliebiges laufwerk, in ein beliebiges verzeichnis
#
# zu sichernde files werden in der subroutine Kopiere_dateien
# festgelegt und können dort geändert werden:
# @config_files >> konfigurationsdateien
# @backup_files >> beliebige dateien und verzeichnisse
# module
use strict;
use Getopt::Std;
use POSIX qw/strftime/;
use File::Find;
use File::Copy;
use File::Path;
# variablen
our $opt_h;
our $opt_t;
our $opt_f;
my $date=strftime "%d_%m_%Y", localtime;
my $home = $ENV{'HOME'};
my $input;
my $select;
my $path;
# check ob root
if ($<!=0) {
print "need to be root\n";
exit;
}
# check der parameter
getopts("t:h,f");
if ($opt_h) {
Hilfe();
}
else {
if ($opt_t){
my $test=$opt_t;
if (chop ($test) ne "/") {
$opt_t=$opt_t."/";
}
Pruefe_ziel();
if ($opt_f) {
print "Komplettes Backup\n";
}
else {
print "Erstellen oder Aktualisieren des Backups\n";
}
Waehle_ordner();
print "\n Backup-Ordner nach Sichern packen (ja/nein; default=\'nein\'): ";
my $tar=<STDIN>;
chomp $tar;
if ($tar eq "") {
$tar="nein";
}
while ($tar ne "ja" and $tar ne "nein") {
print " ja oder nein: ";
$tar=<STDIN>;
chomp $tar;
}
my $time_start=time();
Kopiere_dateien();
if ($tar eq "ja") {
Packe_ordner();
}
print " Sicherung erstellt\n";
my $time_end=time();
my $time=$time_end-$time_start;
my $minutes=int($time/60);
my $seconds=$time%60;
if ($minutes <= "0") {
print " Dauer des Sicherungsvorgangs: $seconds s\n";
}
else {
$minutes=int ($time/60);
print " Dauer des Sicherungsvorgangs: $minutes min, $seconds s\n";
}
}
else {
print " Bitte Zielverzeichnis angeben!\n";
Hilfe();
}
}
# subroutinen
sub Hilfe {
print " USAGE: backup.pl -t [/pfad/zum/ziel] [OPTION]\n";
print " -t [/pfad/zum/ziel] Zielverzeichnis angeben\n";
print " ...dort wird der das Sicherungsverzeichnis erstellt bzw. genutzt\n";
print " -f komplettes Backup, eventuell vorhandenes Backup wird überschrieben\n";
print " -h gibt diese Hilfe aus\n";
}
sub Pruefe_ziel {
if (!-e $opt_t) {
die " Option \'-t $opt_t\' überprüfen >> $opt_t existiert nicht\n";
}
}
sub Waehle_ordner {
print " 1) Backupnamen wählen\n";
print " 2) Datum \'$date\' setzen\n";
print " Bitte wählen (default=\'1\'): ";
$select=<STDIN>;
chomp $select;
if ($select eq "") {
$select="1";
}
while ($select ne "1" and $select ne "2") {
print " Bitte wählen (1 oder 2): ";
$select=<STDIN>;
chomp $select;
}
if ($select eq "1") {
print "\n Vorhandene Dateien: ";
my $dir=$opt_t;
Lese_verzeichnis($dir);
print " Backupnamen eingeben (default=\'backup\'): ";
$input=<STDIN>;
chomp $input;
if ($input eq "") {
$input="backup";
}
}
else {
$input=$date;
}
$path=$opt_t.$input;
if (-e $path) {
print " * Verzeichnis $path existiert\n";
if ($opt_f) {
print " * erstelle \'$input\' neu\n";
rmtree ("$path") || die " Problem beim Löschen";
}
else {
print " * aktualisiere \'$input\'\n";
}
}
else {
print " * \'$input\' existiert nicht in $opt_t\n";
print " * lege \'$input\' an\n";
mkpath ($path);
}
}
sub Lese_verzeichnis {
my $dir=$_[0];
my @subdir;
my $count_subs;
opendir(DIR, $dir) || die "$dir: $!";
@subdir=readdir(DIR);
$count_subs=@subdir;
if ($count_subs == 2) {
print $count_subs-2 . "! ";
print " Da keine Unterverzeichnisse existieren, kann es sein, dass das gewünschte Laufwerk nicht gemountet ist. \n";
print " Mounten versuchen (ja/nein)? ";
my $mount=<STDIN>;
chomp $mount;
while ($mount ne "ja" and $mount ne "nein") {
print " ja oder nein: ";
$mount=<STDIN>;
chomp $mount;
}
if ($mount eq "ja") {
Mounte_verzeichnis();
}
}
foreach (@subdir) {
my $test=index($_,".");
if ($test != 0 and $_ ne "lost+found") {
print "$_ ";
}
}
print "\n";
closedir(DIR);
chdir $opt_t;
}
sub Mounte_verzeichnis {
my $mount=system("mount $opt_t");
print " * mounte $opt_t ";
if ($mount==0) { # wenn nicht, mounten
print " ok\n";
}
else {
die " mounten fehlgeschlagen";
}
}
sub Kopiere_dateien {
if (!-e "$path/configfiles") {
mkdir ("$path/configfiles");
}
my @config_files=(
"/etc/apt/sources.list",
"/etc/fstab",
"/etc/X11/xorg.conf",
"/etc/samba/smb.conf",
"/etc/apache2/apache2.conf",
"/etc/apache2/sites-available/default"
);
my @backup_files=(
#"$home",
"/opt/firefox",
"/opt/eclipse"
);
print " Sichere Daten:\n";
print " * sichere Liste der installierten Programme... ";
system("dpkg --get-selections | grep -v deinstall > $path/configfiles/ubuntu_files");
print ("ok\n");
print " * sichere Config-Files:\n";
foreach (@config_files) {
print " $_... ";
system("rsync -av $_ $path/configfiles");
print "ok\n";
}
foreach (@backup_files) {
print " * sichere $_... ";
system("rsync -av --delete $_ $path");
print "ok\n";
}
print "\n Kopiervorgang beendet\n";
}
sub Packe_ordner {
print "Packe $path\n";
system("tar --remove-files -C $path -cvf $path"."_"."$date.tar $path");
print " * $path gepackt\n";
if (-e "$path" . "_" . "$date.tar"){
print " Backup erfolgreich erstellt\n";}
else{
print " Fehler beim Packen\n";
}
}
#installieren der ubuntu_files
#
# * dpkg --set-selections < ubuntu-files
# * sudo dselect
# Nach Start von dselect "I" druecken, nach Installation aller Pakete mit "Q" oder "B" (je nach Sprachversion) beenden.
|
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »zero77« (24. Dezember 2007, 11:52)
Distribution: Andere
Version: 5.0
Architektur: 32-Bit PC
Desktop: GNOME
Andere Distribution: Debian
)
Zitat
Ausser die gebrauchte Zeit zum Backupen
|
|
PHP-Quelltext |
1 |
time()
|
Zitat
Lust auf ein neues Programm
|
| Computer mit vorinstalliertem Linux: Ubuntu, Kubuntu, Xubuntu, Mythbuntu u.a. |
Impressum
Forensoftware: Burning Board®, entwickelt von WoltLab® GmbH
Lastminute - Branchenverzeichnis - Branchenbuch Portugal - Zahnimplantate
Skiurlaub - Rezepte - Ausschankwagen - Kochrezepte
T-Shirts - Winterurlaub - Kontaktanzeigen - Computer Forum - Linux Computer