staging.inyokaproject.org

Welcher Back in Time-Snapshot ist das Vollbackup?

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Susegecko

Anmeldungsdatum:
31. März 2010

Beiträge: Zähle...

Hallo,

beim Betrachten meines Backupordners ist mir etwas seltsames aufgefallen. Dort sind derzeit 6 Snapshots gespeichert (intelligentes Behalten von Snapshots ist aktiviert). Der vierte (!) hat ungefähr die Größe, die man von einem Voll-Backup erwarten würde, die anderen haben die Größe, die man von einem Backup der jeweils geänderten Dateien erwarten würde. Warum enthält irgend ein Snapshot "in der Mitte" das Vollbackup?

Logischerweise würde man doch davon ausgehen, dass der älteste Snapshot das Vollbackup ist und die neueren nur die jeweils geänderten Dateien enthalten. Alternativ könnte auch der jeweils neueste Snapshot das Vollbackup sein und die älteren nur die Changes. Das wäre ja beides nachvollziehbar. Nur so, wie es BackInTime macht, macht es für mich keinen Sinn. Kann mir da jemand weiterhelfen?

TIA

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Alternativ könnte auch der jeweils neueste Snapshot das Vollbackup sein und die älteren nur die Changes.

Das passt doch eigentlich zu...

Warum enthält irgend ein Snapshot "in der Mitte" das Vollbackup?

...wenn später neue Teilbackups dazukamen, so dass ein Vollbackup in der Mitte ist.

Sinn macht ein Teilbackup (differentiell) ohne vorheriges Vollback wohl trotzdem nicht. Möglicherweise wurde das Vollbackup ganz am Anfang aus Platzgründen gelöscht, die darauf aufbauenden diff. Backups jedoch (noch) nicht?

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Es werden doch Hardlinks verwendet für das Backup, würde dabei nicht ein sequentielles Backup automatisch zum vollen Backup wenn es der letzte Verweis mittels Hardlink ist?

posti

Anmeldungsdatum:
30. März 2009

Beiträge: 2086

Hi

Benutze BiT zwar selber, sauge mir aber gerade eine Erklärung aus den Fingern ...

Kann es sein, daß BiT nur alle X-Mal ein Voll-Backup macht und jetzt gerade eben zwei differenzielle Backups danach gespeichert wurden?

Sin den 'leichten' Backups, sind dort die unveränderten Files ebenfalls via Hard-Link (korrigiert wegen Vorpost) verlinkt, also ein Umkopieren eines der kleinen Backups ergibt ein wesentlich größeres Ziel? (Da hier auch die Verknüpfungen komplett, also als File, nicht als Verknüpfung, kopiert wird)

Soviel zu meiner Theorie

*Edit* Soft- zu Hard-Links geändert

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

UrbanFlash schrieb:

Es werden doch Hardlinks verwendet für das Backup, würde dabei nicht ein sequentielles Backup automatisch zum vollen Backup wenn es der letzte Verweis mittels Hardlink ist?

Man bräuchte doch trotzdem erstmal ein Vollbackup, zu dem man Hardlinks setzen kann, oder? Hardlinks zum nicht gesicherten Original machen ja keinen Sinn, dann wäre es kein Backup mehr. Obwohl, doch, dazu sind Hardlinks ja da. Und die brauchen ja kaum Platz. Aber wie BiT das gelöst hat, weiß ich nicht.

Edit: Für ein richtiges Backup, also auf anderem Datenträger bzw. wenigstens anderer Partition, ist dies natürlich ohne ein Vollbackup nicht möglich, also nur Hardlinks ausgeschlossen, da diese nur innerhalb desselben Dateisystems (derselben Partition) wirksam sind.

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Ich meinte auch nicht Hardlinks auf die Originale, sondern Hardlinks vom sequenziellen Backup auf das Vollbackup...

Daten bleiben auf einem Datenträger "bestehen" bzw abrufbar, solange zumindest ein Verweis darauf besteht, dafür reicht auch ein Hardlink. Deshalb könnte man das Vollbackup löschen und es wird einfach das nächste Backup (das aus Änderungen voll und Rest Hardlinks auf Vollbackup besteht) zu einem Vollbackup.

Sicher bin ich mir dabei ja nicht, vielleicht übersehe ich was.

primus_pilus Team-Icon

Ehemalige
Avatar von primus_pilus

Anmeldungsdatum:
8. Oktober 2007

Beiträge: 9144

Es ist so wie UrbanFlash schon andeutete.

Hintergrund: In einem Dateisystem verweist ein Hardlink auf den Inode einer Datei. Diese Datei sieht man dann im Dateimanager:

touch ~/test   # Datei erstellen, bzw. ersten Hardlink setzen

ls -li ~/test
16253120 -rw-r--r--  1 thomas thomas     0 2011-08-21 16:41 /home/thomas/test

die Datei ~/test hat hier die Inode-Nr. 16253120 und hat 1 Hardlink. Man kann nun auf diesen Inode 16253120 beliebig viele Hardlinks setzen. Das bedeutet im Dateimanager taucht sie jedes mal als einzelne Datei auf, obwohl es sich physikalisch, auf dem Datenträger, um die selben Daten handelt:

ln ~/test ~/Downloads/test   # zweiten Hardlink setzen

ls -li ~/Downloads/test
16253120 -rw-r--r-- 2 thomas thomas 0 2011-08-21 16:41 /home/thomas/Downloads/test

ls -li ~/test
16253120 -rw-r--r-- 2 thomas thomas 0 2011-08-21 16:41 /home/thomas/test

Das Spiel kann man beliebig wiederholen. Die ursprünglichen Daten gelten übrigens erst als gelöscht wenn der letzte Hardlink auf den Inode entfernt wurde – der Linkzähler also auf 0 sinkt. Das ist in Unixoiden Dateisystemen die technische Definition für „gelöscht“. Die Daten sind noch da, es existiert aber kein Hardlink mehr.

rm ~/test   # einen Hardlink auf den Inode entfernen, aka „löschen“

ls -li ~/Downloads/test
16253120 -rw-r--r-- 1 thomas thomas 0 2011-08-21 16:41 /home/thomas/Downloads/test

Wie man sieht ist der Linkzähler um 1 gesunken, die ursprünlich erstellet Datei in ~ ist weg. Der zweite Hardlink in ~/Downloads existiert aber unbeindruckt weiter.

Viele Backup-Programme nutzen das um platzsparend meherere Snapshots zu erstellen. Nach dem Vollbackup werden in den nächsten Duchgängen nur noch Hardlinks auf die unveränderten Dateien erstellt und die neuen Dateien dazugespeichert.

Um die Ausgangsfrage zu beantworten: jeder Schnappschuss ist also ein Vollbackup.

Grüße
Thomas

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Müsste man mal ausprobieren. So gesehen hat doch jede Datei dann zwei Hardlinks, oder? Also dass der normale Dateiname auch als Hardlink gilt. Wenn einer der beiden weg ist, bleibt die Datei trotzdem noch erhalten. Nur irgendwo muss ja dann auch der Speicherverbrauch angezeigt werden - also in dem verbleibenden Hardlink(-Ordner)?

Habe das nun mal ausprobiert, um quick & dirty voran, aber zu soliden Ergebnissen zu kommen:

$ touch hardlink
$ ln hardlink hardlink-link
$ ls -hal hard*
-rw-r--r-- 2 * * 0 2011-08-21 17:54 hardlink
-rw-r--r-- 2 * * 0 2011-08-21 17:54 hardlink-link
$ echo 123 > hardlink
$ ls -hal hard*
-rw-r--r-- 2 * * 4 2011-08-21 17:57 hardlink
-rw-r--r-- 2 * * 4 2011-08-21 17:57 hardlink-link
$ rm hardlink
$ ls -hal hard*
-rw-r--r-- 1 * * 4 2011-08-21 17:57 hardlink-link
$ 

Und Mist, primus war schneller, ich hätte mal aktualiseren sollen. *grml* 😉

Immerhin habe ich mehr auf den Speicher geachtet, er hat das allgemeine Prinzip erläutert und die Anzeige von Hardlinks/ Inodes hervorgebracht, die ich vorhin noch ausprobieren wollte. 😉

Um die Ausgangsfrage zu beantworten: jeder Schnappschuss ist also ein Vollbackup.

Aus Nutzersicht ja, aber auf der Festplatte liegen ja die schon vorhandenen Dateien trotzdem nur einmal.

Nun frage ich mich, ob Tools wie du so schlau wären, um zu merken, dass sie die Datei bei Hardlinks nur einmal hochzählen dürfen? Nach einigen Versuchen bin ich der Meinung, dass du das hochzählt. Als würde man also auf 1 GB 2 GB speichern können, wenn man knapp 1 GB drauf hat und dann noch Hardlinks für 1 GB. Allerdings weigert sich du, die Hardlinks direkt anzuzeigen (oder ich habe ein Aktualisierungsproblem). Insgesamt wird es aber mit hochgerechnet, ebenso, wenn ich explizit nur die eine Datei/ Hardlink zählen lassen. Beispiel:

$ du -a .
4	./datei  # datei-hardlink wird verschwiegen
8	.        # ... wird aber mit gezählt (8)

Fragt sich nur, woher du weiß, welches der (zweite) Hardlink ist - vermutlich schnappt es sich sogar einfach nur das erste File und ignortieriert das andere (bei hard* z.B.). Dazu wären weitere Versuche und mal ein Reboot notwendig, den ich aber dank Ruhezustand/ Standby auch nicht so schnell machen werde.

Die Ursprungsfrage war jedoch kein Grundkurs in Hardlinks, sondern ob das Sinn macht, dass zwei Ordner "klein" und der folgende "groß" ist. Ich meine, nach unseren Ergebnissen kann das zwar sein, macht aber keinen Sinn: Der erste Ordner muss IMMER ein Vollbackup im Sinne von "keine Hardlinks" (außer Hardlinks werden gesichert) sein. Erst beim nächsten Backup kann man Hardlinks verwenden und somit Platz sparen. Diese Platzersparnis wird aber vielleicht u.U. nicht von jedem Programm (korrekt) erfasst. Wie hast du denn den Platzverbrauch angezeigt, Susegecko?

Aussagen:

Es ist so wie UrbanFlash schon andeutete.

+

Deshalb könnte man das Vollbackup löschen und es wird einfach das nächste Backup (das aus Änderungen voll und Rest Hardlinks auf Vollbackup besteht) zu einem Vollbackup.

Ergebnis: Tatsächlich richtig (unter der Haube), aber...

FRAGE: Wie verhält sich du, Nautilus usw. bei der Größenberechnung solcher Ordner? Und wie ändert sich dieses Verhalten, wenn man einen Hardlink-Ordner (mit real fast keinem Speicherverbrauch) anzeigen lässt, wenn dies der letzte Hardlink ist?

  • Ich vermute, es wird immer die volle Größe angezeigt, ähnlich wie bei du.

  • Dann macht es aber keinen Sinn, dass Susegecko kleine und große Ordner sieht, es sei denn, seine Backupdaten schwanken sehr.

  • Eine weitere Möglichkeit wäre, die kleinen Ordner dann aufzublähen, wenn darin die letzten Hardlinks sind. Dieses zu dynamische Verhalten wäre aber dem Nutzer noch weniger zu vermitteln als die doppelte Speichergröße (obiger 1-2-GB-Vergleich). Und es wäre sicherlich etwas zu "aufwendig" (dynamisch/ sprunghaft). Aber auch dann dürfte der Nutzer als ersten Ordner keinen kleinen Ordner (nur Hardlinks) sehen.

    • Ausnahme: Er hat die Hardlinks auf die Originale gemacht und die Backups im selben Dateisystem. Ist das der Fall, Susegecko?

Grüße, Benno

Edit: Vermutung zuvor war ja, dass BiT seinen ersten vollen Ordner schon löschte (oder er selbst manuell) oder eben, dass seine zu sichernden Daten in der Größe schwanken. Ich tippe mal auf ersteres. Allerdings: Wenn Hardlinks als "volle Größe" angezeigt werden (Linkziel), dann dürfte er nur gleich größe Ordner sehen, egal, ob da überwiegend fette Originale oder schlanke Hardlinks drin sind. Darum kam auch die Frage nach der Anzeige der Größe auf.

Nautilus zeigt mir an: Beide Dateien a je 4 Bytes gelistet, aber bei Rechtsklick auf den Ordner und Eigenschaften: Inhalt: 2 Objekte der Gesamtgröße 4 Bytes. Wohingegen mir du den Hardlink gerne verschweigen will (ich muss ihn explizit und als einigen Parameter angeben), aber stets als Gesamtgröße des Ordners 8 Bytes anzeigt!

Wenn jedoch mit der gleichen Methode gemessen wurde, darf es keine solchen Schwankungen geben. Dann hat vermutlich BiT schon was gelöscht (oder die Hardlinks sind welche auf die Originale im selben Dateisystem). Aber da alle beide Tools die Größe von Hardlinks anzeigen und hochrechnen (normalerweise liegen die ja nicht im selben Ordner - werden einzeln aber wie eine Datei behandelt?!), dürfte es trotz Hardlinks nur fette Ordner anzeigen - und zwar gleich fette.

Vielleicht mag uns Susegecko ja mal einen ggf. anonymisierten Einblick geben!

ls -hal backuphauptordner
sudo du -cs backuphauptordner/*   # sudo nicht vergessen für 100% korrekte 
                                  # Zählung unabh. von Dateirechten/-besitzern!

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Soho, neuer Post, sorry. Damit ihr noch mitbekommt, dass sich hier noch was tut. 😉

Nun hat das Gebastel zugeschlagen! 😈

Der eben schnell gebaute Einzeiler

sudo find hauptordner -mindepth 1 -maxdepth 1 -type d -ls 2>/dev/null | cut -d" " -f5 | grep -vw ^1$ | wc -l

Edit: Dieser find-Befehl war auch schon teils falsch...hat Mist gezählt...wegen -ls (= ls -dils).

zeigt bei meinen ersten Versuchen die Anzahl der Hardlinks aller Unterordner im hauptordner an. Einfach mal schrittweise ausprobieren, von links nach rechts immer ein "| blabla" mehr dranhängen. 😉

Einen Haken hat die Befehlszeile noch: Hardlinks mit "11" (oder gar 111) Hardlinks Gesamtanzahl werden so noch nicht erfasst, weil mein regulärer Ausdruck ^1$ auch 11 zulässt. Hat dazu jemand eine Idee? ☺ Edit:Hab nun gegoogelt und mit "-vw 1" funktioniert ganz einfach, was ich will. Zur Sicherheit gegen vorherige Fehler lasse ich aber "-vw ^1$" stehen, das schließt theoetisch einige Fehlerquellen aus. Habe beides gestestet.

Oder wie zählt ihr Hardlinks? Hab noch nicht gegoogelt. 😉 Die Manpages (en) kennen jedenfalls keine Hardlink(s), bei find, du und ls. Habe nun doch schon mal gegoogelt: http://www.unixboard.de/vb3/showthread.php?25798-hardlinks-finden Interessant! Die Lösung mit find -inum ist dort jedoch nur ein Ansatz, nicht vollständig und ebenfalls umständlich (je nach Sichtweise). Dafür war dort ein Verweis auf -samefile name. Das funktioniert auch:

sudo find -samefile ordner/dateiname

zeigt alle Dateinamen/ Hardlinks an, die zusammengehören (die dieselbe Inode haben). Eine Schleife für ALLE Dateien ähnlich dem obigen Befehl könnte dann alle auflisten. Aber ich will ja nicht die 100.000 Namen wissen, sondern nur die Anzahl - und zwar je Ordner! Um herauszufinden, ob das ein Ordner mit vielen Hardlinks ist (die Anzahl der Dateiobjekte zeigt ja ls -hal schon an, wenn man mal vergleichen möchte, wie hoch der anteilige Anteil an Hardlinks ist). Dazu muss ich aber den obigen Befehl dann doch auf jeden einzelnen Ordner loszählen lassen (das kommt davon, wenn man nur einen Testordner hat):

sudo find hauptordner -mindepth 1 -maxdepth 1 -type d -ls 2>/dev/null | cut -d" " -f5 | grep -vw ^1$ | wc -l

Wenn der Sicherungsordner weitere Unterordner hat (was bei Nicht-Archiven der Fall ist), muss ich weiterbasteln: *hab grad auch festgestellt, dass ls --help teils informativer als die Manpages dazu ist! Hilft aber hier alles nicht weiter ich schweife nur ab und überhaupt halte ich mich zu lange hier auf und mit Linux. 😉 Um das nun mal zu einer Lösung zu bringen: Bitte ausführen:

# dasselbe wie unten, nur umgedrehte Anzeige 
# (Ordner oben, Anzahl unten = lesbarer)
sudo -i && for alles in backuphauptordner/*/; do ls -Ad "$alles"; ls -AlR "$alles" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l; done

Ist im Prinzip wie find -exec, nur mit der Schleife drumrum statt -exec und mit backuphauptordner/*/ statt min/maxdepth und type d sowie Rekursion -R bei ls anstatt die normale Rekursion von find. Syntax ist hier vielleicht bisschen einfacher als das Gewurbel mit min/max und exec-Syntax-Fallen.

Weitere Versuche waren z.B.:

# zählt aber alle Unterverzeichnisse auf einmal zusammen statt wie gewollt getrennt, wirft aber wenigstens Verzeichnisse aus der Hardlinkzählung raus (nur Dateien per grep ^-)
sudo find backuphauptordner -mindepth 1 -maxdepth 1 -type d 2>/dev/null -exec ls -Al "{}" ";" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l

# umgebaut für eine Verwendung ohne find (x-ter Versuch!):
for alles in backuphauptordner/*; do ls -AlR "$alles" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l; ls -Ad "$alles" | grep ^d; done
# Falle: ls -hald lässt übergebene Dateien durchsickern, die man weggreppen muss
# Diese Dateien kann man aber im Vorfeld nicht weglassen:
# * ls -R lässt sich nicht wirksam mit ls -d kombinieren
# * Schleife allein (for alles in *) schafft das nicht. Doch, schafft es nun auch:
for alles in backuphauptordner/*/; do ls -AlR "$alles" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l; ls -Ad "$alles"; done

Echt manchmal bisschen schwer, sowas mit ALLEN Bedenken in EINE Zeile zu bekommen (die noch lesbar, also kein richtiges Script mit vielen "\" ist). Wer jetzt denkt, ha, is doch einfach, soll doch selber mal bisschen damit rumspielen...ich bin nun jedenfalls schon ewig drüber.

@ Susegecko:

Wäre nett, wenn du auch diesen Befehl mal ausführen würdest. Keine Sorge vor dem /dev/null, dass unterdrückt lediglich Fehlermeldungen (Fehlerkanal 2), du kannst es aber auch weglassen, wenn es keine Fehler gibt (bzw. diese dürften die Berechnung ohnehin nicht beeinflussen oder wenn doch, dann nicht stark verzerren). Ich meine diesen von oben:

sudo -i && for alles in backuphauptordner/*/; do ls -Ad "$alles"; ls -AlR "$alles" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l; done

Anmerkung: Paar unsauber wirkende greps hätte man mit find mit mehreren exec sicherlich verhindern können, aber das ging dann im Gebastel unter, da ich auch ls testen wollte. Funktioniert wenigstens, aber das nächste mal hätte ich find sicherlich schneller zusammen. Test (für mich):

# Syntax: klappt so nicht:
sudo find hard -mindepth 1 -maxdepth 1 -type d 2>/dev/null -exec ls -Ad "{}" ";" -exec ls -AlR "{}" | grep ^- | cut -d" " -f5 | grep -vw ^1$ | wc -l ";"

# Synatx: ";" wieder nach vorn verlegt, aber dann bezieht sich grep
# auf beide exec-Ausgaben (den ganzen find-Befehl)
sudo find hard -mindepth 1 -maxdepth 1 -type d 2>/dev/null -exec ls -Ad "{}" ";" -exec ls -AlR "{}" ";" | grep ^- | cut -d" " -f5 | grep -vw ^1$ | wc -l

Fazit: Ohne Script oder Script-in-one-Line (noch länger und/ oder unlesbarer als sowieso schon - mit mehreren finds verschachtelt im exec) wird das mit find nix...anscheinend.

Und nun noch die letzte Variante, die ich zusätzlich bei mir testen will (und mal wieder mit sudo):

# verkrüppelter Ansatz:
sudo -i && for alles in hauptordner/*; do find -samefile "$alles"; done
# Hier breche ich ab, da man noch eine Schleife und Rekursion
# für den Zähler bräuchte...

Ich hab einfach mal verschiedene Varianten testen wollen, aber die mit samefile ist wohl auch nicht besser - vielleicht lesbarer, aber zwei Schleifen mag ich auch nicht machen...und dann wegen der Rekursion, die mit samefile nicht geht, doch wieder ls -R und grep reinfrickeln/-kopieren...das wird nicht besser, nur eine Schleife und ein bisschen Rumgeteste mehr.

Wen das alles nicht (mehr) interessiert: Mich auch nicht mehr! 👍 Aber eine einfache Lösung , um Hardlinks anzuzeigen, evtl. auch eine GUI, kennt niemand, oder?

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Zusammengefasst und nochmals korrigiert + ein Fall ergänzt:

  • Paketverwaltung und Google kennen wohl keine guten Tools.

  • ZÄHLEN von Hardlinks in allen UNTERORDNERN eines ORDNERs (aber NICHT DATEIEN im (Haupt-)ORDNER):

    sudo -i
    for alles in ORDNER/*; do ls -Ald "$alles" | grep ^d; ls -AlR "$alles" | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l; done
  • Zählen (ohne Unterordner):

    sudo -i
    ls -Al ORDNER | grep ^- | cut -d" " -f2 | grep -vw ^1$ | wc -l
  • ANZEIGEN von Hardlinks in allen UNTERORDNERN eines ORDNERs (aber NICHT DATEIEN im (Haupt-)ORDNER): Script (Abspeichern und per Rechtsklick ausführbar machen! Aufruf: sudo scriptname ordner --subdirs )

    #!/bin/bash
    FOUND_SOMETHING=false
    if test -f $1; then
     ALL=$1
     COUNT_OF_HARDLINKS=$(ls -Al "$ALL" | grep ^- | cut -d" " -f2 | grep -vw ^1$)
     if test $COUNT_OF_HARDLINKS>1; then
     echo "$ALL"
     FOUND_SOMETHING=true
     fi
     elif test -d $ALL; then
    DEPTH=0
    if test "$2" == "--subdirs"; then
    DEPTH=1
    fi
    for ALL in $1/*; do
     ALL_LIST_OF_FILES=($(find "$ALL" -maxdepth $DEPTH -type f | xargs))
     for i in ${ALL_LIST_OF_FILES[@]}; do
     ALL_FILE=$i
     COUNT_OF_HARDLINKS=$(ls -Al "$ALL_FILE" | grep ^- | cut -d" " -f2 | grep -vw ^1$)
     if test $COUNT_OF_HARDLINKS>1; then
     echo "$ALL_FILE"
     FOUND_SOMETHING=true
     fi 
     done
    done
    fi
    if test $FOUND_SOMETHING != true; then
    echo "Kein Hardlink gefunden!"
    fi
    exit 0
  • Anzeige (ohne Unterordner): Script: selbes wie oben, nur ohne Option starten:

    sudo scriptname ordner
  • Übergebene Dateien (nur eine jeweils!) statt Ordner zeigt das Script immer an, wenn sie Hardlinks sind.

Edit: Befehle ergänzt und ausgebaut. Es könnten u.U. noch Fehler enthalten sein.

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Fertig. *uff*

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Wow Benno, dazu fällt mir irgendwie nur ein Wort ein: Overkill?

Aber gute Recherche, danke dafür 😀

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

UrbanFlash schrieb:

Wow Benno, dazu fällt mir irgendwie nur ein Wort ein: Overkill?

Allerdings...

Aber gute Recherche, danke dafür 😀

So, und jetzt eine beiläufige Lösung von Google (gar nicht sooo speziell gesucht): Option -links - bei mehr als 2 Hardlinks als Schleife:

for i in {2..20}; do find . -type f -links $i; done

Soviel also zu dem Gebastel. 😉

Da sucht man nach Hardlink in der Manpage und die kennt nur "link"...aber ich wollte ja irgendwie basteln. 😉 In der Infopage (info find) stünde außerdem:

find . -links +1 ! -type d -print

Super Beitrag (Quelle obiger Befehlskerne) und Erklärungen zu Hardlinks bei Verzeichnissen nochmal zusammengefasst hier: http://www.pro-linux.de/forum/viewtopic.php?p=1134192#1134192

find . -links +1 ! -type d -print0 | xargs -0 ls -i | sort -n

Das zeigt noch die Namen und Inoden dazu an. Damit man sieht, welche Namen zusammengehören. Stimmt, das fehlte bei mir irgendwie auch noch.

ls -ilR

soll doppelte Inodes ebenfalls anzeigen, die könnte man ja dann mit uniq oder so rausfischen:

ls -ilR | cut -d" " -f1 | uniq -d | xargs -I '{}' find . -inum '{}'

Haaa...ein Spaß! Es funktioniert! Den hab ich wieder ganz allein gebaut! Interessant ist die xargs-Option!

Die Lösungen sind für die Suchfunktion. ☺ In der Manpage kann man nach hard aus dem zusammengesetzten Begriff hard link suchen. 😉

Dann hab ich heute wohl umsonst einen Brummschädel? Ne, ich hab viel gelernt. 😀 Vor allem, dass die Optionen von find und ls mächtig, aber auch mächtig durchgewurschtelt sind und dass sich eine längere Recherche in Web und Manpages lohnen kann, bevor man mit ls-Ausgaben herumkrebst, die man mit grep und cut beschneiden muss. 😉 Manchmal braucht man aber beides - so wie der letzte Befehl. Dazu noch uniq und xargs mit Option -I! 😀

Das Thema kann wegen Offtopic gesprengt werden. 😉

Susegecko

(Themenstarter)

Anmeldungsdatum:
31. März 2010

Beiträge: 106

Oh, wow! Da habe ich mit meiner Frage ja was ausgelöst. ☺

Ich muss jedoch zugeben, dass ich bei den ganzen hier geposteten Befehlszeilen und Scriptchen den Überblick verloren habe. Gibt es davon jetzt noch welche, die ich ausführen sollte? Und wenn ja, was sagen die mir dann?

TIA

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Nein, da war nichts dabei zum Ausführen für dich. Das ist nur mitprotokolliert wie Benno den Beweis für die Theorien erbracht hat. Informativ, aber kein Handlungsbedarf.

Die Grundaussage ist dir klar?

Antworten |