다른 디렉터리의 파일을 사용하여 CLI에서 토렌트 만들기

다른 디렉터리의 파일을 사용하여 CLI에서 토렌트 만들기

내 디렉터리 구조는 다음과 같습니다.

dirA
   fileA1
   fileA2
   ...
dirB
   fileB1
   fileB2
   ...

CLI 유틸리티를 사용하여 다음이 포함된 토렌트를 생성하고 싶습니다.

dirA/fileA1
dirB/fileB1

(참고: 이것은 단순화된 예입니다. 실제로 각 디렉터리에는 4개의 디렉터리와 수천 개의 파일이 있으며 각 디렉터리에서 약 100개의 파일을 선택하려고 합니다. 따라서 단순히 특정 파일을 제외하는 솔루션은 시작되지 않습니다.)

내가 지금까지 시도한 것 :

  • 급류단일 파일이나 디렉터리만 지정할 수 있습니다.
  • 급류단일 파일이나 디렉터리만 지정할 수 있습니다.
  • 전송 생성단일 파일이나 디렉터리만 지정할 수 있습니다.
  • py3torrentcreator단일 파일이나 디렉터리만 지정할 수 있습니다. 제외할 파일 패턴을 지정할 수 있지만 개별적으로 제외하기에는 다른 파일이 너무 많습니다.

또한 Python 바인딩을 사용해 보았지만 libtorrent해당 add_files 메소드는 디렉토리 이름을 제거합니다.

>>> import libtorrent as lt
>>> fs = lt.file_storage()
>>> lt.add_files(fs, 'dirA/fileA1')
>>> lt.add_files(fs, 'dirB/fileB1')
>>> print fs.at(0).path
fileA1
>>> t = lt.create_torrent(fs)
>>> lt.set_piece_hashes(t, '.')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: No such file or directory

이를 수행할 수 있는 방법이 있습니까?

답변1

내가 아는 한, 가장 쉬운 방법은 토렌트에 추가하려는 다양한 파일이나 디렉터리에 대한 심볼릭 링크가 포함된 디렉터리를 만드는 것입니다.

상위 디렉토리에 심볼릭 링크 추가
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir

당신의 씨앗을 만들어보세요
Transmission-create를 사용하여 테스트하면 이 소스 폴더로 새 토렌트를 생성할 수 있으며 모든 심볼릭 링크가 통과됩니다.

transmission-create ~/Shared/parent-dir/

상위 디렉터리의 하위 항목이 아닌 파일에 대한 전체 파일 경로는 토렌트의 메타 정보에 저장할 수 없습니다. 피어가 다중 파일 토렌트를 다운로드하면 메타정보에 있는 토렌트 이름을 사용하여 디렉터리가 생성됩니다. 이 디렉터리는 메타정보에 포함된 모든 파일의 최상위 상위 디렉터리 역할을 합니다.

제가 호출한 토렌트에 대한 메타정보의 출력입니다 bt-symlinks.torrent. 파일 경로만 메타 정보에 저장되며 항상 이름(infile)으로 시작됩니다.1그들의 최상위로 사용2목차.

transmission-show bt-symlinks.torrent

Name: bt-symlinks
File: .torrent

GENERAL

  Name: bt-symlinks
  Hash: 35af9b734284f9259763defe6095424fe3b79b42
  Created by: Transmission/2.82 (14160)
  Created on: Sat Dec 27 12:04:59 2014
  Piece Count: 2357
  Piece Size: 64.00 KiB
  Total Size: 154.4 MB
  Privacy: Public torrent

TRACKERS

FILES

  bt-symlinks/bt-symlinks.torrent (57.40 kB)
  bt-symlinks/gifs/Bill-Cosby-Jell-o-GIF.gif (810.3 kB)
  bt-symlinks/gifs/Firefly_Lantern_Animation_by_ProdigyBombay.gif (485.2 kB)
  bt-symlinks/gifs/L-cake.gif (455.2 kB)
  bt-symlinks/gifs/L-sweets.gif (871.0 kB)
  bt-symlinks/gifs/Metroid (NES) Music - Kraids Hideout.mp4 (4.16 MB)
  bt-symlinks/gifs/Phantasy Star II_Mother Brain.gif (530.5 kB)

답변2

torrenttools를 사용하여 적절한 정규식 패턴을 --include 옵션에 전달하면 이 작업을 수행할 수 있습니다.

torrenttools create --include ".*dirA/fileA1" ".*dirB/fileB1" dir

바라보다:https://github.com/fbdtemme/torrenttools

면책조항: 저는 이 도구의 작성자입니다.

관련 정보