linux-l: tar

JSC JSC at jsc.tfh-berlin.de
So Aug 26 22:28:19 CEST 2001


* Markus Hubig <lord.aragon at gmx.net> [26.08.2001 15:52]:
[..]
> Seltsam ist nur das in meiner deutschen Manpage folgendes steht:
> 
> | -u     ersetzt Dateien, die neuer als eine bereits archivierte Version
> |        sind.  Ist eine Datei noch nicht archiviert, so wird sie eingefügt
> 
> In der englischen heist es dagegen:
> 
> | -u, --update
> |        only append files that are newer than copy in archive
> 	      
> Und "append" heist korreckt übersetzt wohl eher "anhängen" und nicht
> ersetzen! Also was jetzt: anhängen oder ersetzten?
> 
da alles mal mit Tape ARchives anfing, sicherlich anhaengen. das mit dem
einkleben ist auf tapes ja eher schwierig.

> Jetzt bleibt nur noch die Frage ob und wenn wie man die ältere Version
> einer Datei extrahieren kann?
> 
das problem wird sich durch ein pattern auf der kommandozeile wohl
nicht erschlagen lassen, da dies immer auf den namen und somit auf beide
versionen matcht. eine mischung aus sigstop/sigcont und einem strace zur
kontrolle koennten evtl. zum erfolg fuehren.
zweite idee: das file jeweils zuegig umbenennen:
 prozess1:
  let i=1; while true; do
     if [ -f datei ]; then
        mv datei datei.$i
        let i+=1
     fi
  done
 prozess2:
  tar -xzf tarfile

beides ist bei kleinen archiven ziemlich zeitkritisch. das zweite verfahren
sollte aber eher funktionieren. im schlimmsten fall muss man beides 
kombinieren und vor allem naeher am system programmieren:
  parent:
    child1: move_prozess     # background
    child2: tar -xzf tarfile # background
    while( exists(child2) ){
       sigstop(child2);
       sleep(1);
       sigcont(child2);
    }
    kill(child1);

bye
Jens



Mehr Informationen über die Mailingliste linux-l