LINUX.ORG.RU

Перемещение файлов торрента во время раздачи


0

1

Уважаемые знатоки. У меня есть торрент на раздаче. Я внезапно перемещаю файл торрента и подсовываю вместо него мягкую ссылку на новое местоположение файла. Верно ли, что торрентовый клиент при этом не может обломаться?

★★★★

я так во время скачки делал — всё получилось

teod0r ★★★★★
()

Не может, если это делается за достаточно короткий промежуток времени.

crowbar ★
()

Может, но вероятность крайне мала. Если успеет попытаться открыть файл после перемещения, но до создания ссылки.

Ещё он может смотреть тип файла (не ссылка ли?) и начать неадекватно себя вести при смене типа, но не могу придумать причину, зачем ему так делать.

А если перемещение идёт в пределах одного раздела, то вместо мягких ссылок можно использовать жесткие.

NeXTSTEP ★★
()

Поставь на паузу и перемещай. Меньше вероятность, что торрент-клиенту захочется обращаться к файлу.

aidan ★★★★
()
Ответ на: комментарий от aidan

А даже если и обломается - то просто пометит торрент как broken, дальше сделаешь verify и всё заработает. Всё клиенто-зависимо.

aidan ★★★★
()

всё получилось

Вопрос в том, следует ли так делать.

Поставь на паузу и перемещай

Не хочется. Если проблем больших не предвидится, я бы предпочёл не заморачиваться.

Если успеет попытаться открыть файл после перемещения, но до создания ссылки

Это да, но это вылезет сразу же, а после создания ссылки уже нет. Накалякал скрипт, который делает перемещение и ссылку, чтобы было почти атомарно.

Других косяков я пока не придумал.

Xenesz ★★★★
() автор топика

Так, разбиваем задачу на два случая:

1. Файл открыт, в него что-то льется. Тогда перемещение файла (по крайней мере в пределах одного раздела) никак не повлияет, ибо программа будет обращаться к нему по некоторому дескриптору, и с этой точки зрения все равно где файл лежит. Даже симлинк можешь не создавать. Это общий принцип unix.

2. Открытие/закрытие файла (или перезапуск торрент-клиента). Иными словами, может ли торрент-клиент работать с симлинками. Здесь ответ такой: смотря какой торрент-клиент. Мой Deluge не умеет (помечает симлинк как проблемную закачку). Говорят, Transmission умеет.

Kroz ★★★★★
()
Ответ на: комментарий от Xenesz

Не хочется.

А в чем проблема-то, ни секунды раздачи потерять нельзя? Да к тому же нафига тебе эти костыли со ссылками? У transmission, например, из коробки есть функция переместить данные. Практически уверен, что в других клиентах тоже можно указать новое местоположение файлов.

Worron ★★★
()
Ответ на: комментарий от Worron

ни секунды раздачи потерять нельзя?

Поставишь на паузу — личеры отвалятся и хрен их знает, когда снова прицепятся.

из коробки есть функция переместить данные

Попадаются отдельные торренты и файлы с незначащими именами, трансмишен тут не помощник. В transmission-qt даже название, видимое в клиенте, нельзя поменять.

Xenesz ★★★★
() автор топика
Ответ на: комментарий от Kroz

программа будет обращаться к нему по некоторому дескриптору

Это да. Но меня интересует не отдельный процесс чтения, а поведение клиента в целом. Тут философия юникс, вероятно, бессильна.

может ли торрент-клиент работать с симлинками

Слава ТНБ, трансмишен может.

Xenesz ★★★★
() автор топика

В код смотри, скородрочер.

anonymous
()
Ответ на: комментарий от Xenesz

Ну, тогда у тебя все ответы есть, верно?

Kroz ★★★★★
()
Ответ на: комментарий от Xenesz

файлы с незначащими именами, трансмишен тут не помощник

Не понял, причем тут имена. Просто берешь и из гуя transmission даешь команду переместить все файлы торрента в другое место. Названия файлам или торренту нельзя поменять это да, данной фичи не хватает.

Worron ★★★
()

Перемещаю файлы в контекстном меню файла в торрент клиенте.

f1xmAn ★★★★★
()
Ответ на: комментарий от Xenesz

По двойному щелчку в списке файлов торрента.

anonymous
()

Зачем это нужно, когда в любом нормальном торрент-клиенте есть функция «Переместить данные»?

KivApple ★★★★★
()
Ответ на: комментарий от aidan

Transmission version need to be 2.80+

Ага, вот оно че. Ценители стабильности немного не в курсе были, спасибо.

Worron ★★★
()
Ответ на: комментарий от aidan

У меня более старая версия. Тикет называется «Change/rename torrent folder name» — так реализовано или по-другому? В каком-то клиенте можно было менять отображаемое в гуе название, не трогая ФС.

Xenesz ★★★★
() автор топика
Ответ на: комментарий от KivApple

функция «Переместить данные»?

В трансмишене есть опция «set location» для перемещения данных в другой каталог. Это не то, что мне нужно.

Xenesz ★★★★
() автор топика
Ответ на: комментарий от Xenesz

В transgui (http://code.google.com/p/transmisson-remote-gui/) есть F6 - Set data location и F2 - Rename. В webui этого точно нет. Про оффициальные transmission-gtk/qt - не знаю. В rpc этот метод добавили, а все ли клиенты поддержали - не ведаю.

aidan ★★★★
()

Постоянно такое практикую уже много лет :) Раньше rtorrent, сейчас - transmission. Разделы для закачек и для хранения разные, плюс переименование файлов при хранении в единую систему имён.

KRoN73 ★★★★★
()
Ответ на: комментарий от Xenesz

Тикет называется «Change/rename torrent folder name» — так реализовано или по-другому?

Это 2 разных действия. Сменить download_dir и переименовать сам файл/каталог. Реализованы оба. Но где это поддержано - смотри выше.

aidan ★★★★
()
Ответ на: комментарий от KRoN73

Разделы для закачек и для хранения разные

Как реализовано перемещение? Если средствами клиента — раздача при этом приостанавливается?

Xenesz ★★★★
() автор топика
Ответ на: комментарий от Xenesz

Как реализовано перемещение?

mv & ln

Чаще всего этим скрипт занимается, который находит данные фильма на Кинопоиске, перемещает с перименовыванием в постоянное хранилище, ставит симлинки по оригинальному пути + симлинки в классификации по годам/жанрам/людям/оценкам/странам.

Если не кино или кино не художественное (что редко), то то же самое, но вручную.

С раздачами проблем не возникает. Открытые потоки так и остаются на диске к старому файлу, пока раздача не обновится, новые уже через симлинк будут работать. Есть, конечно, малая вероятность, что раздача попытается начаться в момент копирования, но я с этим не сталкивался.

KRoN73 ★★★★★
()

Проблемы тех, кто не скачивает сразу куда надо

Deleted
()
Ответ на: комментарий от Xenesz

Переименовать файл можно в свойствах торрента.

goingUp ★★★★★
()

qbtorrent умеет перемещать файло во время раздачи сам, без костылей.

Goury ★★★★★
()
Ответ на: комментарий от Xenesz

Вопрос в том, следует ли так делать.

можно. Побьётся конечно(на загрузке), но это не страшно, битые чанки скачаются ещё раз. А на раздаче просто ты кого-то обломаешь, и этому кому-то придётся качать лишний мегабайт с тебя.

Это да, но это вылезет сразу же, а после создания ссылки уже нет. Накалякал скрипт, который делает перемещение и ссылку, чтобы было почти атомарно.

оно и так атомарно. Старая копия остаётся на месте, пока она кому-то нужна. Т.е. удалённый файл продолжает раздаваться, но новые личеры тянут уже из копии. Когда насосётся последний личер сосущий удалённый файл, тогда он и удалится с диска. Если файл большой, то это можно заметить по свободному месту — файла уже нет, а место занято. Ну а в /proc/PID/fs/ лежит ссылка на файл, который удалён (битая). И ещё lsof покажет как [deleted].

emulek ★
()
Ответ на: комментарий от Worron

Названия файлам или торренту нельзя поменять это да, данной фичи не хватает.

это косорылость самого протокола, в ed2k исправлено. В торрентах иногда делают кривыми костылями.

emulek ★
()

Я почти уверен, что перемещение происходит в пределах одной файловой системы, так что используй mkdir и ln для создания жестких линков на файлы.

sdio ★★★★★
()
Ответ на: комментарий от KRoN73

Есть, конечно, малая вероятность, что раздача попытается начаться в момент копирования

нет такой вероятности. Она

1. копирует cat X>Y

2. одновременно удаляет имя X и переименовывает Y=>X

3. теперь старые личеры тянут из старого X(без имени), а вот новые личеры тянут из нового X, который бывший Y

4. когда безымянный старый X будет никому не нужен, он удалится с диска, и место освободится.

И да, transmission ничего для этого не делает, как и vim или там sed. Это проблемы ФС.

emulek ★
()
Ответ на: комментарий от emulek

Побьётся конечно(на загрузке), но это не страшно, битые чанки скачаются ещё раз. А на раздаче просто ты кого-то обломаешь, и этому кому-то придётся качать лишний мегабайт с тебя.

это я писал про говнофс типа fat&ntfs.

emulek ★
()
Ответ на: комментарий от sdio

что перемещение происходит в пределах одной файловой системы, так что используй mkdir и ln для создания жестких линков на файлы.

mv лучше тебя это знает.

emulek ★
()
Ответ на: комментарий от sdio

ну и зря. Потому что ты сказал глупость. mv сама делает хардлинки, и ты можешь в этом убедится выполнив ls -li до и после mv. Инод файла не меняется, т.е. создаётся хардлинк, и старое имя удаляется. Причём с каталогом у тебя(командой ln/mkdir) так не получится, а вот mv умеет.

emulek ★
()
Ответ на: комментарий от emulek

Спасибо К.О., как работает mv я знаю
Я советовал, не делать mv + ln -s, а просто сделать директорию с желаемым именем и хард линки на файлы (с вменяемыми именами) — это для человека, а для торента оставить как есть, т.е. не удалять (места все-равно не прибавится)

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

Я советовал, не делать mv + ln -s, а просто сделать директорию с желаемым именем и хард линки на файлы (с вменяемыми именами) — это для человека, а для торента оставить как есть, т.е. не удалять (места все-равно не прибавится)

потом задолбаешься искать все хардлинки, когда надо будет удалить. Да, я знаю про find / -inum.

emulek ★
()
Ответ на: комментарий от emulek

Их не надо искать.

1. Из торрента удаляешь раздачу.

2. Из директории (для людей) удаляешь просмотренное кино или что там у него.

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
20 февраля 2014 г.
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.