UMGUM.COM 

Regulation ( Подчищаем "хвосты" в схеме распространения контента. )

3 сентября 2010  (обновлено 31 января 2015)

OS: Debian Lenny и Windows 2003/2008.

Задачу распространения контента мы более или менее успешно решили. Теперь необходимо решить задачу по удалению снятых с раздачи файлов контента. Силами "rtorrent" это не решается, проще всего мне показалось реализовать это с помощью по файлового сравнения содержимого директорий хранения "торрент"-файлов и файлов контента с целью выявления непарных и удаления таковых.


Пишем скрипт для Debian Lenny.

# touch /usr/local/etc/torrent/regulation.sh
# chmod ugo+x /usr/local/etc/torrent/regulation.sh

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
DATE=`date +"%Y-%m-%d %H:%M:%S"`

FILES="/var/lib/share/files"
TORRENTS="/var/lib/share/torrents"

# Переходим в директорию хранилища файлов
cd "${FILES}"

# Перебираем в цикле все объекты
for FILE in *
do
  if [ ! -f "${TORRENTS}/${FILE}.torrent" ]
  then
    rm -f "${FILE}"
  fi
done

exit 0

Пишем скрипт для Windows 2003/2008.

Располагаем скрипт "regulation.bat" в директории "c:\var\lib":

@echo off

set FILES=c:\var\lib\share\files
set TORRENTS=c:\var\lib\share\torrents

chdir /D %FILES%

for %%i in (*) do (
  if not exist "%TORRENTS%\%%i.torrent" (
    del /F /Q "%FILES%\%%i"
  )
)

exit 0

Удобнее всего вызывать этот скрипт сразу после запуска "rsync", что должна будет загрузить новые "торрент"-файлы.

Для Debian Lenny это сделаем так:

# cat /usr/local/etc/torrent/rsync.sh

....
/usr/local/etc/torrent/regulation.sh

exit 0

Для Windows 2003/2008 осуществим запуск скрипта размещением в файле "/var/lib/rsync/start-rsync.bat" следующей команды:

....
call c:\var\lib\regulation.bat

exit 0

Для первичного сервера распространения нужно чуть дополнить скрипт вторым проходом, который будет проверять наличие пары не только "торрент"-файла для файла контента, но и наоборот; на вторичных серверах "торрент"-файлами управляет утилита "rsync", а на первичном необходимо вовремя выявлять исчезновение файла контента для своевременного удаления "торрент"-файла. В общем, к общему скрипту для Linux "/usr/local/etc/torrent/regulation.sh" на первичном сервере делаем следующее дополнение:

# cat /usr/local/etc/torrent/regulation.sh

....
# Переходим в директорию "торрент"-файлов
cd "${TORRENTS}"

# Перебираем в цикле все объекты
for FILE in *
do
  # Выводим предполагаемое верное имя файла без расширения ".torrent"
  TEMP=`echo "${FILE}" | rev | cut -c 9- | rev`
  if [ ! -f "${FILES}/${TEMP}" ]
  then
    rm -f "${FILE}"
  fi
done

exit 0


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )