Tar aufrufen

Hallo, ich möchte
(cd subdirc &&) tar -cvzf ar1.tar.gz (höchste Kompression außer 7za) 00FileName*
aufrufen und den output im Log speichern,
wie mache ich das? Bitte kskb posten.
Grüße
PS: Das muss geschehen, wenn viele Files in subdirc sind, aber alles ohne cron(tab), weil das nimmt ja nur eine Ziele.

find . -name 00FileName* -exec tar -cvzf ar1.tar.gz '{}' \;

bye
TT

Dateien sollen gezählt werden, spezieller dateiname ar mit Datum usw., aus Java heraus. Das geht doch in einer Zeile gar nicht, also wie komm ich in Java an Kommandozeile?

bzip2 als auch xz sind nur zwei Beispiele für Programme, die in der Regel eine höhere Kompression erreichen als gzip.

Ebenfalls falsch. Du kannst problemlos mehrere Befehle in eine Zeile schreiben und diese mit einem Semikolon voneinander trennen. Alternativ kannst du auch ganz einfach ein Shellscript schreiben und dieses ausführen lassen.

Warum möchtest du das unbedingt mit Java machen? Ein Shellscript ist da deutlich komfortabler und integriert sich besser in ein *nix.

Want to invoke a linux shell command from Java - Stack Overflow

[quote=Unregistered]Hallo, ich möchte […] aufrufen und den output im Log speichern,[/quote]hätte ich genauer lesen sollen. Das hier macht’s

tar -cvzf ar1.tar.gz 00FileName* >> log.txt
tar -cvzf ar1.tar.gz 00FileName* | tee log.txt | wc -l >> log.txt

bye
TT

Ja, hätte ich genauer schreiben sollen,

  1. Verzeichnis wechseln,
  2. Dateien (fangen mit 00 an) zählen,
  3. Dateien (fangen mit 00 an) auflisten,
  4. wenn Dateien (fangen mit 00 an) insgesamt Größe >= 50 MiB,
  5. dann soll .tar.gz erstellt werden,
  6. mit Dateinamen: Millisekunden + yyyy-mm-dd-hh-0min-0sec,
  7. output (auch err) von tar prüfen und nicht speichern,
  8. in zyklischen Abständen 1. wiederholen.
    Verstehst du jetzt so ein bisschen, wozu ich Jav’ dabei brauche?
    Alles in eine Crontab-Zeile wäre vielleicht viel, kein externes Skript.
    Und Grüße zurück.

Warum kein Bash-Script ? Das von dir verlangte kann man, wie schon gepostet, mit entsprechenden Kommandos recht einfach umsetzen, sowohl was das rekursive Durchlaufen von Verzeichnissen angeht, Prüfung auf gewünschten Namen und Dateigröße als auch Verarbeitung von OUT und ERR. Und das kann man dann als Cron eintragen und den Rest vom System erledigen lassen.

Warum es jetzt .tar.gz sein muss wenn du eh nur eine Datei “zippen” willst (zumindest wenn ich das soweit korrekt verstanden habe) wird mir auch nicht klar. TAR ist ein Archiv-Format, fasst also mehrere Daten zu einer zusammen, GZip ist ein Kompressionsalgorithmus um eine Datei zu komprimieren. Man nutzt halt deshalb .tar.gz weil tar halt nur archivieren, aber nicht komprimieren, und gzip nur komprimieren aber nicht archivieren kann. Wenn es nur darum geht eine Datei zu komprimieren ist TAR überflüssig und erzeugt nur unnötig overhead, da reicht GZip aus. Und da GZip ausreicht kannst du dann auch gleich innerhalb von Java mit GZip*Stream arbeiten und musst nicht mal ein externes Command aufrufen.

Geändert von SlaterB (Heute um 12:08 Uhr) Grund: bereinigt um Kommentare zu CyborgBeta…

really ?

PN gesehen? wenn nicht dann hier Hinweis,
sonst lieber hier nicht weiter ausbreiten