kopieren_auf_verschiedene_weisen

kopieren auf verschiedene Weisen

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
/home/http/wiki/data/pages/kopieren_auf_verschiedene_weisen.txt · Zuletzt geändert: von manfred