Als Ergebnis enthält die Backupdatei das (unverschlüsselte) Helpfile von GPG. Kann es sein, dass GPG kein STDIN kennt (außer bei --passphrase)? Lässt sich dieses Task wirklich nicht über eine schlanke Cronjob-Zeile lösen?
MYDIR="/srv/www/vhosts"; TEMPFILE="/tmp/$(mktemp)"; FTPFILE="/tmp/Backup_$(date '+%d_%m_%y').tar.gz"; GPGKEY=/root/key.gpg.pub; # öffentlicher schlüssel ohne passwort - der private Schlüssel darf nicht auf dem Rechner liegen sonst bringt dir das Verschlüsseln einen S...dreck. Er muss bei Bedarf hochgeladen werden und mit Shred überschrieben
id | grep -q uid=0 || clean_exit "$0: error: must be root to do this" # Account ermitteln
Das hab ich allerdings nicht getestet, ist komplett aus dem Kopf, würde ich vorher Schritt für Schritt testen!!!
Ablauf ist allerdings Packen, verschlüsseln, umtaufen, hochschieben, Daten überschreiben und löschen.
Vorteil vom Script ist, du kannst dich auch via mail informieren lassen bei Fehlern. Würde das nicht unbedingt mit einem Einzeiler machen.
Der Privatkey von dem GPG Account sollte nicht auf dem Server liegen und schon gar nicht in einem Script stehen. Du brauchst einen Privatekey nur zum Signieren, das Verschlüsseln funktioniert mit dem Public Key deines gegenübers.
mktemp erstellt die eine eindeutige Datei die nicht durch Zufall eine andere Datei überschreibt und wenn ich mich recht entsinne sollte GPG beim Datei verschlüsseln eine asc Datei erstellen. Der Aufruf von chattr sorgt für das sichere Entfernen der Dateien aus dem Dateisystem.
Im Cron würde ich einfach ein
* 3 * * * * root nice -n 19 /sbin/backupscript | mail -s "Backupjob vom $(date '+%d.%m.%y')" meine@mail.de
Dank nice sollte deine Festplatten IO auch nicht explodieren :-) Und Mail nimmt den STDOUT von deinem Script und mailt es dir zu, fertig.
p.s. Ist es nicht vielleicht intelligenter SCP mit Keypair Authentifizierung zu verwenden und auf dem Backupserver den User via scponly zu chrooten?
Eines ging mir gestern noch durch den Kopf. Ist der Backupserver von dir administriert?
Ich will nur nochmal darauf hinweisen, das ein fehlerhaftes Bit in der GPG Datei das komplette Backup unbrauchbar macht, weshalb ich eher zu einem kleinen VServer mit OpenVPN Unterstützung raten würde. Dein Server exportiert dann durch das VPN eine NFS Freigabe und auf dem VServer syncs durch einfach mittels Rsync deine Ordner. Wäre vielleicht der sauberere Ansatz und auf dem VServer kannst du mehr machen als nur Backups ziehen, z.B. ein Loggingserver mit RSyslog. Und vergiss auch nicht deine Datenbanken zu sichern, sofern du das nicht sowisso in den /srv/www/vhosts/ machst. Nützt kaum etwas die Webseiten zu sichern wenn die Inhalte verschwunden sind :)