USB Stick-Backup mit dd, nur partitionierten Bereich sichern

beatschubser

Cadet 3rd Year
Registriert
Nov. 2016
Beiträge
32
Hallo zusammen,

ich habe ein aktuelles Raspbian am Laufen, dessen root-Partition auf einen USB-Stick ausgelagert ist. Der Stick ist 16GB groß, die Partition darauf 8GB. Folgendes Script nutze ich, um den Stick zu backuppen:

Code:
sudo dd if=/dev/sda | gzip -1 > "/mnt/backups/dateiname.img.gz"

Das entpackte Image ist allerdings die vollen 16GB groß. Kann ich dd dazu bringen, nur den partitionierten Teil zu backuppen, so dass ich das Image auch auf einen 8GB-Stick spielen könnte?

Gruß
Dan
 
Davon ging ich auch aus und hatte es erst mit sda1 versucht - das wird allerdings mit "Datei oder Verzeichnis nicht gefunden" quittiert. Anbei noch ein paar Infos, um die Sache zu verdeutlichen:

Code:
pi@RPiSmartHome ~ $ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME     TYPE  SIZE MODEL
sda       disk   15G Cruzer
mmcblk0   disk  3,7G 
mmcblk0p2 part  1,2G 
mmcblk0p1 part   63M

Code:
pi@RPiSmartHome ~ $ df -h
Dateisystem                                   Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root                                      7,2G    3,7G  3,2G   54% /
devtmpfs                                       458M       0  458M    0% /dev
tmpfs                                          462M       0  462M    0% /dev/shm
tmpfs                                          462M    6,8M  455M    2% /run
tmpfs                                          5,0M    4,0K  5,0M    1% /run/lock
tmpfs                                          462M       0  462M    0% /sys/fs/cgroup
/dev/mmcblk0p1                                  63M     21M   42M   34% /boot
tmpfs                                           93M       0   93M    0% /run/user/1000
 
statt /dev/sda1, nimm /dev/root.
Aber ein rw gemountetes Dateisystem mit dd zu "sichern" ist eine sehr schlechte Idee.
 
HominiLupus schrieb:
statt /dev/sda1, nimm /dev/root

Gleiches Ergebnis - "Datei oder Verzeichnis nicht gefunden". Ich habe noch einen Hinweis in einem anderen Forum entdeckt:

There is only an sda1 if there is a partition table on the disk. If you formatted sda directly with ext4 it is normal to have no sda1.

Es sind also keine Partitionen auf dem Stick, weshalb er nur komplett kopiert werden kann. Wobei ich mich dann wundere, woher die 8GB für /dev/root herkommen.
 
Komisch. Was sagen denn fdisk -l, sfdisk -ls oder parted zu dem Stick?

Wie und womit hast du den Stick bzw. das Raspbian eingrichtet?
 
Ich habe das vor Jahren nach einer der vielen im Netz verfügbaren Anleitungen "move Raspbian root to USB" gemacht. Das originale Image auf der SD-Karte kann dabei unverändert bleiben, es wird allerdings die cmdline.txt angepasst, um auf den Stick zu verweisen:

Code:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda rootfstype=ext4 elevator=deadline rootwait

fdisk -l
Code:
Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        8192  137215  129024   63M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      137216 2715647 2578432  1,2G 83 Linux

Disk /dev/sda: 15 GiB, 16053960192 bytes, 31355391 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

sfdisk -ls
Code:
Device Boot Start     End   #cyls    #blocks   Id  System
/dev/mmcblk0p1        128    2143    2016      64512    c  W95 FAT32 (LBA)
		start: (c,h,s) expected (128,0,1) found (0,130,3)
		end: (c,h,s) expected (1023,3,16) found (8,138,2)
/dev/mmcblk0p2       2144   42431   40288    1289216   83  Linux
		start: (c,h,s) expected (1023,3,16) found (8,138,3)
		end: (c,h,s) expected (1023,3,16) found (169,10,33)
/dev/mmcblk0p3          0       -       0          0    0  Empty
/dev/mmcblk0p4          0       -       0          0    0  Empty
/dev/sda:  15677695

Disk /dev/sda: 15310 cylinders, 64 heads, 32 sectors/track
total: 19615487 blocks

Für parted bräuchte ich genauere Instruktionen ;)
 
Ich habe jetzt einen neuen Stick genommen und mit parted passend formatiert. 16GB Stick, eine primäre Partition zu 50% Größe -> 8 GB. Danach per rsync alle Dateien vom alten auf den neuen Stick geschoben.

Jetzt ist die Frage: Wie kann ich den neuen Stick so backuppen, dass sowohl die Partition als auch die 8GB übernommen werden? Wenn ich mit dd /dev/sdb sichere, nimmt er den ganzen Stick -> 16 GB. Wenn ich /dev/sdb1 sichere, sind es 8 GB, aber beim Einspielen des Images fehlt die Partition. Dann bin ich wieder bei der Ausgangssituation, dass es nur sdb gibt und kein sdb1.
 
Was du brauchst sind die Parameter bs (blocksize) und count von dd, sowie die Ausgabe von fdisk -l für deinen USB-Stick. Den Parameter bs stellst du auf den Wert, den fdisk dir hinter "Units:" anzeigt. Steht dann sowas wie "sectors of 1 * 512 = 512 bytes" wählst du also 512. Für den Parameter count wählst du den Wert, der hinter der Partition /dev/sdb1 in der Spalte "End" steht +1. Steht dort 12525, wählst du also count=12526.

Insgesamt sieht das ganze dann etwa so aus:
Code:
dd if=/dev/sdb of=/Pfad/zur/imagedatei.dd bs=512 count=12526
.
Beachte, dass das dd hier über den gesamten USB-Stick ausgeführt wird, nicht nur über sdb1.
Zurückspielen kannst du das ganze dann wie du es bisher auch schon machst.

Alternativ könntest du auch die Partitionstabelle und den Inhalt der Partition separat sichern, dann würde aber der Rückspielprozess komplizierter.
 
Zurück
Oben