backup archiv mit pw

  • Thread starter Thread starter meteor45
  • Start date Start date
M

meteor45

Guest
hey ich will meine backup

auf einem anderen server speichern doch die *.tar archive sollen passwörter haben.. da der server einen bekannten gehört..

wie kann ich sowas machen ?

ich nutze reobackup

mfg
 
Du könntest Dir einen GPG-Schlüssel erstellen und die erzeugten Backupdaten damit verschlüsseln. Dazu müsstest Du noch reobackup patchen, so dass tar die Daten in eine Pipe statt in eine Datei schreibt und dabei gpg aufruft, dass schliesslich die Datei erzeugt. Sollte nicht so schwierig sein, da das reobackup als Perl-Script vorliegt, das Du verändern kannst.

Den Patch könntest Du ja auch hier im Forum posten, damit andere auch was davon haben.

Viele Grüße,
LinuxAdmin
 
lol..
und das soll ich verstehen?
bitte mit link und gegebenfall anleitung
 
und das soll ich verstehen?
Wenn du den Post von LinuxAdmin nicht verstanden hast, wirst du eine andere Lösung finden müssen als reobackup selbst zu patchen. (Es gibt einen kleinen Unterschied, fremde Patches anzuwenden und diese selbst zu schreiben...)

Du könntest z.B. reobackup die Dateien unverschlüsselt lokal speichern lassen und diese dann von einem Cronjob verschlüsseln und auf den anderen Server übertragen lassen.

Das könnte z.B. so aussehen:
cat <file> | gpg -e -r <gpg@key.id> | ssh <user>@<server> dd of=<path>/<file>.gpg
 
So, hier ist der Patch für die aktuelle Version reoback-1.0-3 (wenig getestet und ohne jegliche Gewähr):
Code:
diff -ru orig/etc/reoback/settings.conf enc/etc/reoback/settings.conf
--- orig/etc/reoback/settings.conf      2008-02-07 11:04:47.000000000 +0100
+++ enc/etc/reoback/settings.conf       2008-02-07 10:52:33.000000000 +0100
@@ -71,3 +71,12 @@
 # Password for remote user.
 ftppasswd      = passwordhere
 ######################################################
+
+######################################################
+# REQUIRED IF ENCRYPTION OF DATA IS NEEDED
+#######
+# enable encryption
+encrypt = 1
+# GPG key ID to use
+encid = 8DA96714
+######################################################
diff -ru orig/usr/bin/reoback.pl enc/usr/bin/reoback.pl
--- orig/usr/bin/reoback.pl     2008-02-07 11:04:47.000000000 +0100
+++ enc/usr/bin/reoback.pl      2008-02-07 10:49:16.000000000 +0100
@@ -42,9 +42,11 @@
 my $DATESTAMP   = `date +%Y%m%d`;   # Current date in format: 04092001
 my $DATESTAMPD  = `date +%Y-%m-%d`; # Current date in format: 04092001
 my $TIMESTAMP   = `date +%I%M%p`;   # Current time in format: 0945PM
-my $TARCMD      = "tar -cpzf";       # Command to use to create tar files
+my $TARCMD      = "tar -cpf -";     # Command to use to create tar files
 my $NFSCMD      = "mount -o rw,soft,intr,wsize=8192,rsize=8192";
-my $EXT         = "\.tgz";          # Tar file extension
+my $EXT         = "\.tar\.bz2";     # Tar file extension
+my $GPGCMD      = "gpg";
+my $BZIPCMD     = "bzip2 -9c";
 
 # GLOBAL VARIABLES
 ###########################################################################
@@ -66,6 +68,10 @@
 &parseConfig();
 &backupType();
 
+if ($config{"encrypt"}) {
+   $EXT = $EXT . ".gpg";
+}
+
 # Make sure that dirs exist (localmount and localbackup are checked below)
 if ( not -e $config{"tmpdir"} ) {
   &mkdirp( $config{"tmpdir"}, 0700 ) or
@@ -190,16 +196,46 @@
   # Create the tar archive.  Use this method instead of system() so that we
   # can filter out the "Removing leading `/'" messages.  '2>&1' redirects
   # error messages from tar to stdout so we can catch them.
-  if ( $skipFile ) {
-    open PROC, "$TARCMD $fileName -T $listName.incl -X $listName.excl 2>&1|";
-  }
-  else {
-    open PROC, "$TARCMD $fileName -T $listName.incl 2>&1|";
-  }
-  foreach ( <PROC> ) {
-    if ( $_ !~ /Removing leading `\/'/ ) { print $_; }
+  if ($config{"encrypt"}) {
+
+   my $encID = $config{"encid"};
+   checkGPG($encID);
+
+    if ( $skipFile ) {
+      open PROC, "$TARCMD -T $listName.incl -X $listName.excl | $BZIPCMD | $GPGCMD -e -r $encID > $fileName 2>&1|";
+    }
+    else {
+      open PROC, "$TARCMD -T $listName.incl | $BZIPCMD | $GPGCMD -e -r $encID > $fileName 2>&1|";
+    }
+    foreach ( <PROC> ) {
+      if ( $_ !~ /Removing leading `\/'/ ) { print $_; }
+    }
+    close PROC;
+   }
+   else { # regular backup w/o encryption
+     if ( $skipFile ) {
+      open PROC, "$TARCMD -T $listName.incl -X $listName.excl | $BZIPCMD > $fileName 2>&1|";
+     }
+     else {
+      open PROC, "$TARCMD -T $listName.incl | $BZIPCMD > $fileName 2>&1|";
+     }
+     foreach ( <PROC> ) {
+       if ( $_ !~ /Removing leading `\/'/ ) { print $_; }
+     }
+     close PROC;
+   }
+}
+
+# Description:  Routine for checking whether the GPG encryption will work
+# Parameter(s): "Key ID of recipient"
+# Returns:      Nothing
+sub checkGPG{
+  my $encID = $_[0];      # Recipient Key ID
+
+  my $gpgtest = system("$GPGCMD --list-keys $encID >/dev/null");
+  if ($gpgtest != 0) {
+      die("GPG failed with code " . ($gpgtest/256) . "\n");
   }
-  close PROC;
 }
 
 # Description:  Routine for transferring a file to the remote backup

Anwendung: Abspeichern als "/tmp/reo_enc.patch"
Code:
cd /
patch -p1 < /tmp/reo_enc.patch
Das fügt den zusätzlichen bzw. geänderten Code in /etc/reoback/settings.conf und /usr/bin/reoback.pl ein. Vorher überprüfen, ob die Pfade mit der installierten Version zusammen passen (stammen aus dem RPM von sourceforge).

Der Patch setzt voraus, dass GPG installiert ist und ein entsprechender (öffentlicher) Schlüssel im Schlüsselbund von root vorhanden ist und dieser von root signiert und mit den entsprechenden Trust-Parametern ausgestattet ist. Dazu muss man ggfs. für root erst einen eigenen Schlüssel erstellen -- insofern kann man gleich den root-Schlüssel verwenden. Falls kein root-Schlüssel existiert:
Code:
gpg --gen-key
Das Verzeichnis /root/.gnupg sollte man anschließend in ein Archiv (tar, zip, etc) packen und an einem sicheren Ort aufbewahren (nicht auf dem Server!) -- ohne die Datei "secring.gpg" hat man keine Chancen, jemals wieder an seine Backup-Daten zu kommen (wahrscheinlich kann einem da nichteinmal die CIA helfen)!

Die (hexadezimale) ID des zu verwendenen Schlüssels (gpg --list-keys) muss entsprechend (encid) in /etc/reoback/settings.conf eingetragen werden.

Zum Entschlüsseln ruft man einfach "gpg archive.tar.bz2.gpg" auf und erhält dann nach Eingabe des Passworts die .tar.bz2-Datei, die man anschließend wie gehabt auspacken kann.

Ach ja, der Patch ändert auch die Komprimierung des Backups. Statt gzip wird das leistungsfähigere bzip2 verwendet, dementsprechend ist die Endung auch ".tar.bz2" anstatt ".tgz". Die entsprechende tar-Option ist dann nicht mehr 'z' sondern 'j' (also tar -tjvf archiv.tar.bz2) oder man packt das Archiv mit "bunzip2" aus.


Viele Grüße,
LinuxAdmin

PS: Ein Seiteneffekt: Aufgrund der Art und Weise, wie Perl und die Shell Ausgaben-Umleitungen durchführen, taucht jetzt leider die Meldung von tar auf ("Removing leading / from ...."), die vorher abgefangen wurde -- das sollte aber nicht wesentlich stören.
 
Last edited by a moderator:
+my $BZIPCMD = "bzip2 -9c";

Guten Tag.

Ich Weiß der Thread ist URASBACHALT but!

Wie schaut es aus oder was spricht dagegen pbzip2 zu benutzen?


Ich bekomm es leider nicht hin. Script spuckt mir die komplette files.conf raus und und mekkert Aborted!

# Be sure to remove, or comment out all these sample lines before running
Working on mysql...
Archiving mysql...
tar: Entferne führende „/“ von Elementnamen
Transferring archive: XXX.host.tld-mysql-incremental-20110726-0532.10.tar.bz2...done.

tar: Entferne führende „/“ von Elementnamen
home/ftpbackup/2011-07-26/XXX.host.tld-mysql-incremental-20110726-0532.10.tar.bz20000644000000000000000000000173311613557073026252 0ustar rootrootParallel BZIP2 v1.0.2 - by: Jeff Gilchrist [http://compression.ca]
[July 25, 2007] (uses libbzip2 by Julian Seward)

Invalid command line! Aborting...

Usage: pbzip2 [-1 .. -9] [-b#cdfklp#qrtV] <filename> <filename2> <filenameN>


die Line hatte ich wie folg abgeändert ausprobiert


pbzip2 -9c || pbzip2 -9 -c || pbzip2

alles das selbe.
 
Back
Top