vaayu 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vaayu-0.1.0/LICENSE +21 -0
- vaayu-0.1.0/PKG-INFO +386 -0
- vaayu-0.1.0/README.md +348 -0
- vaayu-0.1.0/pyproject.toml +60 -0
- vaayu-0.1.0/setup.cfg +4 -0
- vaayu-0.1.0/tests/test_cli.py +16 -0
- vaayu-0.1.0/tests/test_cloud.py +13 -0
- vaayu-0.1.0/tests/test_retry.py +19 -0
- vaayu-0.1.0/tests/test_utils.py +24 -0
- vaayu-0.1.0/tests/test_verify.py +10 -0
- vaayu-0.1.0/vaayu/__init__.py +9 -0
- vaayu-0.1.0/vaayu/__main__.py +4 -0
- vaayu-0.1.0/vaayu/cli.py +318 -0
- vaayu-0.1.0/vaayu/cloud.py +17 -0
- vaayu-0.1.0/vaayu/compress.py +20 -0
- vaayu-0.1.0/vaayu/ssh_client.py +102 -0
- vaayu-0.1.0/vaayu/transfer.py +333 -0
- vaayu-0.1.0/vaayu/utils.py +83 -0
- vaayu-0.1.0/vaayu/verify.py +11 -0
- vaayu-0.1.0/vaayu/watch.py +30 -0
- vaayu-0.1.0/vaayu.egg-info/PKG-INFO +386 -0
- vaayu-0.1.0/vaayu.egg-info/SOURCES.txt +24 -0
- vaayu-0.1.0/vaayu.egg-info/dependency_links.txt +1 -0
- vaayu-0.1.0/vaayu.egg-info/entry_points.txt +2 -0
- vaayu-0.1.0/vaayu.egg-info/requires.txt +10 -0
- vaayu-0.1.0/vaayu.egg-info/top_level.txt +1 -0
vaayu-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Eshan Singh
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
vaayu-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vaayu
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A modern, secure, parallel, and resumable SSH file transfer CLI (scp/rsync replacement).
|
|
5
|
+
Author: Eshan Singh
|
|
6
|
+
Maintainer: Eshan Singh
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/R0X4R/vaayu
|
|
9
|
+
Project-URL: Bug Reports, https://github.com/R0X4R/vaayu/issues
|
|
10
|
+
Project-URL: Source, https://github.com/R0X4R/vaayu
|
|
11
|
+
Project-URL: Documentation, https://github.com/R0X4R/vaayu#readme
|
|
12
|
+
Keywords: ssh,sftp,file transfer,resumable,async,zstd,cli
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Topic :: System :: Networking
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Classifier: Environment :: Console
|
|
23
|
+
Classifier: Intended Audience :: Developers
|
|
24
|
+
Classifier: Intended Audience :: System Administrators
|
|
25
|
+
Requires-Python: >=3.9
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: asyncssh>=2.14.2
|
|
29
|
+
Requires-Dist: zstandard>=0.22.0
|
|
30
|
+
Requires-Dist: rich>=13.7.0
|
|
31
|
+
Requires-Dist: watchdog>=4.0.0
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
35
|
+
Requires-Dist: mypy>=1.10.0; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff>=0.5.0; extra == "dev"
|
|
37
|
+
Dynamic: license-file
|
|
38
|
+
|
|
39
|
+
<div align="center">
|
|
40
|
+
|
|
41
|
+

|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
**Modern • Secure • Parallel • Resumable**
|
|
45
|
+
|
|
46
|
+
[](https://www.python.org/downloads/)
|
|
47
|
+
[](https://opensource.org/licenses/MIT)
|
|
48
|
+
[](https://www.openssh.com/)
|
|
49
|
+
|
|
50
|
+
Vaayu is the next-generation SSH file transfer tool that moves your data like air - fast, light, and omnipresent.
|
|
51
|
+
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## ✨ Why Vaayu?
|
|
57
|
+
|
|
58
|
+
**Vaayu** (Sanskrit: वायु) means "air"—the element that flows everywhere with speed and grace. Just as air adapts to any environment while maintaining its essential properties, Vaayu delivers files across networks with uncompromising reliability and performance.
|
|
59
|
+
|
|
60
|
+
### 🚀 Core Capabilities
|
|
61
|
+
|
|
62
|
+
| Feature | Description |
|
|
63
|
+
|---------|-------------|
|
|
64
|
+
| **🔒 Secure by Design** | Modern SSH ciphers (ChaCha20-Poly1305, AES-256-GCM) with optional strict host key verification |
|
|
65
|
+
| **⚡ Lightning Fast** | Parallel transfers with intelligent concurrency auto-tuning |
|
|
66
|
+
| **🔄 Bulletproof Resume** | Atomic writes with `.part` files and intelligent offset recovery |
|
|
67
|
+
| **🛡️ Data Integrity** | SHA-256 verification with robust remote fallback chains |
|
|
68
|
+
| **🎯 Smart Operations** | Recursive directory sync, wildcard matching, and real-time progress |
|
|
69
|
+
| **👁️ Live Monitoring** | Watch mode for continuous synchronization |
|
|
70
|
+
| **🌐 Universal** | Windows, macOS, Linux (Python 3.9+) |
|
|
71
|
+
|
|
72
|
+
### 📡 Transfer Modes
|
|
73
|
+
|
|
74
|
+
- **📤 Send** — Local → Remote with recursive directory support
|
|
75
|
+
- **📥 Get** — Remote → Local with wildcard expansion
|
|
76
|
+
- **🔄 Relay** — Remote → Remote without local download
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
## 🏗️ Architecture
|
|
80
|
+
|
|
81
|
+
Built on enterprise-grade foundations:
|
|
82
|
+
|
|
83
|
+
- **AsyncIO + AsyncSSH** — High-performance asynchronous I/O
|
|
84
|
+
- **Rich Progress** — Beautiful terminal UI with real-time metrics
|
|
85
|
+
- **Watchdog** — Filesystem monitoring for live sync
|
|
86
|
+
- **zstd** — Optional compression pipeline (future enhancement)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## 🚀 Quick Start
|
|
90
|
+
|
|
91
|
+
### Installation
|
|
92
|
+
|
|
93
|
+
**Windows (PowerShell)**
|
|
94
|
+
```powershell
|
|
95
|
+
python -m venv .venv
|
|
96
|
+
.\.venv\Scripts\Activate.ps1
|
|
97
|
+
pip install -e .
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**macOS/Linux (Bash)**
|
|
101
|
+
```bash
|
|
102
|
+
python3 -m venv .venv
|
|
103
|
+
source .venv/bin/activate
|
|
104
|
+
pip install -e .
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Verify Installation
|
|
108
|
+
```bash
|
|
109
|
+
vaayu --help
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## 📚 Command Reference
|
|
114
|
+
|
|
115
|
+
### Global Options
|
|
116
|
+
|
|
117
|
+
| Short | Long | Description |
|
|
118
|
+
|-------|------|-------------|
|
|
119
|
+
| `-h` | `--help` | Show help message |
|
|
120
|
+
| `-p` | `--port` | SSH port (default: 22) |
|
|
121
|
+
| `-u` | `--username` | SSH username |
|
|
122
|
+
| `-P` | `--password` | SSH password |
|
|
123
|
+
| `-i` | `--identity` | Path to private key |
|
|
124
|
+
| `-j` | `--parallel` | Parallel transfer jobs |
|
|
125
|
+
| `-r` | `--retries` | Max retries per file (default: 5) |
|
|
126
|
+
| `-b` | `--backoff` | Initial backoff seconds (default: 0.5) |
|
|
127
|
+
| `-c` | `--compress` | Enable compression |
|
|
128
|
+
| `-z` | `--zstd-level` | Compression level (default: 3) |
|
|
129
|
+
| `-k` | `--verify-host-key` | Strict host key verification |
|
|
130
|
+
| `-n` | `--no-verify` | Skip hash verification |
|
|
131
|
+
|
|
132
|
+
### Commands
|
|
133
|
+
|
|
134
|
+
| Command | Description |
|
|
135
|
+
|---------|-------------|
|
|
136
|
+
| `send` | Transfer files from local to remote |
|
|
137
|
+
| `get` | Transfer files from remote to local |
|
|
138
|
+
| `relay` | Transfer files between two remote hosts |
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
## 💼 Usage Examples
|
|
142
|
+
|
|
143
|
+
### 📤 Send Operations
|
|
144
|
+
|
|
145
|
+
**Basic File Upload**
|
|
146
|
+
```bash
|
|
147
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup file.txt
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Recursive Directory Upload**
|
|
151
|
+
```bash
|
|
152
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup /local/project/
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Wildcard Upload with High Parallelism**
|
|
156
|
+
```bash
|
|
157
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 -j 16 send alice@server.com /remote/logs *.log
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Password Authentication**
|
|
161
|
+
```bash
|
|
162
|
+
vaayu -u alice -P mypassword send alice@server.com /remote/backup document.pdf
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Custom Port and Strict Host Key Verification**
|
|
166
|
+
```bash
|
|
167
|
+
vaayu -u alice -p 2222 -k -i ~/.ssh/id_ed25519 send alice@server.com /backup file.txt
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Multiple Files and Directories**
|
|
171
|
+
```bash
|
|
172
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /backup file1.txt dir1/ *.csv
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Live Watch Mode**
|
|
176
|
+
```bash
|
|
177
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/www /local/website/ -W
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 📥 Get Operations
|
|
181
|
+
|
|
182
|
+
**Basic File Download**
|
|
183
|
+
```bash
|
|
184
|
+
vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/downloads /remote/file.txt
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Wildcard Download**
|
|
188
|
+
```bash
|
|
189
|
+
vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/logs /var/log/*.log
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Recursive Directory Download**
|
|
193
|
+
```bash
|
|
194
|
+
vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/backup /remote/project/
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Multiple Remote Paths**
|
|
198
|
+
```bash
|
|
199
|
+
vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/data /remote/file1.txt /remote/dir/ /remote/*.csv
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**High Concurrency Download**
|
|
203
|
+
```bash
|
|
204
|
+
vaayu -u bob -i ~/.ssh/id_ed25519 -j 32 get bob@server.com /local/download /remote/bigdata/
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### 🔄 Relay Operations
|
|
208
|
+
|
|
209
|
+
**Direct Remote-to-Remote Transfer**
|
|
210
|
+
```bash
|
|
211
|
+
vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@source.com admin@dest.com /data/file.txt /backup/file.txt
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Multiple File Relay**
|
|
215
|
+
```bash
|
|
216
|
+
vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@source.com admin@dest.com /data/file1.txt /data/file2.txt /backup/file1.txt /backup/file2.txt
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Cross-Server Directory Sync**
|
|
220
|
+
```bash
|
|
221
|
+
vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@prod.com admin@backup.com /var/www/ /backups/www/
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### ⚙️ Advanced Usage
|
|
225
|
+
|
|
226
|
+
**Resume Interrupted Transfer**
|
|
227
|
+
```bash
|
|
228
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup largefile.zip
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Skip Verification for Trusted Networks**
|
|
232
|
+
```bash
|
|
233
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 -n send alice@server.com /remote/backup *.txt
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Custom Retry Strategy**
|
|
237
|
+
```bash
|
|
238
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 -r 10 -b 1.0 send alice@server.com /backup file.txt
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Compression Enabled**
|
|
242
|
+
```bash
|
|
243
|
+
vaayu -u alice -i ~/.ssh/id_ed25519 -c -z 6 send alice@server.com /backup archive.tar
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
## 🔧 Performance Tuning
|
|
248
|
+
|
|
249
|
+
### Parallelism Guidelines
|
|
250
|
+
|
|
251
|
+
| File Count | Recommended `-j` | Use Case |
|
|
252
|
+
|------------|------------------|----------|
|
|
253
|
+
| 1-10 | 2-4 | Large files |
|
|
254
|
+
| 10-100 | 4-8 | Mixed workload |
|
|
255
|
+
| 100-1000 | 8-16 | Many small files |
|
|
256
|
+
| 1000+ | 16-32 | Massive parallel I/O |
|
|
257
|
+
|
|
258
|
+
### Network Optimization
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
vaayu -u user -j 8 -r 3 -b 0.2 send user@host /dest /large/dataset/
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
## 🛡️ Security Features
|
|
266
|
+
|
|
267
|
+
### Authentication Methods
|
|
268
|
+
|
|
269
|
+
- **SSH Key Authentication** (Recommended)
|
|
270
|
+
- **Password Authentication**
|
|
271
|
+
- **SSH Agent Support**
|
|
272
|
+
|
|
273
|
+
### Encryption Standards
|
|
274
|
+
|
|
275
|
+
- **ChaCha20-Poly1305@openssh.com** (Primary)
|
|
276
|
+
- **AES-256-GCM@openssh.com** (Fallback)
|
|
277
|
+
|
|
278
|
+
### Data Integrity
|
|
279
|
+
|
|
280
|
+
- **SHA-256 Verification** (Default)
|
|
281
|
+
- **Atomic Writes** (`.part` → rename)
|
|
282
|
+
- **Multiple Remote Hash Sources**
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
## 🏥 Error Handling & Recovery
|
|
286
|
+
|
|
287
|
+
### Automatic Recovery Features
|
|
288
|
+
|
|
289
|
+
- **Resume from Interruption** — Continues from last byte
|
|
290
|
+
- **Exponential Backoff** — Smart retry timing
|
|
291
|
+
- **Hash Verification** — Detects corruption
|
|
292
|
+
- **Atomic Operations** — No partial writes
|
|
293
|
+
|
|
294
|
+
### Common Issues & Solutions
|
|
295
|
+
|
|
296
|
+
| Issue | Solution |
|
|
297
|
+
|-------|----------|
|
|
298
|
+
| Connection timeout | Increase `-r` retries and `-b` backoff |
|
|
299
|
+
| Permission denied | Check SSH key permissions and remote path access |
|
|
300
|
+
| Hash mismatch | Network corruption; transfer will auto-retry |
|
|
301
|
+
| Host key verification failed | Use `-k` flag with proper known_hosts |
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
## 🧪 Testing & Validation
|
|
305
|
+
|
|
306
|
+
### Run Test Suite
|
|
307
|
+
```bash
|
|
308
|
+
pytest -q
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Feature Validation Commands
|
|
312
|
+
|
|
313
|
+
**Resume Testing**
|
|
314
|
+
```bash
|
|
315
|
+
vaayu -u user send user@host /dest largefile.bin
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**Verification Testing**
|
|
319
|
+
```bash
|
|
320
|
+
vaayu -u user send user@host /dest testfile.txt
|
|
321
|
+
sha256sum testfile.txt
|
|
322
|
+
ssh user@host "sha256sum /dest/testfile.txt"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Performance Testing**
|
|
326
|
+
```bash
|
|
327
|
+
time vaayu -u user -j 16 send user@host /dest /large/dataset/
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
## 📊 Project Structure
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
vaayu/
|
|
335
|
+
├── cli.py # Command-line interface
|
|
336
|
+
├── ssh_client.py # AsyncSSH wrapper
|
|
337
|
+
├── transfer.py # Core transfer logic
|
|
338
|
+
├── verify.py # Hash verification
|
|
339
|
+
├── utils.py # Utilities and helpers
|
|
340
|
+
├── watch.py # Filesystem monitoring
|
|
341
|
+
├── compress.py # Compression (future)
|
|
342
|
+
└── cloud.py # Cloud protocols (future)
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
## 🗺️ Roadmap
|
|
347
|
+
|
|
348
|
+
### Upcoming Features
|
|
349
|
+
|
|
350
|
+
- 🗜️ **In-stream zstd compression**
|
|
351
|
+
- 🔍 **Enhanced remote hash detection**
|
|
352
|
+
- 📄 **Configuration file support**
|
|
353
|
+
- 🌩️ **Cloud provider integration**
|
|
354
|
+
- 📈 **Advanced performance metrics**
|
|
355
|
+
- 🔐 **Certificate-based authentication**
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
## 🤝 Contributing
|
|
359
|
+
|
|
360
|
+
We welcome contributions! Please check out our development setup:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
python -m venv .venv
|
|
364
|
+
source .venv/bin/activate # or .venv\Scripts\Activate.ps1 on Windows
|
|
365
|
+
pip install -e .[dev]
|
|
366
|
+
pytest
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## 📄 License
|
|
372
|
+
|
|
373
|
+
Released under the **MIT License**. See [LICENSE](LICENSE) for details.
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
<div align="center">
|
|
378
|
+
|
|
379
|
+
**Built with ❤️ for the SSH community**
|
|
380
|
+
|
|
381
|
+
*Vaayu — Where files flow like air*
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
</div>
|
|
385
|
+
|
|
386
|
+
> 📝 **Note**: This README was generated with AI assistance because the developer was too lazy to write comprehensive documentation (but smart enough to make AI do it properly). 😴✨
|