Information ausblenden
Das Digital Eliteboard ist ein Kostenloses Forum. Wenn du alle Bereiche sehen möchtest oder Fragen hast, musst du dich zunächst Registrieren.

Jetzt Registrieren

Gelöst Backup Script ?!

Dieses Thema im Forum "Debian" wurde erstellt von Oggy512, 23. Mai 2013.

  1. Oggy512
    Offline

    Oggy512 Ist gelegentlich hier

    Registriert:
    7. Dezember 2010
    Beiträge:
    52
    Zustimmungen:
    12
    Punkte für Erfolge:
    8
    Hey Leute,

    ich möchte mit dd ein komplettes Image meiner SD Karte vom Raspberry Pi auf meine NAS schreiben. Das ganze soll einmal wöchentlich passieren und nachdem das neue Image geschrieben wurde, soll das alte gelöscht werden. Nun stellt sich mir die Frage, wie ich das anstelle. Da ich eigentlich nur aus der Windows Welt komme, ist mir Linux/Debian noch etwas fremd...

    Der Befehl zum sichern ist ja klar:

    dd if=/dev/mmcblk0 of=/mnt/backup/dd-backup.img

    /mnt/backup ist eine gemountete NFS Freigabe zur NAS. nach Möglichkeit hätte ich gerne noch das Datum automatisch im Dateinamen mit drin, das geht ja sicher mit ner Variablen, aber wie?

    Und eben nach diesem Befehl, soll er das vorherige img löschen, sodass quasi immer nur 1 Image auf der NAS liegt.

    Kann mir da wer helfen?
    Danke!!
     
    #1
  2. sumsi
    Offline

    sumsi VIP

    Registriert:
    13. Mai 2009
    Beiträge:
    5.417
    Zustimmungen:
    4.158
    Punkte für Erfolge:
    113
    AW: Backup Script ?!

    Sicherungskopien von mehreren Dateien und/oder Verzeichnissen erstellen
    Automatisches löschen alter Sicherungen mit der -k Option (nach dem Erstellen von Neuen).


    Einfach das Skript kopieren und irgendwo in den $PATH legen. Fertig


    Bitte Pfade anpessen dann skript in eine .bat datei speichern,
    auf die Konsole ausführen und die funktionalität prüfen.

    skript stammt aus dem Linux forum.




    [TD="class: number"]1[/TD]
    [TD="class: content"]#!/bin/bash[/TD]


    [TD="class: number"]2[/TD]
    [TD="class: content"]#[/TD]


    [TD="class: number"]3[/TD]
    [TD="class: content"]# Creates a copy with timestamp of the file(s) given in argument.[/TD]


    [TD="class: number"]4[/TD]
    [TD="class: content"]# Optionally removes old copies[/TD]


    [TD="class: number"]5[/TD]
    [TD="class: content"]#[/TD]


    [TD="class: number"]6[/TD]
    [TD="class: content"]# by sascha.nowak@dfs.de[/TD]


    [TD="class: number"]7[/TD]
    [TD="class: content"]#[/TD]


    [TD="class: number"]8[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]9[/TD]
    [TD="class: content"]KEEPNUM=0 # 0 = disabled[/TD]


    [TD="class: number"]10[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]11[/TD]
    [TD="class: content"]function printhelp() {[/TD]


    [TD="class: number"]12[/TD]
    [TD="class: content"] echo "usage: $0 [-k <num>] [-yv] file_to_backup [file_to_backup...]" >&2[/TD]


    [TD="class: number"]13[/TD]
    [TD="class: content"] echo "options:" >&2[/TD]


    [TD="class: number"]14[/TD]
    [TD="class: content"] echo " -k keep last <num> backups and remove older files" >&2[/TD]


    [TD="class: number"]15[/TD]
    [TD="class: content"] echo " -y assume 'yes' if backup a directory" >&2[/TD]


    [TD="class: number"]16[/TD]
    [TD="class: content"] echo " -v verbose" >&2[/TD]


    [TD="class: number"]17[/TD]
    [TD="class: content"] exit 1[/TD]


    [TD="class: number"]18[/TD]
    [TD="class: content"]}[/TD]


    [TD="class: number"]19[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]20[/TD]
    [TD="class: content"][ "$1" == "" ] && printhelp[/TD]


    [TD="class: number"]21[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]22[/TD]
    [TD="class: content"]while getopts ":k:yvh" opt[/TD]


    [TD="class: number"]23[/TD]
    [TD="class: content"]do[/TD]


    [TD="class: number"]24[/TD]
    [TD="class: content"] case $opt in[/TD]


    [TD="class: number"]25[/TD]
    [TD="class: content"] k)[/TD]


    [TD="class: number"]26[/TD]
    [TD="class: content"] [ ${OPTARG:0:1} = "=" ] && KEEPNUM=${OPTARG/=} || KEEPNUM=$OPTARG[/TD]


    [TD="class: number"]27[/TD]
    [TD="class: content"] ;;[/TD]


    [TD="class: number"]28[/TD]
    [TD="class: content"] y)[/TD]


    [TD="class: number"]29[/TD]
    [TD="class: content"] YES="y"[/TD]


    [TD="class: number"]30[/TD]
    [TD="class: content"] ;;[/TD]


    [TD="class: number"]31[/TD]
    [TD="class: content"] v)[/TD]


    [TD="class: number"]32[/TD]
    [TD="class: content"] VERBOSE="v"[/TD]


    [TD="class: number"]33[/TD]
    [TD="class: content"] ;;[/TD]


    [TD="class: number"]34[/TD]
    [TD="class: content"] *)[/TD]


    [TD="class: number"]35[/TD]
    [TD="class: content"] printhelp[/TD]


    [TD="class: number"]36[/TD]
    [TD="class: content"] ;;[/TD]


    [TD="class: number"]37[/TD]
    [TD="class: content"] esac[/TD]


    [TD="class: number"]38[/TD]
    [TD="class: content"]done[/TD]


    [TD="class: number"]39[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]40[/TD]
    [TD="class: content"]shift $(($OPTIND-1))[/TD]


    [TD="class: number"]41[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]42[/TD]
    [TD="class: content"]FILENAMES=$*[/TD]


    [TD="class: number"]43[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]44[/TD]
    [TD="class: content"][[ $KEEPNUM == [0-9]* ]] || printhelp[/TD]


    [TD="class: number"]45[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]46[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]47[/TD]
    [TD="class: content"]# pre check[/TD]


    [TD="class: number"]48[/TD]
    [TD="class: content"]ERROR=0[/TD]


    [TD="class: number"]49[/TD]
    [TD="class: content"]for FILENAME in $FILENAMES; do[/TD]


    [TD="class: number"]50[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]51[/TD]
    [TD="class: content"] if [ ! -e $FILENAME ]; then[/TD]


    [TD="class: number"]52[/TD]
    [TD="class: content"] echo "file not found or unsupported filetype: $FILENAME" >&2[/TD]


    [TD="class: number"]53[/TD]
    [TD="class: content"] ERROR=1[/TD]


    [TD="class: number"]54[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]55[/TD]
    [TD="class: content"] if [ -L $FILENAME ]; then[/TD]


    [TD="class: number"]56[/TD]
    [TD="class: content"] echo "file is a symlink: $FILENAME" >&2[/TD]


    [TD="class: number"]57[/TD]
    [TD="class: content"] ERROR=1[/TD]


    [TD="class: number"]58[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]59[/TD]
    [TD="class: content"] if [ -d $FILENAME -a $ERROR != 1 ] ; then[/TD]


    [TD="class: number"]60[/TD]
    [TD="class: content"] if [ "$YES" != "y" ]; then[/TD]


    [TD="class: number"]61[/TD]
    [TD="class: content"] echo -n "Do you want to backup the whole directory $FILENAME? [Y/n] "[/TD]


    [TD="class: number"]62[/TD]
    [TD="class: content"] read YN[/TD]


    [TD="class: number"]63[/TD]
    [TD="class: content"] if [ "$YN" == 'n' ] ; then[/TD]


    [TD="class: number"]64[/TD]
    [TD="class: content"] echo OK, nothing backuped >&2[/TD]


    [TD="class: number"]65[/TD]
    [TD="class: content"] exit 1[/TD]


    [TD="class: number"]66[/TD]
    [TD="class: content"] else[/TD]


    [TD="class: number"]67[/TD]
    [TD="class: content"] YES=y[/TD]


    [TD="class: number"]68[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]69[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]70[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]71[/TD]
    [TD="class: content"]done[/TD]


    [TD="class: number"]72[/TD]
    [TD="class: content"]if [ "$ERROR" == 1 ] ; then[/TD]


    [TD="class: number"]73[/TD]
    [TD="class: content"] echo 'Operation stopped because of previous errors. Nothing backuped!' >&2[/TD]


    [TD="class: number"]74[/TD]
    [TD="class: content"] exit 1[/TD]


    [TD="class: number"]75[/TD]
    [TD="class: content"]fi[/TD]


    [TD="class: number"]76[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]77[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]78[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]79[/TD]
    [TD="class: content"]# copy files[/TD]


    [TD="class: number"]80[/TD]
    [TD="class: content"]for FILENAME in $FILENAMES; do[/TD]


    [TD="class: number"]81[/TD]
    [TD="class: content"] # evtl / am Ende entfernen[/TD]


    [TD="class: number"]82[/TD]
    [TD="class: content"] FILENAME=$(echo $FILENAME | sed 's#/$##')[/TD]


    [TD="class: number"]83[/TD]
    [TD="class: content"] cp -pr$VERBOSE $FILENAME $FILENAME.`date +%Y%m%d-%H%M%S`[/TD]


    [TD="class: number"]84[/TD]
    [TD="class: content"] RETVAL=$?[/TD]


    [TD="class: number"]85[/TD]
    [TD="class: content"] if [ "$RETVAL" -ne 0 ] ; then[/TD]


    [TD="class: number"]86[/TD]
    [TD="class: content"] echo Copy error at file: $FILENAME >&2[/TD]


    [TD="class: number"]87[/TD]
    [TD="class: content"] exit $RETVAL[/TD]


    [TD="class: number"]88[/TD]
    [TD="class: content"] fi[/TD]


    [TD="class: number"]89[/TD]
    [TD="class: content"]done[/TD]


    [TD="class: number"]90[/TD]
    [TD="class: content"] [/TD]


    [TD="class: number"]91[/TD]
    [TD="class: content"]# remove old files[/TD]


    [TD="class: number"]92[/TD]
    [TD="class: content"]if [ $KEEPNUM -gt 0 ]; then[/TD]


    [TD="class: number"]93[/TD]
    [TD="class: content"] for FILENAME in $FILENAMES; do[/TD]


    [TD="class: number"]94[/TD]
    [TD="class: content"] # evtl / am Ende entfernen[/TD]


    [TD="class: number"]95[/TD]
    [TD="class: content"] FILENAME=$(echo $FILENAME | sed 's#/$##')[/TD]


    [TD="class: number"]96[/TD]
    [TD="class: content"] I=0[/TD]


    [TD="class: number"]97[/TD]
    [TD="class: content"] for FILE in `ls -dr $FILENAME.????????-??????`; do[/TD]


    [TD="class: number"]98[/TD]
    [TD="class: content"] I=$(( $I + 1 ))[/TD]


    [TD="class: number"]99[/TD]
    [TD="class: content"] [ $I -gt $KEEPNUM ] && rm -rf$VERBOSE $FILE[/TD]


    [TD="class: number"]100[/TD]
    [TD="class: content"] done[/TD]


    [TD="class: number"]101[/TD]
    [TD="class: content"] done[/TD]


    [TD="class: number"]102[/TD]
    [TD="class: content"]fi[/TD]
     
    #2

Direkt Antworten

Überprüfung:
Der Entwurf wurde gespeichert Der Entwurf wurde gelöscht

Diese Seite empfehlen

OK Mehr information

Diese Seite verwendet Cookies. Mit Ihrem Klick auf OK stimmen Sie der Verwendung von Cookies zu. Andernfalls ist die Funktionalität dieser Website beschränkt.