filename via has generieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

filename via has generieren

Beitrag von startx » 16.07.2009 18:13:33

ich bastel im moment an einer software die grosse mengen an files mit einem unique identifier versehen soll (d.h. tausende von files die in einen ordner geladen werden solen einzigartige dateinamen bekommen)

hashes wie md5 sind mir aber als dateinamen eigentlich zu lang ( z.b. e910996ce14a3216c1d951e0a79ae874.mpg ). youtube schein auf case sensitive dateinamen zu setzen, was ja wesentlich kuerzere namen ermoeglicht.
( z.b. 2CRrbK8c8HA )

weiss jemand wie diese dateinamen erzeugt werden? ein hash der case sensitive strings erzeugt ist mir grad nicht bekannt.

yeti

Re: filename via has generieren

Beitrag von yeti » 16.07.2009 18:18:15

'man mktemp'?

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: filename via has generieren

Beitrag von habakug » 16.07.2009 19:34:43

Hallo!

Oder "man pwgen":

Code: Alles auswählen

[w00t@eaglehost pwfiles]# for i in `pwgen -s 16 10`; do echo $i.file; done
eUgDlvtIgJteWK0k.file
90ZZQhlScX8ae6Gm.file
BwwydJAAcbdTY1KZ.file
z5jPHH2cpgYhhTBL.file
e042wmQsMKZpwtMt.file
6FqNvE2tkjRDf7PW.file
bmItUUb9Xb0tQDib.file
fxSXQLMTgz9y8nkX.file
JY8hr52QDiPCXhiC.file
tYimWwhm7ZhfV6xT.file
Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: filename via has generieren

Beitrag von startx » 17.07.2009 12:26:58

kann mir jemand der besser in mathematik ist mal eben sagen wieviele moeglichkeiten es fuer eine form
a la "JY8hr52QDiPCXhiC" gibt?

edit: 56800235584 (62 ** 6) possible file names.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: filename via has generieren

Beitrag von Spasswolf » 17.07.2009 12:31:10

Du meinst wohl 62^16 = 47672401706823533450263330816.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: filename via has generieren

Beitrag von startx » 17.07.2009 12:39:04

ja sorry war ein copy and paste fehler, die angabe oben bezog sich auf mktmp, nicht pwgen.

47672401706823533450263330816 sollte so grad ausreichen ;)

yeti

Re: filename via has generieren

Beitrag von yeti » 17.07.2009 17:00:31

startx hat geschrieben:47672401706823533450263330816 sollte so grad ausreichen ;)
Wieviele Inodes hat das FS denn frei, auf das Du diesen Dateizoo werfen willst?
Das dürfte als Obergrenze doch wesentlich schneller zuschlagen...

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: filename via has generieren

Beitrag von startx » 23.07.2009 12:19:25

die files sind auf verschiedene filesysteme/computer verteilt. die dateinamen sollen aber im netzwerk eindeutig sein und nicht kollidieren.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: filename via has generieren

Beitrag von Spasswolf » 23.07.2009 12:27:23

Benutz doch einen Hexstring als Dateinamen, dann muss du nur noch zentral Speichern bis zu welcher Zahl die Namen vergeben sind.

Code: Alles auswählen

ls
00000000
00000001
...
FFFFFFFF

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: filename via has generieren

Beitrag von startx » 25.07.2009 14:57:40

Benutz doch einen Hexstring als Dateinamen, dann muss du nur noch zentral Speichern bis zu welcher Zahl die Namen vergeben sind.
genau dieses zentralen ansatz will ich ja vermeiden ;)

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

Re: filename via has generieren

Beitrag von gms » 25.07.2009 18:53:09

startx hat geschrieben: hashes wie md5 sind mir aber als dateinamen eigentlich zu lang ( z.b. e910996ce14a3216c1d951e0a79ae874.mpg ). youtube schein auf case sensitive dateinamen zu setzen, was ja wesentlich kuerzere namen ermoeglicht.
( z.b. 2CRrbK8c8HA )
mit Base64-Kodierung hättest du "nur" noch 22 Zeichen:

Code: Alles auswählen

gms@gms1 ~ $ perl -MDigest::MD5 -e'print Digest::MD5::md5_base64("gms"),"\n"'
wau1Rp49qcTJDmKzlslOKA
allerdings solltest du dann die RFC 3548 Variante für das Kodieren von URL und Filenamen verwenden, also mit '-' und '_' statt '+' und '/' :
http://tools.ietf.org/html/rfc3548#section-4

Youtube scheint einen Algorithmus mit kürzerer Schlüssellänge ( 64bit statt 128bit) zu verwenden

Gruß
gms

Gruß
gms

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Re: filename via has generieren

Beitrag von startx » 26.07.2009 11:54:48

danke fuer den link, schau ich mal rein.

Antworten