Doppelte Dateien finden und durch symbolische Links ersetzen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
noname234
Beiträge: 74
Registriert: 23.02.2006 20:41:23

Doppelte Dateien finden und durch symbolische Links ersetzen

Beitrag von noname234 » 28.03.2008 21:25:32

Hallo,

beim Backup macht rsnapshot ja aus doppelten Dateien sehr brav symbolische Links - gibt es ein Tool für Debian auf der Konsole was das auch einfach so macht?

Bei mir liegen in mehreren Ordnern größtenteils immer wieder die gleichen Dateien, da würde ich gerne durch symbolische Links Speicherplatz sparen.

Vielen Dank

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Beitrag von lemak » 28.03.2008 23:35:52

hm wie soll denn dort entschieden werden, welche datei inhalt bleiben soll und welchen ein link zum inhalt werden soll?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.03.2008 23:45:44

kenne rsnapshot nicht, aber normalerweise verwende Backuptools die harten Links, somit wäre es auch egal, welche Datei bleibt und welche durch den Link ersetzt wird.

Gruß
gms

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 28.03.2008 23:48:29

Wenn man wirklich doppelte Dateien finden will dann reicht nicht der Name sondern dann müßte man die MD5 Prüsummen vergleichen.

Code: Alles auswählen

#!/bin/bash
# Für jede Datei die Prüfsumme berechnen und in einer temporären
# Datei speichern
find -exec md5sum {} \; > /tmp/sum.unsorted
# Die Prüfsummen sortieren
sort < /tmp/sum.unsorted > /tmp/sum.sorted
# Alle Doppelten Summen finden und speichern
cut -f 1 -d " " /tmp/sum.sorted | uniq -d > /tmp/sum.dupe
# Die Dateinamen zu den Doppelten Summen finden und ausgeben
grep -F -f /tmp/sum.dupe /tmp/sum.sorted
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

noname234
Beiträge: 74
Registriert: 23.02.2006 20:41:23

Genau

Beitrag von noname234 » 29.03.2008 15:35:25

Ja genau - ein vergleich des Dateinamens ist nicht ausreichend - eigentlich kann es ja kaum sein das es für sowas keine fertigen tools gibt, die anforderung kommt ja bestimmt häufiger.

Vielen Dank für eure Hilfe.

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 29.03.2008 20:47:33

Ich mach so was immer mit einer Kombination aus fdupes und einer while Schleife.

Zum Beispiel (solltest du entsprechend auf deine Bedürfnisse anpassen):

Code: Alles auswählen

fdupes -r1 . > dupes
while read a b; do ln -sv "$a" "$b"; done < dupes

noname234
Beiträge: 74
Registriert: 23.02.2006 20:41:23

Re: Doppelte Dateien finden und durch symbolische Links ersetzen

Beitrag von noname234 » 28.02.2009 15:46:32

Hallo,

die Idee finde ich gut - aber scheinbar ist noch ein Fehler in der Anweisung:

Ich erhalte immer die Ausgabe "No such file or directory" und vermute, dass liegt vor allem an den Leerzeichen in den File- und Verzeichnisnamen. Wie kann ich das noch escapen lassen?

Viele Grüße und Danke.

jasonts
Beiträge: 20
Registriert: 07.08.2007 08:54:52

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von jasonts » 01.09.2013 05:50:17

Ich habe mich mal daran gemacht und das Problem via Python etwas umfangreicher gelöst. Mit drei kleinen Skripten ersetze ich doppelte Dateien auf meinem NAS durch harte Links! Ich hoffe das hilft dem einen oder anderen weiter: http://www.digitalchaot.de/python/doppe ... etzen.html

Benutzeravatar
Phineas
Beiträge: 354
Registriert: 20.06.2012 20:26:19

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von Phineas » 01.09.2013 06:18:24

noname234 hat geschrieben:Ich erhalte immer die Ausgabe "No such file or directory" und vermute, dass liegt vor allem an den Leerzeichen in den File- und Verzeichnisnamen.
Ich würde nicht vermuten sondern die Fehlermeldung komplett posten. :wink:

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von markus_b » 01.09.2013 18:00:30

Immer diese Leichengräber :wink:

Tatsächlich habe ich meine ursprüngliche Idee inzwischen schon weiter entwickelt und das Ergebnis ist folgendes Script: NoPaste-Eintrag37361

Dieses kann auch mit Leerzeichen in den Dateinamen umgehen (das vorher wirklich ein Problem war) und akzeptiert zusätzlich noch folgende Parameter:
-n: no-act, es wird noch nichts gemacht, sondern nur das ausgegeben, was gemacht werden würde
-r: reverse, Links umgekehrt erstellen

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von Cae » 01.09.2013 18:12:46

Vorneweg: Ihr Leichengraeber!1!!

Ich will euch ja nicht enttaeschen, aber es gibt bereits Programme dafuer, z.B. Debianfdupes (siehe auch die "Aehnliche Pakete"-Liste dort). Das macht Hardlinks, was man vermutlich eher will. Softlinks werden von Anwendungen als solche erkannt und potenziell anders behandelt.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

noname234
Beiträge: 74
Registriert: 23.02.2006 20:41:23

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von noname234 » 01.09.2013 18:19:48

Hallo,

der Beitrag ist ja durchaus schon älter. Ich habe mich mittlerweile für Hardlinks entschieden und nutze:

#!/bin/sh
fdupes -r "$@" | tee /tmp/fdupes.out |
perl -ne '
chomp;
if (/./) { push @f, $_; }
else {
$k = shift @f;
for (@f) {
print "Linking $_ --> $k\n";
unlink $_;
link $k, $_;
}
@f = ();
}
'

Benutzeravatar
striker2150
Beiträge: 158
Registriert: 23.07.2004 20:46:22

Re: Doppelte Dateien finden und durch symbolische Links erse

Beitrag von striker2150 » 23.09.2013 17:19:21

Der Link hier könnte vielleicht auch hilfreich sein:
http://it-fuzzy.blogspot.de/2010/08/che ... ouble.html

Antworten