Marc Santhoff wrote:
> Am Mittwoch, den 11.05.2011, 11:16 +0200 schrieb Oliver Fromme:
> > Mir ist nicht vollkommen klar, warum Du das tun möchtest,
> > vorausgesetzt, ich habe Dich überhaupt richtig vestanden.
>
> Simple Sache schwer zu erklären:
>
> Es gibt bereits mehrere Backup-Platten (extern, USB) die mit Daten
> befüllt sind. Manchmal muß eine gewechselt werden oder es kommt eine
> Platte dazu. Auch bei einem Wechsel werden die Altdaten nciht kopiert.
>
> Bevor ich die Backup- und Kopierskripte benutzen kann, müssen alle Pfade
> vorhanden sein, was mittlerweile eine Menge sind.
Ok ... Mein Backup-Skript legt die Pfade (/backup/$host/$datum)
immer selbst an.
> > Aber Deiner Beschreibung nach sollte das folgende Kommando
> > das Gewünschte tun:
> >
> > # cd $WURZEL
> > # echo '*/*/*/*' | mtree -cin -X /dev/stdin > mydist.mtree
> >
> > Damit bekommst Du die Verzeichnisse bis in die dritte Ebene
> > (die vierte Ebene wird vom vierten Stern ausgeschlossen).
>
> Ah ja, das sieht sehr gut aus. Testen kann ich erst späeter ...
> Auf echo wäre ich z.B. als letzte gekommen.
Das echo ist nur ein »work-around« dafür, dass man Excludes
bei mtree nicht direkt angeben kann, sondern dass bei der
Option -X einen Dateiname erwartet wird, wo die Excludes
drin sind. Man könnte auch eine temporäre Datei verwenden,
die nur die Zeile »*/*/*/*« enthält.
Manche Shells bieten auch eine Möglichkeit, auf der Kommando-
zeile Strings direkt als Datei zu verfüttern. Bei der zsh
geht das z.B., indem man einen sogenannten here-string "<<<"
mit process-substitution "=()" verknüpft:
# cd $WURZEL
# mtree -cin -X =(<<<*/*/*/*) > mydist.mtree
Übrigens: Wenn man einfach nur ein »Skelett« von Verzeich-
nissen kopieren möchte, geht das auch ganz ohne mtree. Das
Tool find(1) hat eine Option für die Verzeichnistiefe. Die
Ausgabe davon kann man dann an mkdir (via xargs) füttern:
# cd $WURZEL_ALT
# find . -type d -depth -4 > mydirs.txt
# cd $WURZEL_NEU
# xargs mkdir < mydirs.txt
-depth -4 bedeutet »Tiefe kleiner als vier«. Nachteil:
mtime und permissions werden nicht kopiert. Aber ich denke,
dass das in Deinem Fall nicht schlimm ist.
Wenn man mtime und permissions mitkopieren möchte, könnte
man cpio bemühen:
# cd $WURZEL_ALT
# find . -type d -depth -4 | cpdio -dump $WURZEL_NEU
Nachteil hierbei: Das geht nur in einem Rutsch. Man kann
nicht den Verzeichnisbaum erst in einer Textdatei speichern
(wie bei mtree), um ihn später zu erzeugen.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd "One of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs." -- Robert Firth To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 11 May 2011 - 17:53:00 CEST