====== kopieren auf verschiedene Weisen ====== siehe auch: [[Hilfsprogramme des Dateisystems]] ===== kopieren eines Verzeichnisbaumes bei dem alle Flags unverändert bleiben sollen ===== In diesem Beispiel werden die Dateien und Unterverzeichnisse von "/DATENOLD" nach "/DATENNEW" kopiert, wobei alle Flags erhalten bleiben sollen! 1. mit "cp" (symbolische Links bleiben erhalten): # cp -PRp /DATENOLD /DATENNEW 2. mit "cpio" (symbolische harte Verlinkungen bleiben erhalten): # cd /DATENOLD # find * -print | cpio -pdmv --sparse /DATENNEW 3. mit "tar" (symbolische harte Verlinkungen bleiben erhalten): # cd /DATENOLD # tar -cf - . | tar xvpf - -C /DATENNEW oder # tar -cf - . | (cd /DATENNEW ; tar -xvpf -) 4. mit "pax" (symbolische harte Verlinkungen bleiben erhalten): # cd /DATENOLD # pax -rw . /DATENNEW oder mit Abfrage fuer jede einzelne Datei (interaktiv): # pax -rw -i . /DATENNEW ==== Das folgende Script kann wie ein normaler "cp"-Befehl aufgerufen werden ==== #!/bin/sh #---------------------------------------# # treecp [Quell-Verz.] [Ziel-Verz.] # #---------------------------------------# find $1 -print | cpio -pdmv --sparse $2 ######################################### und folgendem Befehl: # chmod 755 treecp ==== rsync ==== Der schnellste Weg zu syncronen Daten! (Wichtig ist hier, ob "www" oder "www/" geschrieben wird! ohne "/" ist das Verzeichnis gemeint und mit "/" ist der Inhalt des Verzeichnisses gemeint!) einfach mal den Inhalt von "''/var/lib/mysql/''" in das Verzeichnis "''/mnt/''" kopieren: # rsync -av /var/lib/mysql/ /mnt/ Der Inhalt des lokalen Verzeichnisses "''www''" wird auf dem Rechner "''192.168.8.2''" in das Verzeichnis "''/sik''" abgelegt alle Dateien die auf dem Quellrechner nicht existieren werden auf dem Zielrechner geloescht. # rsync -alz -e ssh --delete www/ admin@192.168.8.2:"/sik" Das lokale Verzeichnis "''www''" wird auf dem Rechner "''192.168.8.2''" in das Verzeichnis "''/sik''" als "''/sik/www/''" abgelegt alle Dateien die auf dem Quellrechner nicht existieren werden auf dem Zielrechner geloescht. # rsync -alzrvpoge ssh --delete www admin@192.168.8.2:"/sik" # rsync -alzrvpoge "ssh -c blowfish -2" --delete www root@192.168.8.2:"/sik" # rsync -aOSWrtlvogze "ssh -c blowfish -2" --compress-level=1 --numeric-ids --delete --chmod=Dug+rwx,Do+rx,Fug+rw,Fo+r www root@192.168.8.2:"/sik" # rsync -aOSWrtlvogze "ssh -c blowfish -2" --compress-level=1 --numeric-ids --delete --chmod=Dug+rwx,Do+rx,Fug+rw,Fo+r /sik/www root@192.168.8.2:"/sik" ===== weitere Beispiele ===== ==== CPIO ==== (Es ist "DAS" universelle archivierprogramm unter Unix.) [Die Pfade können als absolut oder relativ angegeben werden.] CPIO kann mit dem Dateisystem nicht umgehen und benötigt dazu ein weiteres Programm wie z.B. "find". Es ist aber auch möglich eine Dateiliste, die mit FIND erstellt wurde zu verwenden. Soeine Dateiliste kann z.B. mit "find mnt > dateilistemitpfad.txt" erstellt und anschliessend reduziert oder ergänzt 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 ==== PAX ==== (Es versteht die verschiedenen Formate von "cpio" und ist so leicht zu handhaben wie "tar", kann im Gegensatz zu "cpio" aber nicht relativ zum Pfad auspacken.) im TAR-GZ-kompatibelen Format: $ pax -wzf DATEN.tgz /DATEN Auflisten des Archivinhaltes: $ pax -zf DATEN.tgz im neuen portablen Format mit CRC-Pruefsumme zur Fehlerkorektur: $ pax -wzx sv4crc -f DATEN.crc.gz /DATEN Auflisten des Archivinhaltes: $ pax -zf DATEN.tgz verpacken in 699 MB grosse Archivteile: (Ab dem zweiten Archivteil muss der Archivname von Hand eingegeben werden!) $ pax -wx sv4crc -B 699m -f DATEN.crc [QUELLE] $ pax -wzx sv4crc -B 699m -f DATEN.crc.gz [QUELLE] INHALTSLISTE: pax -f DATEN.crc pax -zf DATEN.crc.gz ENTPACKEN: $ pax -rp op -f DATEN.crc oder $ pax -rzp op -f DATEN.crc.gz bzw $ pax -rzp op -f DATEN.tgz 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 Es werden alle Dateien ausgepackt, die dem User "root" und der Gruppe "bin" angehoeren: $ pax -rz -pop -U root -G bin -f DATEN.tgz Wenn die User-ID's (mangels Rechte) nicht alle wieder hergestellt werden koennen (nur "root" kann alle User-ID's wider herstellen): $ pax -rz -pp -f DATEN.tgz Wenn die Flags nicht exakt wieder hergestellt werden muessen: $ pax -rzf DATEN.tgz