gpg-backup
This commit is contained in:
parent
78a9acad47
commit
b041b71935
5 changed files with 288 additions and 0 deletions
6
backe123/backe.sh
Executable file
6
backe123/backe.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
cd /home/backe123
|
||||
rm *.cpt *.gpg
|
||||
./backup.pl 2>&1 >> logback
|
||||
|
||||
|
115
backe123/backup.pl
Executable file
115
backe123/backup.pl
Executable file
|
@ -0,0 +1,115 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
#---Configuration------
|
||||
####@backe = ("/etc", "/home", "/lib", "/boot", "/var");
|
||||
|
||||
# wo sollen die archive hin?
|
||||
$backupdir = "/home/backe123/ablage/";
|
||||
# wo stehen die zu sichernden verzeichnisse (dateien, mit excludes)
|
||||
$excludes = "/home/backe123/quellsaft/";
|
||||
|
||||
# mit welchem key soll das archiv verschluesselt werden?
|
||||
$gpgkey_id = "A8969D03" ;
|
||||
|
||||
# an wen geht die mail?
|
||||
$mailuser = "age";
|
||||
|
||||
|
||||
#---Runtime------------
|
||||
# welche verzeichnisse sollen gesichert werden ...
|
||||
# dazu werden die dateien von excludes heran gezogen
|
||||
opendir DIR, $excludes or die "Can't open dir to search for backup paths. $excludes\n";
|
||||
# hier steht jetzt drin was gesichert werden soll
|
||||
@backe = grep { $_ ne '.' && $_ ne '..' } readdir DIR;
|
||||
closedir DIR;
|
||||
|
||||
# datum als eindeutigen namen fuer keyfile nutzen
|
||||
$date = "0".join("-",getDate());
|
||||
$keyfilename = "key".$date;
|
||||
|
||||
chdir($backupdir) || die ("Can't change to $backupdir! \n");
|
||||
|
||||
#---Mainloop-----------
|
||||
foreach $dir (@backe){
|
||||
# vorarbeit
|
||||
print("\n----> generating random keys ..");
|
||||
&generateRandomBits;
|
||||
&generateSessionKey;
|
||||
|
||||
# die dateinamen koennten noch beser benannt werden
|
||||
$filename = $dir."_backup";
|
||||
|
||||
&tar_it;
|
||||
&crypt_it;
|
||||
&mail_it;
|
||||
|
||||
print("well done!\n\n");
|
||||
}
|
||||
|
||||
|
||||
#---Subraum-------------
|
||||
sub greeting{
|
||||
print("[$date] Now I will make a backup of:\n");
|
||||
foreach $dir(@backe){
|
||||
print("\t".$dir."\n");
|
||||
$excludes_file = $backupdir.$dir;
|
||||
print("\t\t". $excludes_file."\n");
|
||||
#TODO test ob dirs existieren
|
||||
}
|
||||
}
|
||||
|
||||
sub tar_it{
|
||||
# archive erstellen
|
||||
print("\n----> tar zcf: /$dir .. ");
|
||||
$excludes_file = $excludes.$dir;
|
||||
print("tar zcf $filename.tgz -C / --exclude-from $excludes_file $dir");
|
||||
system("tar zcf $filename.tgz -C / --exclude-from $excludes_file $dir");
|
||||
print(" tar done!\n");
|
||||
}
|
||||
|
||||
sub crypt_it{
|
||||
# endlich crypten
|
||||
print("\n----> ccrypt $filename.tgz .. ");
|
||||
# TODO: force ueberschreibt gnadenlos - vorher abchecken
|
||||
system("ccrypt -k $keyfilename $filename.tgz --force");
|
||||
system("rm $keyfilename");
|
||||
system("mv $keyfilename.gpg $keyfilename$filename.gpg");
|
||||
print(" ccrypt done!\n");
|
||||
}
|
||||
|
||||
sub mail_it{
|
||||
print("\n----> mail goes out .. ");
|
||||
# mit mutt verschicken
|
||||
# (-n -F /dev/null) umgehen die configs
|
||||
# (-a filename) haengt datei ran; (-s subject) und body bleibt leer
|
||||
system("mutt -n -F /dev/null -a $keyfilename$filename.gpg -i reminder.txt -s \"key-$dir\" $mailuser\@systemausfall.org < /dev/null");
|
||||
print(" mail done!\n");
|
||||
}
|
||||
|
||||
sub generateSessionKey{
|
||||
# den key verschluesseln
|
||||
print("\n----> delete existing key of today: ");
|
||||
system("gpg --batch -q -r $gpgkey_id -e $keyfilename");
|
||||
}
|
||||
|
||||
sub generateRandomBits{
|
||||
# 4069 alphanumerische zeichen als key generieren
|
||||
@chars = ("A" .. "Z", "a" .. "z", 0 .. 9);
|
||||
$haltdenrand = join("", @chars[ map{rand @chars} (1 .. 4096) ]);
|
||||
# datei zum schreiben oeffnen und als ausgabe auswaehlen
|
||||
open(DERKEY, "> $keyfilename")
|
||||
or die "$keyfilename could not be opened";
|
||||
#alten ausgabekanal merken
|
||||
$oldoutput = select(DERKEY);
|
||||
print $haltdenrand;
|
||||
select ($oldoutput);
|
||||
close(DERKEY);
|
||||
system("chmod 600 $keyfilename");
|
||||
}
|
||||
|
||||
sub getDate{
|
||||
use Time::localtime;
|
||||
$tm = localtime;
|
||||
return ($tm->year+1900, $tm->mon+1, $tm->mday);
|
||||
}
|
||||
|
156
backe123/logback
Normal file
156
backe123/logback
Normal file
|
@ -0,0 +1,156 @@
|
|||
[02004-10-27] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today: gpg: WARNING: unsafe ownership on configuration file "/home/age/.gnupg/gpg.conf"
|
||||
|
||||
----> tar zcf: /etc .. tar: Removing leading `/' from member names
|
||||
done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today: gpg: WARNING: unsafe ownership on configuration file "/home/age/.gnupg/gpg.conf"
|
||||
|
||||
----> tar zcf: /home .. tar: Removing leading `/' from member names
|
||||
done!
|
||||
----> ccrypt hom-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today: gpg: WARNING: unsafe ownership on configuration file "/home/age/.gnupg/gpg.conf"
|
||||
|
||||
----> tar zcf: /lib .. tar: Removing leading `/' from member names
|
||||
done!
|
||||
----> ccrypt lib-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today: gpg: WARNING: unsafe ownership on configuration file "/home/age/.gnupg/gpg.conf"
|
||||
|
||||
----> tar zcf: /boot .. tar: Removing leading `/' from member names
|
||||
done!
|
||||
----> ccrypt boo-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today: gpg: WARNING: unsafe ownership on configuration file "/home/age/.gnupg/gpg.conf"
|
||||
|
||||
----> tar zcf: /var .. tar: Removing leading `/' from member names
|
||||
tar: /var/run/mysqld/mysqld.sock: socket ignored
|
||||
tar: /var/run/gcache_port: socket ignored
|
||||
done!
|
||||
----> ccrypt var-backup.tgz .. done!
|
||||
|
||||
[02004-11-3] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. [02004-11-3] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /home .. done!
|
||||
----> ccrypt hom-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /lib .. done!
|
||||
----> ccrypt lib-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /boot .. done!
|
||||
----> ccrypt boo-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /var .. done!
|
||||
----> ccrypt var-backup.tgz .. done!
|
||||
|
||||
[02004-11-17] Now I will make a backup of:
|
||||
/etc
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
[02004-11-17] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /home .. done!
|
||||
----> ccrypt hom-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /lib .. done!
|
||||
----> ccrypt lib-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /boot .. done!
|
||||
----> ccrypt boo-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /var .. done!
|
||||
----> ccrypt var-backup.tgz .. done!
|
||||
|
||||
[02004-11-23] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /home .. done!
|
||||
----> ccrypt hom-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /lib .. done!
|
||||
----> ccrypt lib-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /boot .. done!
|
||||
----> ccrypt boo-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /var .. done!
|
||||
----> ccrypt var-backup.tgz .. done!
|
||||
|
||||
[02004-11-30] Now I will make a backup of:
|
||||
/etc
|
||||
/home
|
||||
/lib
|
||||
/boot
|
||||
/var
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /etc .. done!
|
||||
----> ccrypt etc-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /home .. done!
|
||||
----> ccrypt hom-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /lib .. done!
|
||||
----> ccrypt lib-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /boot .. done!
|
||||
----> ccrypt boo-backup.tgz .. done!
|
||||
|
||||
----> delete existing key of today:
|
||||
----> tar zcf: /var .. done!
|
||||
----> ccrypt var-backup.tgz .. done!
|
||||
|
2
backe123/quellsaft/boot
Normal file
2
backe123/quellsaft/boot
Normal file
|
@ -0,0 +1,2 @@
|
|||
test
|
||||
test3
|
9
backe123/reminder.txt
Normal file
9
backe123/reminder.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
Hi AGE!
|
||||
|
||||
Faxe hat ein neues Backup generiert.
|
||||
Sicher es doch bitte an einem anderen Ort in dem du z.B. folgendes tust:
|
||||
|
||||
scp -r systemausfall.org:/home/backe123 .
|
||||
|
||||
recht herzlichen Dank!
|
||||
|
Loading…
Reference in a new issue