Inhaltsverzeichnis
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
