u1000
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
Mit einem Loop-Device kann man eine Datei wie eine normale Partition/Festplatte ansprechen (losetup /dev/loop0 container_file) Wie geht das nun andersherum: Wie kann man ein Device als normale Image Datei ansprechen ? Z.B. /dev/sdb1 soll als /home/ich/image_sdb2.img lesend und schreibend verfügbar sein. Anwendung ? Setup sind zwei Raspberry, verbunden per ssh durchs Internet, an jedem hängt ein identischer USB Stick (/dev/sdb1) mit einem verschlüsseltem Dateisystem, z.B. Truecrypt oder Luks. Der Raspberry kennt und bekommt aber kein Passwort und kann damit den Stick nicht öffnen.
/dev/sdb1 soll nun vom ersten Raspberry zum zweiten mit rsync effizent transferiert werden, z.B. wöchentlich und nur das Delta.
Rsync kann aber nur mit Dateien und nicht mit Devices... Vielen Dank u1000
|
Vej
Moderator, Supporter
Anmeldungsdatum: 7. März 2013
Beiträge: 3391
|
Hallo u1000. u1000 schrieb: Mit einem Loop-Device kann man eine Datei wie eine normale Partition/Festplatte ansprechen (losetup /dev/loop0 container_file) Wie geht das nun andersherum: Wie kann man ein Device als normale Image Datei ansprechen ? Z.B. /dev/sdb1 soll als /home/ich/image_sdb2.img lesend und schreibend verfügbar sein.
Wie man das als Image-Datei macht weiß ich nicht, aber dieser Aussage hier würde ich nicht zustimmen:
Rsync kann aber nur mit Dateien und nicht mit Devices...
Rsync kann auch mit Ordnern. Spricht irgendetwas dagegen, dein /dev/sdb1 mit mount nach /home/ich/sbd2Ordner einzubinden und rsync diesen Ordner und eine der Optionen -a -d oder -b zu übergeben? Viele Grüße Vej
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
Vej schrieb: Spricht irgendetwas dagegen, dein /dev/sdb1 mit mount nach /home/ich/sbd2Ordner einzubinden
Ja: Mount ist nämlich nicht möglich, da der Stick ja verschlüsselt ist. Viele Grüße u1000
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11179
Wohnort: München
|
Du kannst dir rsync patchen (es gibt auf der offiziellen Webseite Patches: https://rsync.samba.org/ftp/rsync/src/rsync-patches-3.1.1.tar.gz) - da gibt es u.a. eine copy-devices.diff: This patch adds the --copy-devices option, which will try to copy
the data inside a device instead of duplicating the device node.
und eine write-devices.diff: This patch adds the --write-devices option, which will try to write
data into a device when used as a destination.
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Mit FUSE könnte man sowas machen. https://github.com/vi/fusefile - aber unbedingt auf Datenkorruption testen. Viele FUSE-Sachen sind nicht bugfrei. Oder du drehst den Spieß um und verschlüsselst von vorneherein nur eine Datei (ergo ein Loop-Device). Oder du programmierst dir das Delta selbst. 😉 Solange man keine Daten verschieben können möchte (bei Verschlüsselung sowieso nie), ist es kein Hexenwerk, Block für Block abzugleichen. Noch ein anderer Ansatz: https://github.com/mpalmer/lvmsync Aber dazu müsstest du dein System auch gut umkrempeln. Und letztlich muss genug Platz für den Snapshot vorhanden sein, auch ein Problem. Aber der Vorteil wäre daß für den Abgleich nicht erst beide Seiten umständlich das ganze Gerät einlesen müssten. Da die Änderungen direkt von LVM getrackt werden. Edit: Oh und ich sehe gerade, die lvmsync Readme verlinkt ganz unten auf ein paar andere Projekte die das direkt mit Blockdevices machen, so wie du es dir von rsync wünschst. Vielleicht ist ja was dabei für dich.
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
Hi, vielen Dank für die Antworten, werde mir das mal genauer anschauen. Viele Grüße u1000
|
chilidude
Anmeldungsdatum: 18. Februar 2010
Beiträge: 867
|
u1000 schrieb: Rsync kann aber nur mit Dateien und nicht mit Devices...
Das ist doch Unsinn! Jedes Blockdevice ist gleichzeitig ein File auf das du natürlich, entsprechende Rechte vorausgesetzt, lesend/schreibend direkt zugreifen kannst. Da rsync in der Lage ist Teilstücke einer Datei zu übertragen musst du auch nur /dev/sdx angeben.
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
chilidude schrieb: u1000 schrieb: Rsync kann aber nur mit Dateien und nicht mit Devices...
Das ist doch Unsinn!
Nein, Realität:
$ rsync /dev/urandom urandom.bin
skipping non-regular file "urandom"
|
chilidude
Anmeldungsdatum: 18. Februar 2010
Beiträge: 867
|
Autsch! "/dev/urandom" ist ein Charakter- und kein Blockdevice. (Kannst du mit "ls -la" sehen). Probier es bitte mal mit einem richtigem Laufwerk.
|
Krümelomat
Anmeldungsdatum: 18. Oktober 2010
Beiträge: 1077
|
Du kannst z.B. die Device selbst als Loop Device einhängen: http://www.pro-linux.de/artikel/2/116/laufwerke-verschluesseln-mit-loop-aes.html Oder du kannst auf die Device die Image.img speichern und dann die Device in /home/ich/ einhängen.
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
chilidude schrieb: "/dev/urandom" ist ein Charakter- und kein Blockdevice.
Das ist dem rsync aber egal:
$ sudo rsync /dev/sda sda.img
skipping non-regular file "sda"
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
Krümelomat schrieb: Du kannst z.B. die Device selbst als Loop Device einhängen:
Das Ergebnis von losetup ist immer wieder ein Loop Device, also ein Blockdevice, und kann von rsync nicht gelesen werden.
Oder du kannst auf die Device die Image.img speichern
Geht auf dem Raspberry nicht, das OS ist auf einer 4GB SD Karte, und der externe USB Stick hat ~100GB. Vielel Grüße u1000
|
Krümelomat
Anmeldungsdatum: 18. Oktober 2010
Beiträge: 1077
|
Du speicherst Image.img auf dem 100GB USB-Stick und hängst den 100GB USB-Stick in /home/ich/ ein. Hängst Image.img von /home/ich/ als Loop Laufwerk ein und behandelst dieses mit rsync wie ein normales Laufwerk auch.
|
u1000
(Themenstarter)
Anmeldungsdatum: 2. Oktober 2011
Beiträge: 1850
|
Krümelomat schrieb: Du speicherst Image.img auf dem 100GB USB-Stick
geht nicht: auf dem Stick ist nichts frei und bereits ein verschlüsseltes Dateisystem, diese soll von A nach B transferiert werden.
und hängst den 100GB USB-Stick in /home/ich/ ein.
geht auch nicht, da es ein verschlüsseltes Dateisystem ist und der Raspberry das Passwort nicht kennt und auch nicht kennen soll.
Hängst Image.img von /home/ich/ als Loop Laufwerk ein
du hast losetup nicht verstanden: Das Ergebnsi ist kein Image.img, sondern immer ein Loop Device.
und behandelst dieses mit rsync wie ein normales Laufwerk auch.
rsync kann keine "Laufwerke", nur normale Dateien (keine "Charakter- / Blockdevice"), wie wir oben schon gesehen und getestet haben Viele Grüße u1000
|
Krümelomat
Anmeldungsdatum: 18. Oktober 2010
Beiträge: 1077
|
Ah, jetzt versteh ich. Na das ist ein sehr ausgefallener Wunsch. Evtl. könnte man mit einer Art Treiber ein Interface herstellen, dass die Image.img und das USB-Laufwerk verbindet.
|