Unterverzeichnisse auf DVDs verteilen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Hallo,
ich habe folgenden Befehl gefunden:

Code: Alles auswählen

sudo tar czp /home/homebackup$(date +%Y%m%d).tgz /home/user | split -d -b 4480m - /home/homebackup$(date +%Y%m%d).tgz
Dieser Befehl komprimiert die Verzeichnisse um diese auf mehrere DVDs zu verteilen. Ich suche nach einer Möglichkeit Unterverzeichnisse gleich maessig auf DVDs zu verteilen ohne diese zu komprimieren.

Gibt es bereits ein Programm oder gibt es Python Skript fuer dieses Problem?

Vielen Dank im Vorraus.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Das Stichwort lautet Bin Packing Problem. Da das Problem NP-vollständig ist, musst du die Grenzen mal austesten oder nach einer Implementierung suchen. Um eine Approximation wirst du aber wohl nicht herum kommen.

Sebastian
Das Leben ist wie ein Tennisball.
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Fuer mich ist mehr wichtig, dass die Unterverzeichnisse alphabetisch bleiben und wenn auf der DVD z.B. 100 MB oder mehr nicht benutzt werden ist es nicht so schlimm.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ok, wo ist dann das Problem? Du packst einfach so lange Ordner auf die DVD bis es nicht mehr passt und machst dann mit der nächsten DVD weiter.

Code: Alles auswählen

>>> import random
>>> MAX_SIZE = 10
>>> sizes = [random.randint(0, MAX_SIZE) for _ in xrange(20)]
>>> sizes
[10, 2, 8, 0, 10, 9, 2, 8, 7, 10, 3, 10, 10, 3, 9, 10, 1, 6, 1, 1]
>>> dvd = []
>>> for size in sizes:
...     if sum(dvd)+size <= MAX_SIZE:
...         dvd.append(size)
...     else:
...         print dvd
...         dvd = [size]
... 
[10]
[2, 8, 0]
[10]
[9]
[2, 8]
[7]
[10]
[3]
[10]
[10]
[3]
[9]
[10]
>>> if dvd:
...     print dvd
... 
[1, 6, 1, 1]
Das Leben ist wie ein Tennisball.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

EyDu hat geschrieben:Ok, wo ist dann das Problem?...
[10]
[2, 8, 0]
[10]
[9]
[2, 8]
[7]
[10]
[3]
[10]
[10]
[3]
[9]
[10]
...
[1, 6, 1, 1][/code]
Ich habe es dir markiert ;) Es wird Platz verschwendet
BlackJack

@JonasR: Wo denn? Du kannst die beiden markierten Einträge nicht zusammenfassen, weil da einer dazwischen liegt. Die Reihenfolge soll ja nicht verändert werden.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Ah okay habe seinen zweiten Post nicht gelesen. Passt für mich nicht mit dem ersten zusammen
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

danke es hat prima funktioniert
Antworten