• This repository has been archived on 10/Dec/2017
  • Stars
    star
    412
  • Rank 102,681 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created about 13 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A single-command bittorrent distribution system, based on Twitter's Murder

DEPRECATED PROJECT: I (@russss) am no longer maintaining this code - in fact I've never actually deployed it in production myself, although others have. I won't be accepting any more pull requests for this project. If you're maintaining a fork, let me know and I'll link to it.

About

Herd is a torrent-based file distribution system based on Murder. It allows for quick and easy transfer of small and large files. You can probably use it for other things too.

Herd requires no extra Python modules and includes everything needed for destinations including its own (lightly modified) copy of BitTornado.

Herd has been updated from its fork Horde which removed limitations around large file transfers, peer seeding, and python integration. Herd now has the same capabilities as Horde in that regard.

Differences from Murder

Murder was Twitter's original BitTorrent-based file distribution system. It's pretty dependent on Capistrano and requires that a separate tracker process is started before you run the deploy task.

Herd spawns its own tracker in the background which makes it really trivial to integrate into whatever deployment system you like.

Requirements

Herd needs Python > 2.5 and argparse. If you're using python 2.7+ nothing else is needed as argparse was added to the standard library.

Argparse, if needed, can be installed with easy_install or pip:

pip install argparse
easy_install argparse

Herd also requires that key based passwordless authentication is enabled on all of your target destinations.

Install

git clone https://github.com/russss/Herd
cd Herd && sudo python setup.py install

Herd also supports pypi_server hosting.

Usage

With a hosts file that includes a list of the hosts you want to copy to:

herd myfile.tar.gz /path/to/destination.tar.gz hosts_file

Using a hosts list that is a single string comma separated:

herd myfile.tar.gz /path/to/destination.tar.gz --hostlist "host1,host2,host3"

Reading the host list from stdin.

cat /tmp/hosts_file | herd myfile.tar.gz /path/to/destination.tar.gz hosts_file

More options:

herd --help

Python Integration

Herd can also be imported as a python module. This makes integration into existing projects easy. One would simply need to:

import herd.herd as herd
herd.run_with_opts('localfile', 'remotefile', hostlist='server1,server2')

Credits

More Repositories

1

python-emv

EMV Smartcard Protocol Tool and Library
Python
110
star
2

barclayscrape

A small app to programmatically mainpulate Barclays online banking
JavaScript
56
star
3

postgres_dba_views

A couple of views I find useful when investigating Postgres issues.
41
star
4

polybot

A framework for making social media bots for multiple networks
Python
41
star
5

arduino-gauges

Code for driving physical monitoring gauges using an Arduino
Ruby
29
star
6

dscovr-epic

Tools for fetching, processing, and tweeting images from NASA's DSCOVR spacecraft
Python
23
star
7

covidtracker

Python
19
star
8

rfm69-python

A library to control HopeRF RFM69-series radio modules through SPI and GPIO
Python
17
star
9

bulb-energy-prometheus

Bulb energy metrics exporter for Prometheus
Python
15
star
10

iv

Terminal Image Viewer for iTerm2
Python
12
star
11

rust-invelion

Driver for a number of Chinese UHF RFID Gen2 modules
Rust
12
star
12

ukparliament

A UK Parliament API client for Python
Python
12
star
13

epcexplorer

A tool to explore UHF RFID tags
Rust
10
star
14

esp32-ethernet

An ESP32 board with ethernet support.
KiCad Layout
10
star
15

datasette-geo

A Datasette plugin to make Spatialite databases effortlessly explorable
Python
10
star
16

graphview

A simple app to rotate full-screen graphs on a systems monitoring display
JavaScript
9
star
17

nhs-covid19-app-data

NHS COVID-19 Data
Python
8
star
18

pydsn

Parse the XML which powers http://eyes.nasa.gov/dsn/dsn.html
Python
7
star
19

rust-gs1

Library for dealing with GS1 identifiers
Rust
6
star
20

sentry-irccat

A plugin for Sentry which sends errors to irccat (or any other service which supports irccat's simple socket-based protocol)
Python
6
star
21

coviddata

Yet another python package for accessing COVID-19 data
Python
5
star
22

mjpegproxy

Intelligently proxy an MJPEG stream to a number of clients
Python
5
star
23

erlang-fernet

An implementation of the Fernet crypto format in Erlang.
Erlang
3
star
24

callsign-scrape

JavaScript
3
star
25

git-amqp-tools

Python
3
star
26

raspberry-pi-rfm69

Interface between HopeRF RFM69 radio modules and a Raspberry Pi
KiCad Layout
3
star
27

local_authority_nhs_region

English Local Authority District to NHS Region Mapping
2
star
28

osm-uk-addresses

Python
2
star
29

dsemon

Graphs for generators.
Python
2
star
30

gridstats

Python
2
star
31

pydms

A minimal scanning system
Python
2
star
32

glastonbury-festival-maps

2
star
33

ukhasnet-node-python

A ukhas.net node in python
Python
2
star
34

murmur3-cassandra

A C++ implementation of the Apache Cassandra variant of the MurmurHash3 algorithm
C++
2
star
35

london-elections-2016

Python
1
star
36

ea_scrape

Tools for scraping the Environment Agency web site.
Python
1
star
37

datavis

Various data visualisations I've made
Jupyter Notebook
1
star
38

solartagger

Python
1
star
39

legislationparser

Parse UK legislation XML
Python
1
star
40

insight_imgs

Mastodon bot which posts images from NASA's InSight spacecraft
Python
1
star
41

spritezero-webpack-plugin

JavaScript
1
star
42

power-outage-history

Python
1
star
43

lora-vehicle-tracker

C
1
star
44

xero-tools

Tools for integrating Xero with various other systems
Python
1
star
45

sarfetcher

Fetches Sentinel-1 synthetic aperture radar imagery for a particular area.
Python
1
star
46

maplibregl-layer-switcher

Layer switcher for Mapbox GL JS based on layer prefixes
TypeScript
1
star