Timm Wimmers wrote:
> Am Montag, den 08.08.2011, 20:12 +0200 schrieb Manfred Lotz:
> >
> > Ich habe mir ein rsnapshot ähnliches Script geschrieben, dass mir sehr
> > gute Dienste leistet. Was nutzt du, wenn du die Situation hast, deine
> > Daten auf eine ext. Festplatte zu sichern, und möglichst platzsparend
> > (also mit Hardlinks) viele Generationen haben willst?
>
> Kann man das Script mal sehen? Oder hast du andere Hinweise/Quellen?
>
> Ich benutze ebenfalls RSYNC und muss dringend auf Hardlinks umstellen,
> weil der Platz knapp wird. Wir haben hier sieben Generationen (MO-SO) in
> einer Werbeagentur und die sind - was Dateigrößen angeht - einfach
> wahnsinnig!
Sowas kann man sich eigentlich in 'nem Dutzend Zeilen Shell-
Code zusammenzimmern. Bei mir sieht's im prinzip so aus
(ist nur das Grundgerüst; mein Skript ist komplexer):
TODAY=$(date +%F)
cd /backup
LAST_BACKUP=$(ls -t | grep '^....-..-..$' | head -n 1)
cpdup -H "$LAST" "$SOURCE" "$TODAY"
Damit wird das Dateisystem von "$SOURCE" (kann auch remote
sein; SYntax wie bei scp) in einem Unterverzeichnis unter
/backup gesichert, und zwar so, dass bei Dateien, die sich
seit dem letzten Backup nicht geändert haben, nur ein
Hardlink dorthin gesetzt wird. Wenn mehrere Dateisysteme
zu sichern sind, muss man entsprechend mehrere cpdup-
Kommandos verwenden. Das /backup-Verzeichnis sieht so aus:
...
/backup/2011-08-06/...
/backup/2011-08-07/...
/backup/2011-08-08/...
/backup/2011-08-09/...
Möchte man z.B. montags mit "frischen" inodes beginnen,
d.h. cpdup ohne -H laufen lassen, muss man folgend Fall-
unterscheidung machen:
if [ $(date +%u) -eq 1 ]; then
OPTS=""
else
OPTS="-H"
fi
cpdup $OPTS "$LAST" "$SOURCE" "$TODAY"
Wenn man nur die Backups für eine Woche aufheben möchte,
also die letzen sieben, dann kann man die älteren auch
recht einfach löschen:
cd /backup
NUM_ALL=$(ls | grep '^....-..-..$' | wc -l)
NUM_OLD=$(( NUM_ALL - 7 ))
for DIR in $(ls -t | tail -n $NUM_OLD); do
rm -rf $"DIR" >/dev/null 2>&2
if [ -d "$DIR" ]; then
chflags -R noschg "$DIR"
rm -rf "$DIR"
fi
done
Das ist dann sogar die Luxus-Version, die nötigenfalls das
Immutable-Flag zurücksetzt.
Man kann sich diese Zeilen an die eigenen Bedürfnisse
anpassen und das Ganze dann als cronjob z.B. um 0:01 Uhr
laufen lassen (und natürlich ausgiebig testen).
Wichtig ist, dass sich der Shell-Code an der mtime der
Backup-Verzeichnisse orientiert, um festzustellen, welches
das jüngste und welches die älteren Backup sind. Man
sollte es daher vermeiden, anderweitig die mtime zu
manipulieren.
Ich weise auch auf die Man-page von cpdup hin, die noch
einige andere nützliche Optionen bereitstellt, z.B. um
bestimmte Dateien oder Verzeichnisse vom Backup auszu-
nehmen.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd 'Instead of asking why a piece of software is using "1970s technology," start asking why software is ignoring 30 years of accumulated wisdom.' To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Tue 09 Aug 2011 - 13:32:30 CEST