BACK ..
ERSTELLEN EINES ARCHIVES mit cpio (+ ssh): ========================================== (cpio ist das Original und nach meiner Meinung das Beste, denn tar kann keine Archive mit Prüfsumme anlegen und pax kann keine Archive relativ zum Pfad auspacken) ################################################################################ (Es ist "DAS" universelle archivierprogramm unter Unix.) [Die Pfade koennen als absolut oder relativ angegeben werden.] CPIO kann mit dem Dateisystem nicht umgehen und benoetigt dazu ein weiteres Programm wie z.B. "find". Es ist aber auch moeglich eine Dateiliste, die mit FIND erstellt wurde zu verwenden. Soeine Dateiliste kann z.B. mit "find mnt > dateilistemitpfad.txt" erstellt und anschliessend reduziert oder ergaenzt werden. Hier zeige ich nur das archivieren, unter Verwendung des neuen portablen Formates mit CRC-Pruefsumme zur Fehlerkorrektur. Soll ein TAR-Archiv erstellt werden, muss der Parameter "H newc" durch "H ustar" ersetzt werden. Dieses Archiv kann "gzip" etwas besser und bedeutend schneller packen als "bzip2"! archivieren: > echo "dateiname" | cpio -oH newc > archiv.crc oder > cpio -oH newc < dateinamenliste.txt > archiv.crc oder > find verzeichnis | cpio -oH newc > archiv.crc hier werden nur die Dateien archiviert, die "xyz" im Pfad enthalten: > find /DATEN -type f | grep -v 'xyz' | cpio -ovH crc > DATEN.crc entpacken (Mit absoluten Pfadnamen, soweit gespeichert!!!): > cpio -idmv < archiv.crc oder > cat archiv.crc | cpio -idmv entpacken (mit relativem Pfad): > cpio -idmv --no-absolute-filenames < archiv.crc archivieren + verpacken: > echo "dateiname" | cpio -oH newc | gzip -9 > archiv.crc.gz oder > cat dateinamenliste.txt | cpio -oH newc | gzip -9 > archiv.crc.gz oder > find verzeichnis | cpio -oH newc | gzip -9 > archiv.crc.gz CRC-Pruefsumme kontrollieren und Inhalt auflisten: > cat archiv.crc.gz | gzip | cpio -it --only-verify-crc > zcat archiv.crc.gz | cpio -it --only-verify-crc entpacken (Mit absoluten Pfadangaben, soweit gespeichert!!!): > cat archiv.crc.gz | gzip | cpio -idmv > zcat archiv.crc.gz | cpio -idmv entpacken (Mir relativem Pfadnamen.): > cat archiv.crc.gz | gzip | cpio -idmv --no-absolute-filenames > zcat archiv.crc.gz | cpio -idmv --no-absolute-filenames ENTPACKEN: cat DATEN.tgz | gunzip | cpio -idmv --no-absolute-filenames bzw.: cat DATEN.crc.gz | gzip | cpio -idmv --no-absolute-filenames oder (wenn es nicht im absoluten Pfad, sondern in ein Unterverzeichnis soll) $ cpio -idmv --no-absolute-filenames < DATEN.crc oder $ cat DATEN.crc.gz | gunzip | cpio -idmv --no-absolute-filenames bzw $ cat DATEN.tgz | gunzip | cpio -idmv --no-absolute-filenames ############################################################################### # UND JETZT MIT SSH VERSCHLUESSELT UEBERS NETZ ============================================ (Siehe auch mal auf der Backup-Seite von FreeBSD nach.) ############################################################################### # Das Verzeichnis "/mnt" von "192.168.0.100" wird per SSH nach "/mnt" auf "localhost" kopiert. $ (ssh fritz@192.168.0.100 "find /mnt | cpio -oH crc")|(cpio -idmv) Alle Dateien und Verzeichnisse, die nicht mit einem Punkt beginnen, sollen aus dem Homeverzeichnis von Fritz, vom Rechner "192.168.0.100" per SSH in das aktuelle Verzeichnis auf "localhost" kopiert werden. $ (ssh fritz@192.168.0.100 "find * | cpio -oH crc")|(cpio -idmv) Die Dateien und Verzeichnisse, die mit einem Punkt beginnen, sollen aus dem Homeverzeichnis von Fritz, vom Rechner "192.168.0.100" per SSH in das aktuelle Verzeichnis auf "localhost" kopiert werden. $ (ssh fritz@192.168.0.100 "(ls -a | grep -v '^\.\.' | grep -v '^\.$' | grep '^\.' | xargs find) | grep -v '^\.\.' | grep '^\.' | cpio -oH crc")|(cpio -idmv) jetzt mit Kompression, dann gehts schneller uebers Netz: $ (ssh fritz@192.168.0.100 "find /mnt | cpio -oH crc | gzip -9")|(gunzip | cpio -idmv) Das Verzeichnis "/mnt" von "localhost" wird per SSH nach "/mnt" auf "192.168.0.100" kopiert. $ (find /mnt | cpio -oH crc | gzip)|(ssh fritz@192.168.0.100 "gunzip | cpio -idmv") hier werden die Daten direkt als neues portables Archiv mit CRC auf dem entfernten Rechner abgelegt: $ (find /mnt/ -type f | cpio -ovH crc) | ssh fritz@192.168.0.100 "cat > /tmp/mnt.crc" mit Kompression: $ (find /mnt/ -type f | cpio -ovH crc | gzip -9) | ssh fritz@192.168.0.100 "cat > /tmp/mnt.crc.gz" mit Kompression auf dem anderen Rechner: $ (find /mnt/ -type f | cpio -ovH crc) | ssh fritz@192.168.0.100 "cat | gzip -9 > /tmp/mnt.crc.gz" jetzt wird gesaugt und ausgepackt: $ (ssh fritz@192.168.0.100 "cat mnt.tar") | (cd tmp ; cpio -idmv) $ (ssh fritz@192.168.0.100 "cat mnt.tar") | (cd tmp ; cpio -idmv --no-absolute-filenames /tmp) hier das TGZ-Archiv: $ (ssh fritz@192.168.0.100 "cat mnt.tgz") | (cd tmp; gunzip | cpio -idmv) $ (ssh fritz@192.168.0.100 "cat mnt.tgz") | (cd tmp; gunzip | cpio -idmv --no-absolute-filenames /tmp) die Dateien vom entfernten Rechner werden gesaugt und als Archiv abgelegt: mit Kompression auf dem lokalen Rechner (um das Netz zu entlasten): $ (ssh fritz@192.168.0.100 "find /mnt | cpio -ovH crc" | gzip -9) | (cat > /tmp/mnt.crc) mit Kompression auf dem entfernten Rechner (um die lokale mashine zu entlasten): $ (ssh fritz@192.168.0.100 "find /mnt | cpio -ovH crc") | (cat | gzip -9 > /tmp/mnt.crc.gz) und jetzt nicht "saugen", sondern "pumpen": mit Kompression auf dem lokalen Rechner (um das Netz zu entlasten): mit Kompression auf dem entfernten Rechner (um die lokale mashine zu entlasten): $ (ssh fritz@192.168.0.100 "find /mnt | cpio -ovH newc") | (cat > /tmp/mnt.tar) ################################################################################ Archiv in 699 MB grosse Portionen aufteilen (um es besser auf CD zu brennen): > split -b 699m ARCHIVDATEI.crc ARCHIVDATEI.crc. ARCHIVDATEI.crc.aa ARCHIVDATEI.crc.ab ARCHIVDATEI.crc.ac in ISO-Images umwandeln: ls ARCHIVDATEI.crc.?? | while read ARCHIVT do mkisofs -U -r -input-charset iso8859-15 -o ${ARCHIVT}.iso ${ARCHIVT} done ARCHIVDATEI.crc.aa.iso ARCHIVDATEI.crc.ab.iso ARCHIVDATEI.crc.ac.iso