Wie finde ich "zu lange" Pfade und Dateinamen?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

DS111-User

Benutzer
Registriert
13. Feb. 2011
Beiträge
285
Reaktionspunkte
14
Punkte
18
Aus einem bisher nicht ersichtlichen Grund gibt es auf meiner DS111 (neueste DSM 5.1-5022 Update 5 installiert) Dateien und Pfade die insgesamt "zu lang" sind um z.B. auf eine am PC angeschlossene USB-Festplatte (unter Windows 7 mit NTFS-formatiert) zu kopieren.

Kennt jeman eine Möglichkeit, wie ich auf der Synology selber die ingesamt längsten Dateinamen finden kann?
Ich möchte diese dann - wenn irgendwie möglich - auch direkt auf der Synology kürzen oder allenfalls die Pfad-Struktur vereinfachen.

Bin dankbar für jeden Hinweis, wie ich das am besten mache.
Ziel soll sein, dass ich wieder sämtliche Dateien von der DiskStation mit der gesamten Verzeichnisstruktur auf eine externe USB-Platte kopieren kann.
 
Kein Kunstwerk, aber ich habe Dir ein kleines Perl-Skript geschrieben, was Dir die Pfade ausgibt, die eine Länge von mehr als 255 Zeichen haben (kann man einstellen):

Rich (BBCode):
#!/usr/bin/perl

use strict;

my $dirlist="/root/dirlist.txt";
my $startdir="/volume1";
my $pathlength=255;

system("/usr/bin/find $startdir -print > $dirlist");

open DIRLIST, "<$dirlist"  || die "Can't open $dirlist: $!\n";

while (<DIRLIST>) {
  if (length($_) > $pathlength) {
    print ("$_");
  }
}

close DIRLIST;
my $result = unlink ($dirlist);

Gehe als User root per ssh oder telnet auf die DS, speichere das Skript z.B. als long-path.pl unter /root und mache es per "chmod 700 /root/long-path.pl" ausführbar. Das Perl-Paket muss installiert sein. Nutzung natürlich auf eigene Gefahr. Bei mir läuft es.
 
Zuletzt bearbeitet:
Wenn Windows die Pfade zu lang sind, kannst du auch einfach etwas "tiefer" mounten.

Statt
net use x: \\<ds>\<share>
geht auch
net use x: \\<ds>\<share>\<dir1>\<dir2>\...
 
@dil88: Herzlichen Dank für Deine Mühe! Perl habe ich im Moment (noch) nicht installiert.
Wenn ich das aber mit der (auf den ersten Blick einfacheren) Methode von 'Benares' nicht hinkriege, werde ich das nachholen.

@Benares: Das wusste ich nicht, danke für den Tipp!
Verstehe ich Dich richtig: In Deinem Beispiel muss ich um \\<ds>\<share>\<dir1>\<dir2>\ mounten zu können, weder <\dir1> noch <\dir2> vorgängig extra freigeben, oder?
 
Der Ansatz von Benares ist clever. Das Perl-Paket kannst Du nach Nutzung ja auch wieder deaktivieren bzw. deinstallieren.
 
Verstehe ich Dich richtig: In Deinem Beispiel muss ich um \\<ds>\<share>\<dir1>\<dir2>\ mounten zu können, weder <\dir1> noch <\dir2> vorgängig extra freigeben, oder?
Nein, musst du nicht.
 
Ist ein ganz alter Hut.. man hat die Freigabe eingebunden (z.B. X:\Daten\) schmeisst da haufenweise Zeugs rein und dann kann es nicht mehr gelesen werden, weil es auf dem Dateisystem dann heisst "/Volume1/@Daten" und dann sind es eben ein paar Zeichen mehr. Probleme kommen eigentlich in 2 typischen Szenarien vor:

- dynamisch generierte Dateinamen (z.B. bei temporären Internetdateien "opidngoint4g09nergnsopjpsejfpoi20hn213rß0jpr1f280hfg320hg3n3p2gn32g902t.jpg")
- oder der Klassiker: User-generiert.... "X:\Daten\Projekte 2016\erste Halbjahr 2016\Projekt 1 - 2016\Angebote\Angebot 1\Angebot 1 - Projekt 1-2016 - Hausbau Musterstrasse 12345 Musterhausen - Rohre - Fallrohr Bezeichnung XY Material ABC Kundennummer 4711 Herr Mustermann.pdf"

Grade diese doppelte und dreifache Nennung von bestimmten Dingen ist wirklich richig übel, da habe ich in meiner beruflichen Laufmann schon so einige Klopper gesehen... Sowas gilt es also zu vermeiden... Schlimmer wird es noch, wenn noch Unterordner gemountet werden, also statt "X:\Daten" dann ggf. "X:\Daten\Projekte 2016\erste Halbjahr 2016\" und dann noch immer so wie oben beschrieben wird mit Ordner- und Dateinamen gebastelt wird...
 
Hallo, der Thread ist zwar schon alt aber währe es möglich, dass mir jemand erklärt wie ich zu lange Dateinamen automatisch kürzen kann? Dürfen max 145 Zeichen lang sein.
 
Kein Kunstwerk, aber ich habe Dir ein kleines Perl-Skript geschrieben, was Dir die Pfade ausgibt, die eine Länge von mehr als 255 Zeichen haben (kann man einstellen):

Rich (BBCode):
#!/usr/bin/perl

use strict;

my $dirlist="/root/dirlist.txt";
my $startdir="/volume1";
my $pathlength=255;

system("/usr/bin/find $startdir -print > $dirlist");

open DIRLIST, "<$dirlist"  || die "Can't open $dirlist: $!\n";

while (<DIRLIST>) {
  if (length($_) > $pathlength) {
    print ("$_");
  }
}

close DIRLIST;
my $result = unlink ($dirlist);

Gehe als User root per ssh oder telnet auf die DS, speichere das Skript z.B. als long-path.pl unter /root und mache es per "chmod 700 /root/long-path.pl" ausführbar. Das Perl-Paket muss installiert sein. Nutzung natürlich auf eigene Gefahr. Bei mir läuft es.
Ich habe soweit alles gemacht, weiß aber leider nicht, wie ich das Perl-Script jetzt ausführen kann? Bitte um kurzen Tipp :-) Danke!
 
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