Skip to content

Commit 751a6e4

Browse files
Merge pull request #8 from JustinTimperio/development
Development Merge to Master - Version bump 2.1.3
2 parents 5d4f24a + 53d6ef7 commit 751a6e4

3 files changed

Lines changed: 25 additions & 25 deletions

File tree

README.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
# Warp-CLI - _Alpha v2.1_
1+
# Warp-CLI - _Alpha v2.1_
22
TLDR: Warp is a CLI tool designed to make interacting with Facebook's [Warp Speed Data Transfer (WDT)](https://github.com/facebook/wdt) pain-free.
33

44
## Abstract
55
[WDT](https://github.com/facebook/wdt) is designed to provide the highest possible speed when transferring files(to be only hardware and network limited). WDT provides many advantages over most file transfer protocols including: native concurrency, end-to-end encryption, IPV6 support, and the ability to easily achieve +40Gbit speeds when supported. Unlike most file transfer solutions (Except [NORM](https://www.nrl.navy.mil/itd/ncs/products/norm)) WDT provides a native parallel solution for transferring files by separating files into chunks then queuing them across an arbitrary number of threads and TCP connections. In most cases, file transfer times are dramatically reduced compared to traditional methods like FTP or HTTP.
66

7-
While WDT provides several benefits, it requires comparatively lengthy build process. Additionally, if you are already using a modified version of SSH such as [HPN-SSH](https://www.psc.edu/hpn-ssh), you are likely to see smaller performance gains. Since WDT is designed to fully saturate even the highest-end enterprise hardware, it is likely to overwhelm your network. Please consider this when transferring more than a 1TB of files.
7+
While WDT provides several benefits, it requires a comparatively lengthy build process. Additionally, if you are already using a modified version of SSH such as [HPN-SSH](https://www.psc.edu/hpn-ssh), you are likely to see smaller performance gains. Since WDT is designed to fully saturate even the highest-end enterprise hardware, it will overwhelm your network. Please consider this when transferring more than a 1TB of files.
88

99
### [Performance Gains](https://github.com/JustinTimperio/warp-cli/blob/master/Performance.md)
10+
Click the above link to get a detailed comparison of WDT performance compared to traditional file transfer protocols.
1011

1112
## Design
1213
Warp-CLI is mainly a wrapper for the limited existing [CLI app provided by WDT](https://github.com/facebook/wdt/wiki/Getting-Started-with-the-WDT-command-line). While the tool works extremely well, building performant commands for daily use is often unwieldy.
@@ -21,8 +22,8 @@ Warp-CLI shortens this command to:\
2122

2223
Warp.py can also be imported into any python3 script and then used independently of the CLI to send and receive directories.
2324

24-
## Usage
25-
Warp-CLI features a number of shortcuts that attempt to make sending files as trivial and intuitive as possible.
25+
## CLI Usage
26+
Warp-CLI features several shortcuts that attempt to make sending files as trivial and intuitive as possible.
2627

2728
### Transfer Modes
2829
Warp-CLI provides three core transfer modes:
@@ -34,61 +35,62 @@ Warp-CLI provides three core transfer modes:
3435
`warp -p /dir/to/push dest_ssh /dir/to/receive`
3536

3637
### Flags
37-
- `-tr, --threads` - default=8: In most cases, 8 threads is sufficient to saturate the connection. You may want to raise or lower this depending on your hardware.
38-
- `-ri, --report_interval`- default=5000: This limits the heartbeat report to 5000 milliseconds(5 seconds).
39-
- `-ts, --throttle_speed` - default=-1: This setting throttles the transfer to an average mbytes per second.
40-
- `-ow, --overwrite` - default=false: Allow the receiver to overwrite existing files.
38+
- `-tr, --threads`: default=8: You may want to raise or lower this depending on your hardware.
39+
- `-ri, --report_interval`: default=5000: This limits the heartbeat report to 5000 milliseconds(5 seconds).
40+
- `-ts, --throttle_speed`: default=-1: This setting throttles the transfer to an average mbytes per second.
41+
- `-ow, --overwrite`: Allow the receiver to overwrite existing files.
42+
- `-sym, --follow_sym`: Let WDT follow symlinks during transfer.
4143

4244
### Macros
4345
Warp-CLI also includes a macro system for repeating custom transfers with a single command. Macros are stored transfer commands (stored in ~/warp-cli/macros) that are invoked with `warp -m macro_name`.
4446

4547
To generate a macro:\
46-
`warp -gm daily_backup -f source_ssh /dir/to/backup /dir/to/store/backup -tr 16 -ri 10000 -ow true -cp '-skip_writes=true -start_port=12345'`
48+
`warp -gm daily_backup -f source_ssh /dir/to/backup /dir/to/store/backup -ow -tr 16 -ri 10000 -cp '-skip_writes=true -start_port=12345'`
4749

4850
This macro can now be called with:\
4951
`warp -m daily_backup`
5052

5153
### Utilities
52-
Warp-CLI provides a number of utilities to streamline the daily use of WTD when sending files in high frequency.
54+
Warp-CLI provides a number of utilities and custom options to assist in more complicated transfers and WDT deployment.
5355

5456
- -cp, --custom_parms: Inject any additional parameters available from `wdt --help`.\
5557
`warp -f /dir/to/receive source_ssh /dir/to/send -cp '-skip_writes=true -start_port=12345'`
5658
- -m, --macro: Execute a custom macro from ~/warp-cli/config/ by name.\
5759
`warp -m macro_name`
5860
- -gm, --gen_macro: Enter your transfer command as normal and include the gen_macro with a name for your new macro.\
59-
`warp -gm macro_name -f source_ssh /dir/to/fetch /dir/to/receive -tr 16 -ri 10000 -ow true`
60-
- -d, --daemon: Start a permanent receiver daemon on a local directory and export a file containing the connection URL and meta-data.\
61+
`warp -gm macro_name -f source_ssh /dir/to/fetch /dir/to/receive -tr 16 -ri 10000 -ow`
62+
- -d, --daemon: Start a permanent receiver daemon on a local directory and export a file containing connection meta-data.\
6163
`warp --daemon /dir/to/receive`
6264
- -i, --install: Attempt to install WDT and dependencies.\
6365
`warp --install`
64-
- -ri, --remote_install: Attempt to install WDT and dependencies on a remote machine.\
65-
`warp -ri ssh.alias /dir/to/install`
66+
- -ir, --install_remote: Attempt to install WDT and dependencies on a remote machine.\
67+
`warp -ir ssh.alias /dir/to/install`
6668
- -rm, --uninstall: Uninstall Warp-CLI and config files.\
6769
`warp --uninstall`
6870

6971
## Setup - _STILL UNDER DEVELOPMENT_
70-
Since WDT requires multiple dependencies, Warp-CLI attempts to provide a fully automated installation process for as many linux flavors as possible. If your flavor is not supported, please refer to the [manual install documentation](https://github.com/facebook/wdt/blob/master/build/BUILD.md). Once you install WDT and its dependencies Warp-CLI will function normally.
72+
Since WDT requires multiple dependencies, Warp-CLI attempts to provide a fully automated installation process for as many Linux flavors as possible. If your flavor is not supported, please refer to the [manual install documentation](https://github.com/facebook/wdt/blob/master/build/BUILD.md). Once you install WDT and its dependencies Warp-CLI will function normally.
7173

7274
### Automatic Installation
7375
To install WDT and Warp-CLI automatically on your machine:
7476
1. `sudo mkdir /usr/app && sudo chmod 777 /usr/app`
7577
2. `git clone --recurse-submodules https://github.com/JustinTimperio/warp-cli.git /usr/app/warp-cli`
7678
3. `python3 /usr/app/warp-cli/core/warp.py --install`
7779

78-
So far, automatic installation is available on:
80+
**So far, automatic installation is available on:**
7981
- Arch Linux
8082
- Ubuntu 19.xx and 18.xx Workstation and Server
8183
- Debian 10.x and 9.x
8284
- Fedora 30, 29 and 28 Workstation and Server
8385

84-
WDT requires CMAKE version > 3.2 or greater, making it incompatible on:
85-
- CentOS 7
86-
- Debian 8
87-
8886
### Uninstall
8987
Warp-CLI will remove itself from the machine but WDT will remain installed.\
9088
`warp --uninstall`
9189

90+
### WDT Incompatible OS's
91+
WDT requires CMAKE version > 3.2 or greater, making it incompatible on:
92+
- CentOS 7
93+
- Debian 8
9294

9395
### OpenSSH for URL Sharing
9496
Warp uses ssh to securely share connection URLs via a standard Linux pipe. It expects the use of an RSA key, which does not require a user password. While it is possible to use PAM authentication or key passwords, I have not yet added this as a feature.

core/setup.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /usr/bin/env python3
22
#### WDT Wrapper - https://github.com/facebook/wdt
3-
## Version 2.1.2
3+
version = '2.1.3'
44
from python_scripts import *
55

66
############
@@ -32,7 +32,6 @@ def build_wdt(base_dir):
3232
mkdir(base_dir + '/build', sudo=False)
3333
os.system('cd ' + base_dir + '/build && git clone https://github.com/facebook/folly.git')
3434
os.system('cd ' + base_dir + '/build/folly && git checkout v2019.09.02.00')
35-
### unused command while folly is broke
3635
# os.system('cd ' + base_dir + '/build/folly && git checkout "$(git describe --abbrev=0 --always)"')
3736
os.system('cd ' + base_dir + '/build && git clone https://github.com/facebook/wdt.git')
3837
mkdir(base_dir + '/build/wdt/_build', sudo=False)
@@ -47,7 +46,6 @@ def setup_warp(base_dir):
4746
mkdir(base_dir + '/macros', sudo=False)
4847
os.system('sudo chmod 777 ' + base_dir + '/pool ' + base_dir + '/macros')
4948
### link warp in bash to warp.py
50-
rm_file('/usr/bin/warp', sudo=True)
5149
os.system('sudo ln -s ' + base_dir + '/core/warp.py /usr/bin/warp')
5250
print('Warp-CLI is Now Setup and Registered in /usr/bin!')
5351

core/warp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /usr/bin/env python3
22
#### WDT Wrapper - https://github.com/facebook/wdt
3-
version = '2.1.2'
3+
version = '2.1.3'
44
from python_scripts import *
55
import argparse
66

@@ -90,7 +90,7 @@ def start_recv_daemon(recv_path):
9090
parser.add_argument("-ri", "--report_interval", default="3000", metavar='INT', help="Update interval in milliseconds for transfer report updates.")
9191
parser.add_argument("-ts", "--throttle_speed", default="-1", metavar='INT', help=" Throttle the transfer to an average mbytes per second.")
9292
parser.add_argument("-ow", "--overwrite", action='store_true', help="Allow the receiver to overwrite existing files in a directory.")
93-
parser.add_argument("-sym", "--follow_sym", action='store_false', help="Let WDT follow symlinks during transfer.")
93+
parser.add_argument("-sym", "--follow_sym", action='store_true', help="Let WDT follow symlinks during transfer.")
9494
parser.add_argument("-cp", "--custom_parms", default="", metavar="-CUSTOM_PARM value", help="Inject any additional parameters available in `wdt --help`.")
9595
### utilities
9696
parser.add_argument("-d", "--daemon", metavar='/DIR/FOR/DAEMON', help="Start a receiver daemon on a directory. Returns a connection url to ~/warp-cli/macros.")

0 commit comments

Comments
 (0)