(Bash Script) autom. umount eines Verzeichnisses in einem symbolic link

Reaver

Ensign
Registriert
Juli 2005
Beiträge
173
Vielleicht kann mir hier einer helfen,

ich möchte ein bash-script schreiben,
was folgendes tut:

man hat einen symbolic link auf ein mount-verzeichnis, z.B.:
file1. -> /tmp/backup/file.bp

der link soll gelöscht werden, (unlink oder rm, ist egal) aber vorher soll das Verzeichnis nicht mehr gemountet sein (umount muss vorher ausgeführt werden)

Das Problem ist aber, dass es files gibt, die nicht verlinkt sind. Das muss vorher überprüft werden und da soll nichts gemacht werden.
 
Du willst nur symlinks, nicht jedoch effektive dateien löschen? Prüf einfach vorher, ob's ein symlink ist. Oder versteh ich da was falsch?
 
Ok, ich versuche ich nochmal genauer zu beschreiben.

Es kann vorkommen, dass die Datei wirklich existiert oder aber nur ein symbolic link auf eine Datei innerhalb eines gemounteten Verzeichnisses ist. Wenn die Datei wirklich existiert, dann soll sie gelöscht werden, wenn nur ein Link existiert, soll vorher das gemountete Verzeichnis ausgehängt werden (umount). Und dann erst der Link gelöscht werden.

Hoffe, das ist verständlicher.
 
Nein, wirklich klar ist's nicht.

Alle Dateien/Symlinks in einem Verzeichnis? Wieso machst du nicht einfach unmount, delete? Ich versteh den Sinn nicht. Du willst ja doch alles löschen.
 
Der Sinn dabei ist schon komplexer, über ein Skript wird eine Datei generiert, NUR eine Datei einem Verzeichnis. Sie ist entweder eine normale Datei oder ein symbolischer Link auf eine Datei in einem mount-verzeichnis, der auch vorher autom. erstellt wurde, mit einem skript.
Das Löschskript muss nun noch so angepasst werden, dass die erzeugte Datei wieder löscht. Das macht es ja auch, mit einen einfachen rm-Befehl, und es werden auch so die erzeugten Links gelöscht, wenn die erzeugt wurden. Aber der mount bleibt bestehen und dadurch werden immer mehr verzeichnisse gemountet, die ich nicht haben will.
 
Code:
datei="/pfad/zur/datei"
if [ -L "$datei" ]; then
    target=$(readlink "$datei")
    # jetzt noch mountpoint herausfinden ausm target, und unmounten.
fi
rm "$datei"

sowas in der art?
 
Genau sowas suche ich. Hast mich doch verstanden.
Wie finde ich das jetzt mit dem target raus.

wenn ich jetzt habe:
file1 -> /tmp/backup/file.bp

dann müsste ich manuell sowas hier machen:
umount /tmp/backup

Das konnte man doch irgendwie rausparsen.
 
Code:
# angenommen
target="/tmp/backup/file.bp"
mountpoint="${target%/*}"

if mountpoint -q "$mountpoint"; then
    umount "$mountpoint"
fi

Das bedingt aber, dass die Datei nicht in einem Unterverzeichnis liegt.
 
@bu1137 Dank dir, hat alles geklappt, hast mir wirklich sehr geholfen.
 
Zurück
Oben