С помощью transmission (в cli-варианте) для расшаривания любого файла нужно всего две команды:
Код:
transmission-create -o "/tmp/torrent.torrent" "нужный_файл"
transmission-remote "localhost" -w "путь_к_папке_где_нужный_файл/" -a "/tmp/torrent.torrent"
Первая команда создаёт торрент. Вторая подключается к работающему локально (localhost) демону (transmission-daemon) и ставит только что созданный торрент на раздачу. Можно добавить ещё и третью команду — удаление созданного торрент-файла (покуда с момента установки на раздачу им начирает рулить демон, и сам локальный файл больше не нужен)
Нужный хэш при необходимости вытаскивается из торрента (если в cli — с помощью transmission-show) и дописывается в конец строчки «magnet:?xt=urn:btih:», полученная ссылка (например,
magnet:?xt=urn:btih:fb26eaa6180af006cc502837ad48d655c5e27561) отдаётся страждущим — и всё!
Код:
#!/bin/sh
# publish and announce given arc on the torrent web
# Intended to be run via ssh directly on hardware router (on DD-WRT + OPTWARE)
BASE="/mnt/bigstore/wwshared/veloprobeg_2011"
HOST="localhost"
TMP="/mnt/tmp"
NAME="$1"
MEDIA="$2"
ADDITION="$MEDIA"
cd $BASE
echo $MEDIA
if [ "z${MEDIA}" = "z" ] ; then
echo "Using default extension: photo"
MEDIA='photo'
ADDITION=''
fi
TORR="$TMP/tor.torrent"
ARC="$NAME/$NAME-$MEDIA.tar"
TARDIR="$BASE/$NAME/"
# if there is no name-photo.tar - do the torrent from all tars in folder
if [ ! -e "$ARC" ] ; then
echo "Adding several files"
tmdir="$TMP/$NAME"
[ -d "$tmdir" ] && rm -rf "$tmdir"
mkdir -p "$tmdir"
echo "in dir $tmdir"
olddir=`pwd`
cd "$NAME"
curdir=`pwd`
for a in *.tar ; do
echo "Adding file $a..."
ln -s "$curdir/$a" "$tmdir/$a"
done
cd "$olddir"
ARC="$tmdir"
TARDIR="$BASE"
fi
[ -f "$TORR" ] && rm -f "$TORR"
echo "Making a torrent..."
#transmissioncli -n "$ARC" "$TORR"
transmission-create -o "$TORR" "$ARC"
HASH=`transmission-show "$TORR" | grep Hash | awk '{print $2;}'`
echo "Announce the torrent..."
transmission-remote "$HOST" -w "$TARDIR/" -a "$TORR"
echo "All is done."
[ -d "$ARC" ] && rm -rf "$ARC"
MAGNET="magnet:?xt=urn:btih:$HASH"
LABEL="$NAME"
if [ "z$ADDITION" != "z" ] ; then
LABEL="$NAME-$ADDITION"
fi
echo "$MAGNET $LABEL" >> magnet-torrents.txt
echo "<a href=\"$MAGNET\">$LABEL</a><br>" >> magnet-torrents.html
echo "$MAGNET"