zeroblue2005
Goto Top

Mit DD Cron Job für DD auf Netzlaufwerk erstellen

Hallo Zusammen,

komme eigentlich mehr aus der Windows Welt, jedoch habe ich mich mal daran gemacht, ein Debian zu installieren als Apache Webserver usw. für OwnCloud. Habe ich mich auch da durch gebissen, jedoch hänge ich jetzt an der Sicherungstrategie. Mein Erster Gedanke war, warum Linux das Backup machen lassen, also via Samba und mit Root berechtigungen Windows via UNC Pfad den Inhalt von SDA1 spricht Root kopieren lassen. Irgendwas sagt mir jedoch innerlich, dass dies kein gute Lösung ist, kann nicht mal genau sagen warum face-wink!

Also ich mich DD beschäftigt und folgendes gemacht:

dd if=/dev/sda1 | gzip > ~/image-compress_sda1.img.gz

Jetzt Frage ich mich, es muss doch möglich sein das Ganze zum ersten zu automatisieren cronjob und dann das Image direkt auf einer Windows Freigabe zu speichern oder?

Zum Zweiten habe ich mir eine GUI heruntergeladen (/usr/bin/gnome-schedule), damit ich mir die Cronjobs wie unter Windows erstellen und abarbeiten kann. Jedoch weiss ich nicht wie ich das ganze schreiben muss damit z.B. als Root ausgeführt wird?

Ich hoffe auf Hilfe Danke ....

Content-Key: 273010

Url: https://administrator.de/contentid/273010

Printed on: April 25, 2024 at 21:04 o'clock

Mitglied: 119944
119944 May 27, 2015 updated at 09:36:53 (UTC)
Goto Top
Moin,

das ist problemlos möglich.

1. Windows Freigabe mounten:
https://www.thomas-krenn.com/de/wiki/Windows_Freigabe_unter_Linux_mounte ...

2. Backup Script erstellen:
#!/bin/bash
DATUM=$(date "+image_backup-%Y-%m-%d.img.gz")  
BPATH="/mnt"  
dd if=/dev/sda1 | gzip > $BPATH/$DATUM

3. Script als Root in die Crontab eintragen
sudo -s   # zum Root machen
crontab -e     # crontab Bearbeiten
0 21 * * * /home/username/backup_script.sh
Das Script wird so täglich 21 Uhr ausgeführt und speichert das Image mit dem aktuellen Datum weg.
Eventuell reicht ja auch einfaches packen und weg kopieren der Daten.

VG
Val
Member: zeroblue2005
zeroblue2005 May 27, 2015 at 10:31:44 (UTC)
Goto Top
Hi,

OK Teil 1 und 2 habe ich gemacht! Nur bei 3 verstehe ich was nicht!

bei cronetab -e wird eine tmp Datei unter /tmp/... erstellt! Ergo ist die cronetab nicht vorhanden, wohin soll ich diese speichern? Auf etc gibt es auch noch ein paar Ordner die heissen cron.daily usw.

PS: Ist es normal unter Linux das man beim Mounten das Netzlaufwerk nicht sieht? Er hat mich nach Passwort gefragt aber ansonsten ist nicht sichtbar! Beim erneuten ausführen sagt er aber ist besetzt! Ist das Mounten dauerhaft?
Mitglied: 119944
119944 May 27, 2015 at 10:37:33 (UTC)
Goto Top
PS: Ist es normal unter Linux das man beim Mounten das Netzlaufwerk nicht sieht? Er hat mich nach Passwort gefragt aber ansonsten ist nicht sichtbar! Beim erneuten ausführen sagt er aber ist besetzt! Ist das Mounten dauerhaft?
Mach mal eine CLI auf und gib "df -h" ein, da müsstest du die verbundenen Laufwerke sehen.
Ein Mount ist bis zum Neustart permanent, soll die Freigabe auch bei einem Neustart verbunden werden, müsstest du das in der "/etc/fstab" vermerken.

bei cronetab -e wird eine tmp Datei unter /tmp/... erstellt! Ergo ist die cronetab nicht vorhanden, wohin soll ich diese speichern? Auf etc gibt es auch noch ein paar Ordner die heissen cron.daily usw.
Die tmp Datei wird nur beim editieren verwendet. Speicherst du diese Datei ab wird sie nach "/var/spool/cron/crontabs/username" installiert.

Das Ergebnis kannst du dir mit "crontab -l" anzeigen lassen.

VG
Val
Member: zeroblue2005
zeroblue2005 May 27, 2015 at 10:48:59 (UTC)
Goto Top
OK das mit dem Cronjob habe ich auch gerade bei Wiki Cron gelsen: Die sagen ich soll das hierrein packen ghet das, habe meinen Teil ganz nach unten geschrieben? Muss vieleicht mit dazu sagen, dass ich die ganze zeit die config Dateien der Maschine mit Win-SCP bearbeite tue mich sehr schwer mit der shell vi nano und wie die Dinger heissen..

  1. /etc/crontab: system-wide crontab
  2. Unlike any other crontab you don't have to run the `crontab'
  3. command to install the new version when you edit this file
  4. and files in /etc/cron.d. These files also have username fields,
  5. that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

  1. m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
#
#Backup-Server215-auf-211
0 21 * * * root /home/administrator/Backup215alsImage.sh


Habe df -h ausgeführt steht drin! Was muss ich den in die "/etc/fstab" eintragen damit der drin bleibt?
Mitglied: 119944
119944 May 27, 2015 updated at 11:07:33 (UTC)
Goto Top
habe meinen Teil ganz nach unten geschrieben
Richtig!

Muss vieleicht mit dazu sagen, dass ich die ganze zeit die config Dateien der Maschine mit Win-SCP bearbeite tue mich sehr schwer mit der shell vi nano und wie die Dinger heissen..
Das solltest du dir wirklich angewöhnen! Der nano ist recht einfach zu lernen, da ist vi um einiges garstiger. face-wink
Hab gerade nochmal geschaut, du gibst einfach alles so ein wie du es brauchst und verwendest bei "^O" -> "STRG+O" und bei "^X" -> "STRG+X".

m h dom mon dow user command
Mhh interessant, bei meinem Test Ubuntu ist die "user" Option gar nicht drin. Welches Debian verwendest du denn?

Habe df -h ausgeführt steht drin! Was muss ich den in die "/etc/fstab" eintragen damit der drin bleibt?
http://wiki.ubuntuusers.de/Samba_Client_cifs#Grundstruktur

Generell ist das Ubuntuusers Wiki eine super Anlaufstelle für Linuxanfänger!

Außerdem solltest du dein Script noch ausführbar machen (falls nicht schon geschehen):
chmod +x /pfad/zum/script.sh

VG
Val
Member: zeroblue2005
zeroblue2005 May 27, 2015 at 11:10:08 (UTC)
Goto Top
Ich benutze : Debian 7.5

Ich sage mal vielen Dank ....
Member: broecker
broecker May 27, 2015 at 11:21:31 (UTC)
Goto Top
Moin,
es geht ja scheinbar langsam voran,
der User-Name in der crontab ist bei der eigenen Tabelle nicht nötig (crontab -e), bei /etc/crontab aber vorgesehen.
man crontab
hilft da;
generell hat dieses Sichern einen kleinen und einen großen Nachteil:
klein: auch die unbenutzten Blöcke der Partition werden mit gesichert
groß: das Dateisystem ist nicht konsistent, was während des Sicherns passiert, hinterläßt Müll im Dateisystem.
Dafür gibt es mehrere Ansätze einer Lösung:
- Ignorieren face-smile : vielleicht ist nicht viel schreibend los, jede zweite, dritte Sicherung ist hinreichend konsistent (frühere aufheben)
- Vorheriges remounten als "readonly": mount /dev/sda1 / -o remount,ro - das geht aber im laufenden Betrieb auf / meist nicht ohne weiteres
- Verwenden eines Snapshot-fähigen Dateisystems, z.B. Btrfs als / und dann statt dd gleich den Snapshot rauskopieren
- Sichern des Dateisystems statt des Images: tar, cpio - unter Berücksichtigung nur der relevanten Pfade: z.B. /etc, /usr, /var - nicht /proc - da liegt auch der Arbeitsspeicher...
- Offline-Sicherung: alle Jahre mit Live-CD/USB booten und das dd-Image machen, außer der Zeit nur die veränderten Daten wieder mit tar.
HG
Mark
Member: zeroblue2005
zeroblue2005 May 27, 2015 updated at 12:16:57 (UTC)
Goto Top
Vieleicht kannst du mir noch bei einem anderen problem helfen. Immer wenn ich unter Debian auf Netzwerk klicke und versuche auf eine Windows freigabe zuzugreifen, dann meint er immer das Benutzerangaben geprüft werden sollte, obwohl alles richtig ist. Ist das jetzt ein problem von Linux oder Windows?


OK hat sich erledigt mit:
sudo apt-get install libpam-smbpass
Member: zeroblue2005
zeroblue2005 May 28, 2015 at 15:39:57 (UTC)
Goto Top
Also leider ist das Backup nicht gelaufen. Habe mal versucht den Script manuell als anzustossen, das ist dabei rausgekommen:

root@VM-Cloud-Web-2:~# sh /home/administrator/backup.sh
/home/administrator/backup.sh: 5: /home/administrator/backup.sh: cannot create /mnt/: Is a directory

Der Mount sieht so aus:
//192.168.178.211/backup-vm-cloud-web-2 800G 547G 254G 69% /mnt

Der Script:

#!/bin/bash
02.
DATUM=$(date "+image_backup-%Y-%m-%d.img.gz")
03.
BPATH="/mnt"
04.
dd if=/dev/sda1 | gzip > $BPATH/$DATUM

Was stimmt nicht?
Mitglied: 119944
119944 May 28, 2015 at 15:48:46 (UTC)
Goto Top
Moin,

gerade nochmal getestet und funktioniert unter Ubuntu 14.04 bestens.
Ich hoffe die Nummern hast du nicht im fertigen Script drin?

Also so:
#!/bin/bash
DATUM=$(date "+image_backup-%Y-%m-%d.img.gz")
BPATH="/mnt"
dd if=/dev/sda1 | gzip > $BPATH/$DATUM

VG
Val
Member: zeroblue2005
zeroblue2005 May 28, 2015 at 16:06:36 (UTC)
Goto Top
Hi Val,

nein die 5 steht nicht drin gebe den Befehl so ein:
sh /home/administrator/backup.sh

und das kommt raus:
/home/administrator/backup.sh: 5: /home/administrator/backup.sh: cannot create /mnt/: Is a directory

Woher die 5 kommt keine Ahnung...

Ich habe Debian 7.5 nicht Ubuntu vieleicht ist das das Problem?

Der Dir /mnt ist wirklich vorhanden.... ist aber leer...

Das Ding läuft einfach nicht..............ahhhhhhhhhhhhhhhhhhh
Member: zeroblue2005
zeroblue2005 May 28, 2015 at 16:52:41 (UTC)
Goto Top
So bin ein Stücken weiter gekommen! Habe das mal jetzt so ge moutet:

mount -t cifs //192.168.1.100/freigabe /media/backup211 -o user=testuser,domain=testdomain
Password:

Und siehe einer statt /mnt nimmt er /media/backup211 als Mountpunkt

Wenn ich jedoch jetzt versuche dort rein zu schreiben also in /media/backup211 dann habe ich keine Schreibrechte... und nun?

root@VM-Cloud-Web-2:/media# chmod -R 777 /media/backup211/
chmod: Beim Setzen der Zugriffsrechte für „/media/backup211/“: Keine Berechtigung

PS: Mount wurde übrigens mit AdminZugang zur Windows UNC Freigabe erzeigt. Root kann alles habe ich probiert aber Benutzer nicht, boor so langsam bekomme ich die Krise.
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 07:25:28 (UTC)
Goto Top
So jetzt habe ich es: gzip ist das Problem gewesen unter Debian warum auch immer habe das jetzt so angepasst und es läuft face-smile :


#!/bin/bash
DATUM=$(date "+image_backup-%Y-%m-%d.img.gz")
BPATH="/mnt"
dd if=/dev/sda1 | bzip2 > $BPATH/$DATUM

also statt gzip bzip2
Member: broecker
broecker May 29, 2015 at 08:34:53 (UTC)
Goto Top
sorry, jetzt bin ich erst wieder drinn: gzip verlangt ein File, sonst:
gzip -
um dann die Ausgabe weiterzugeben, also:
dd if=/dev/sda1 | gzip - > $BPATH/$DATUM

bzip2 kann ohne.
Nicht debian-Spezifisch, sondern GnuZip.

bzip2 ist erheblich langsamer und braucht mehr Speicher, gzip komprimiert schlechter, xz - als neuer Shooting-Star - ist streamfähig...

HG
Mark
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 08:44:21 (UTC)
Goto Top
Hallo,

ja mir wäre gzip auch lieber aber er startet nicht mit Gzip Was heisst verlangt eine File?
Member: broecker
broecker May 29, 2015 at 09:06:17 (UTC)
Goto Top
gzip möchte gemäß man-Page einen Dateinamen haben, um etwas packen zu können - also gedachter Routine-Fall:

gzip Datei
führt dazu, daß Datei gar nicht mehr daliegt, sondern nun
Datei.gz
rumliegt.
also muß man zur Verwendung als "Filter" gzip einen Alibi-Filenamen geben: -
dd if=/dev/sda1 | gzip - > meineDatei.dd.gz
diese Endungen wären übrigens ganz schöne Konvention, damit andere wissen, womit gearbeitet wurde.
Ist die Festplatte eher langsam, aber genug Arbeitsspeicher da:
dd if=/dev/sda1 bs=10M | gzip - > meineDatei.dd.gz
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 09:11:29 (UTC)
Goto Top
OK so win langsam komme ich ein wenig mit:

Sei doch mal so lieb und passe mir den script so an, wie du ihn schreiben würdest:

#!/bin/bash
DATUM=$(date "+image_backup-%Y-%m-%d.img.gz")
BPATH="/mnt"
dd if=/dev/sda1 | gzip > $BPATH/$DATUM
Member: broecker
broecker May 29, 2015 updated at 09:58:43 (UTC)
Goto Top
#!/bin/bash
ZIEL=$(date "+/mnt/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $ZIEL

oder noch kürzer:

#!/bin/bash
dd if=/dev/sda1 bs=10M | gzip - > $(date "+/mnt/image_backup-sda1-%Y-%m-%d.dd.gz")

oder noch kürzer als root:
crontab - e

15 0 * * * dd if=/dev/sda1 bs=10M | gzip - > $(date "+/mnt/image_backup-sda1-%Y-%m-%d.dd.gz")

dabei geht aber das Mounten etwas verloren...


Edit: @119944: stimmt, ZIEL ist zielführend.
Mitglied: 119944
119944 May 29, 2015 updated at 09:44:19 (UTC)
Goto Top
Moin broecker,

ZIEL=$(date "+/mnt/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $DATUM
Sollte dann wenn schon auch unten $ZIEL heißen.

Warum funktioniert das dann unter Ubuntu wie oben beschrieben?
https://wiki.ubuntuusers.de/dd#Image-einer-Partition-sichern


VG
Val
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 09:59:29 (UTC)
Goto Top
Also habe das mal jetzt auf meine echten Pfase bzw. mount angepasst:

ZIEL=$(date "+/media/backup211/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $DATUM

beim ausführen kommt wieder der Fehler:

root@VM-Cloud-Web-2:~# sh test.sh
test.sh: 2: test.sh: cannot create : Directory nonexistent

Natürlich ist der Pfad: /media/backup211/ vorhanden. Das sieht mir so aus, als wenn er den Mountpunkt nicht als Ordner erkennt!
Member: broecker
broecker May 29, 2015 at 10:07:28 (UTC)
Goto Top
falls das das Original-Skript ist, hast Du Dich ähnlich wie ich mich eben beim Tippen verkorrigiert:
ZIEL=...
führt natürlich zu ... $ZIEL
HG
Mark
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 10:16:19 (UTC)
Goto Top
Auch hier:
root@VM-Cloud-Web-2:~# sh test.sh
test.sh: 1: test.sh: =/media/backup211/image_backup-sda1-2015-05-29.dd.gz: not found
test.sh: 2: test.sh: cannot create : Directory nonexistent
root@VM-Cloud-Web-2:~#

mit:

$ZIEL=$(date "+/media/backup211/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $DATUM

Das gleiche...
Member: broecker
broecker May 29, 2015 at 10:20:03 (UTC)
Goto Top
ja (lesen...)
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 10:24:10 (UTC)
Goto Top
Ich lese ja aber ich verstehe nicht was du mir sagen willst, vorne $ weg oder nicht weg etweder kommt Syntaxfehler oder der Datei oder Ordner nicht vorhanden. So sieht das ding aus:

ZIEL=$(date "+/media/backup211/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $DATUM

so gehts auch nicht:

$ZIEL=$(date "+/media/backup211/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $DATUM
Member: broecker
Solution broecker May 29, 2015 updated at 10:39:11 (UTC)
Goto Top
ZIEL=$(date "+/media/backup211/image_backup-sda1-%Y-%m-%d.dd.gz")
dd if=/dev/sda1 bs=10M | gzip - > $ZIEL


ersetze jedes DATUM durch ZIEL,
das $ zur Ausgabe einer Variablen - die nur als Konvention groß geschrieben,
bei der Eingabe aber kein $ - so geht bash (wie auch sh)

wie lange man über einen Einzeiler sprechen kann...
Member: zeroblue2005
zeroblue2005 May 29, 2015 at 10:35:20 (UTC)
Goto Top
So gehts! Jetzt mal im Erst glaubst du das ich als Unix Anfänger wo ich schon stolz wie Osker, das ich meinen ersten Debian mit Apache usw. hinbekommen habe, verstanden habe warum $ZIEL zum Ziel führt! Ich bin froh das ich von den Parametern und Befehlen ca. 50% verstehe.

Trotzdem Danke...