Skript um alle Pfade länger als n zu ermitteln?

Status
Für weitere Antworten geschlossen.

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

wir betreiben mehrere Synology-Server, bestückt je mit zwei bis fünf Platten, alles in allem viele Terabyte Daten. Das soll auch alles automatisch gebackupt werden, in ein RZ mit NTFS-Filesystem.

Wir haben viele Pfade, die dafür zu lang sind. Hat jemand von Euch eine Idee für ein Skript, das (natürlich für jede Synology einzeln), wenn ausgeführt, alle Pfade die länger sind als n Zeichen, in eine Datei schreibt? Dann könnte ich anhand dieser Datei schauen wo wir kürzen müssen. (Einmal hatte ich das über die Windows PowerShell gemacht, da war aber das Problem dass einige Pfade so lang waren, dass die einfach abgestürzt ist; außerdem wäre es natürlich schöner, das Skript direkt auf der Synology auszuführen).

Viele Grüße, Marius
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.835
Punkte für Reaktionen
2.272
Punkte
829
Rich (BBCode):
find / > dir.txt 2> /dev/null

sollte eine Liste aller Dateien liefern mit dem kompletten Pfad. Diese Liste muss man dann nur noch durch ein Tool jagen, das die Zeilen mit einer Länge > x herausfiltert. Ist z.B. mit Perl schnell gemacht, gibts aber vielleicht auch schon.
 
Zuletzt bearbeitet:

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo,

vielen Dank für die schnelle Antwort! Bei dieser Lösung müsste ich halt jedesmal (fürchte ich muss das ein mal pro Woche laufen lassen) diese Riesendateien generieren, lokal rüberziehen und parsen. Auf lange Sicht viel besser wäre es, dass gleich eine Datei geschrieben wird, in der nur die zu langen Pfade stehen. Bin leider kein Linux- & Perl-Kenner, und möchte auch nicht auf unserem Produktivsystem eigene "Experimente" starten.

Viele Grüße, Marius
 

Joesix

Benutzer
Mitglied seit
08. Feb 2012
Beiträge
137
Punkte für Reaktionen
0
Punkte
0
Hi,

folgendes gibt Dir alle Dateien/Ordner im Pfad /path deren kompetter Pfad länger als 50 Zeichen ist.

Rich (BBCode):
 for line in $(find /path/) ; do if [ ${#line} -gt 50 ] ;  then  echo $line ; fi ; done
 

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo,

cool, vielen Dank. Wie gesagt, bin kein Linux-Kenner, kann ich die Ausgabe in eine Datei umleiten? Die -fprint von find nutzt mir da ja nix, das wird ja nur für die Schleife gemacht.

Vielen Dank, viele Grüße! Marius
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
gäbe verschiedene Wege. Mit dem GNU find (keine Ahnung ob das find der Firmware das auch kann) z.B.
Code:
#länger als 256 Zeichen
find / -type f -regextype posix-extended -regex '.{257,}
#oder mit awk
find / -type f | awk '{print length,$0}' | awk '{if($1>256) print $2}'
wobei ich nicht weiss ob das awk der Firmware das kann :)
 

Joesix

Benutzer
Mitglied seit
08. Feb 2012
Beiträge
137
Punkte für Reaktionen
0
Punkte
0
Leider sind awk und find auf der DS (212+) doch ein bisschen beschränkt...

DIe Ausgabe kann einfach umgeleitet werden:

Rich (BBCode):
 for line in $(find /path/) ; do if [ ${#line} -gt 50 ] ;  then  echo $line ; fi ; done > /pfad/zur/ausgabe.txt
 

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Das funktioniert klasse -- vielen Dank! :cool:
 

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Eine Nachfrage noch: Ich lasse das jetzt laufen mit

Code:
for line in $(find /./) ; do if [ ${#line} -gt 220 ] ;  then  echo $line ; fi ; done > /volume1/SysAdmin/pfade.txt

Gibt es eine Möglichkeit, dass der Dateiname hinten irgendiwe nummeriert wird, zum Beispiel mit dem Datum, also etwas wie "...../pfade_06112014.txt"?

Dann könnte ich das als Cron-Job reintun.

Vielen Dank, viele Grüße, Marius
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Code:
... done > "/volume1/SysAdmin/pfade_$(date '+%d%m%Y').txt"
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.835
Punkte für Reaktionen
2.272
Punkte
829
Überlege, ob Du nicht besser %Y%m%d verwendest, da Du so eine chronologische Sortierung hinbekommst.
 

Marius2

Benutzer
Mitglied seit
04. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Wow, vielen Dank für die schnelle Antwort! :) :) :)

Marius
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat