Optimale Piece size einer .torrent-Datei
Samstag, 25. Februar 2023Bei Torrents deren zugrundeliegenden Daten jensets der 5 GiB sind, darf man gern mal die Größe der einzelnen Anteile erhöhen. Bei mktorrent
ist der Standardwert 18, also 218 = 256 KiB.
Die folgende Liste (Quelle) ist meiner Meinung nach recht sinnvoll.
- 219 = 524 288 = 512 KiB für Dateigrößen zwischen 512 MiB - 1024 MiB
- 220 = 1 048 576 = 1024 KiB für Dateigrößen zwischen 1 GiB - 2 GiB
- 221 = 2 097 152 = 2048 KiB für Dateigrößen zwischen 2 GiB - 4 GiB
- 222 = 4 194 304 = 4096 KiB für Dateigrößen zwischen 4 GiB - 8 GiB
- 223 = 8 388 608 = 8192 KiB für Dateigrößen zwischen 8 GiB - 16 GiB
- 224 = 16 777 216 = 16384 KiB für Dateigrößen zwischen 16 GiB - 512 GiB
- 225 = 33 554 432 = 32768 KiB für Dateigrößen größer als 512 GiB
Zu beachten wäre noch, dass einige Clients bei 225 streiken. Im Zweifel sollte man 224 daher nicht überschreiten. Wie viel es bringt ist hier zu sehen:
$ mktorrent -p -c "Piece size 18" -a udp://opentracker.io:6969/announce -o 2-18.torrent 32GB-Folder/ mktorrent 1.1 (c) 2007, 2009 Emil Renner Berthing Hashed 131179 of 131179 pieces. Writing metainfo file... done. $ du -h 2-18.torrent 3.2M 2-18.torrent
$ mktorrent -l 24 -p -c "Piece size 24" -a udp://opentracker.io:6969/announce -o 2-24.torrent 32GB-Folder/ mktorrent 1.1 (c) 2007, 2009 Emil Renner Berthing Hashed 2050 of 2050 pieces. Writing metainfo file... done. $ du -h 2-24.torrent 44K 2-24.torrent
Die Faulheit siegt.
#!/bin/bash folder="$1" output="$folder.torrent" fsize="$(du -sm $1 | awk '{print $1}')" announce="udp://opentracker.io:6969/announce" ## Calculate folder/file size if [ "$fsize" -le 512 ]; then psize="18"; elif [ "$fsize" -le 1024 ]; then psize="19"; elif [ "$fsize" -le 2048 ]; then psize="20"; elif [ "$fsize" -le 4096 ]; then psize="21"; elif [ "$fsize" -le 8192 ]; then psize="22"; elif [ "$fsize" -le 16384 ]; then psize="23"; elif [ "$fsize" -le 524288 ]; then psize="24"; else echo "Please split your files and create a torrent for each part separately" && exit 1; fi ## Create .torrent mktorrent -v -p -l "$psize" -a "$announce" -o "$output" "$folder"