repexx schrieb:
/root/files/
in dem verzeichnis files sind um die 30-40 ordner.
30-40 Ordner im root-Home erscheint mir ziemlich viel, aber gut - was geht es mich an.
Das ganze was jetzt dabei passieren soll. Da ist zb ein Ordner unter files der heißt Dies ist ein schöner Ordner.
Nicht nur Blanks, auch Umlaute im Ordnernamen? Na, hoffen wir mal, daß das gut geht, und die Ordner nie auf andere Systeme kopiert werden müssen. ☺ Aber keine Bange, ...
Dann soll er diesen Ordner packen mit den Files die dort drin sind. Zu dieso.part1.rar etc.
Dies soll ebenso passieren mit allen anderen Ordern.
Das habe ich so auch verstanden.
Was irgenwie auch noch gut wäre, wenn er die files die per rar erstellt wurden, genau in den ordner packt der gepackt wurde. Und nur die files gelöscht werden die zuvor in dem ordner sind.
Dann hast Du anschließend 40 Ordner mit je einer Datei im Ordner. Eigentlich nicht passend zum Grund, wieso man Ordner hat.
Insbesondere geht das nur mit Verschiebebahnhof - das Archiv darf sich ja nicht selbst enthalten. Wenn Du den Ordner /root/files/zyxel packst, der zu /root/files/z.rar wird, und in zyxel ist eine Datei a, dann wird die ja angefaßt und nach z.rar gepackt bevor z.rar angefaßt wird, und später wird versucht z.rar in sich selbst zu packen. Das mußt Du rar also entweder sagen, daß er das nicht tun soll, oder das Archiv nach /tmp packen z.B., den Verzeichnisinhalt löschen, und dann das Archiv hineinschieben. Gut - das wäre auch wichtig, um die Ordner
nicht beide nach dieso.rar zu packen.
Ich hab das ganze leider nicht so verstanden, wie ich mit dem Script vorgehen soll. Also ich erstell eine .sh Datei und was soll ich da jetzt genau reinschreiben?
#!/bin/bash
#
#
#
verz="$1"
rarname=$(echo $verz | tr '[A-Z]' '[a-z]' | sed 's/\([a-z]\)[a-z]*/\1 /g;s/ //g')
rar a -m0 -v262144000b .root.tmp.rar "$verz" && find "$verz" -mindepth 1 -delete
mv .root.tmp.rar "$verz"/$rarname.rar
Diese soll ich dann in /usr/bin denke ich mal packen
Verschieben, nicht packen. Und nein - nach /root/bin, wenn es root ausführen soll.
Dazu /root/bin anlegen, wenn es noch nicht existiert, und in den Pfad aufnehmen.
und diese ausfürhbar machen. So das man diese dann über shell mit dem befehl, so wie die Datei heißt ausführen kann?
Nein, mittels find für jedes Verzeichnis ausführen. Aber abweichend von oben muß man auch mindepth verwenden:
find ./ -mindepth 1 -maxdepth 1 -type d -exec rar250.sh "{}" \;
Du kannst auch rar250.sh irgendwo speichern, und mit absolutem Pfad aufrufen, z.B.:
find ./ -mindepth 1 -maxdepth 1 -type d -exec /home/repexx/bin/rar250.sh "{}" \;
oder an Ort und Stelle speichern, und so aufrufen:
find ./ -mindepth 1 -maxdepth 1 -type d -exec ./rar250.sh "{}" \;
Vorsicht! Der delete-Befehl ist nicht umkehrbar!