https://github.com/infura/ipfs-pump
A tool to transfer data between IPFS nodes or storage
https://github.com/infura/ipfs-pump
ipfs
Last synced: about 1 year ago
JSON representation
A tool to transfer data between IPFS nodes or storage
- Host: GitHub
- URL: https://github.com/infura/ipfs-pump
- Owner: INFURA
- License: mit
- Created: 2019-06-21T16:03:14.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-04-25T21:13:33.000Z (about 3 years ago)
- Last Synced: 2025-03-24T00:41:24.928Z (about 1 year ago)
- Topics: ipfs
- Language: Go
- Homepage:
- Size: 77.1 KB
- Stars: 60
- Watchers: 37
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# ipfs-pump
`ipfs-pump` is a command line tool to copy data between IPFS nodes, cluster or storage.
It support multiple interfaces:
- the IPFS API
- direct access to a FlatFS datastore
- direct access to a Badger datastore
- direct access to a S3 datastore
- a file with a list of CID
## Concepts
An `Enumerator` is a source that will enumerate the list of existing blocks.
A `Collector` is a source that where to retrieve block's data.
A `Drain` is a destination where to push blocks.
Note: even though you will likely want the `Enumerator` and the `Collector` to be the same source, they don't necessarily have to.
## Install
```
go get -u github.com/INFURA/ipfs-pump
```
## Usage and examples
You need to provide as arguments the three types of `Enumerator`, `Collector` and `Drain`, as well as the corresponding configuration flags.
Copy between two live nodes using the API:
```
ipfs-pump \
apipin --enum-api-pin-url=127.0.0.1:5001 --enum-api-pin-stream \
api --coll-api-url=127.0.0.1:5001 \
api --drain-api-url=127.0.0.1:5002 \
--worker=10
```
Copy from a FlatFS storage to a Badger storage when the nodes are stopped:
```
ipfs-pump \
flatfs --enum-flatfs-path=~/.ipfs/blocks \
flatfs --coll-flatfs-path=~/.ipfs/blocks \
badger --drain-badger-path=~/.ipfs/badgerds \
--worker=50
```
## Parallel processing
Using the `--worker` flag you can enable parallel processing and greatly increase the throughput.
## License
MIT