A blazingly fast S3 file uploader with a beautiful CLI interface, powered by Bun.
Watch FilesFly in action - blazing fast uploads with a beautiful progress bar:
- 🚄 Lightning Fast: Utilizes Bun's native S3 client for maximum performance
- 📊 Real-time Progress: Beautiful progress bar with upload speed and ETA
- 🔒 Secure: Safe credential management via config file
- 🎨 Beautiful UI: Colorful and intuitive command-line interface
- 🔄 URL-Safe: Automatic filename sanitization for web compatibility
- ⚡️ Simple: Just one command to upload or delete files
- 🛡️ Type-Safe: Written in TypeScript for reliability
curl -fsSL https://raw.githubusercontent.com/ralf-boltshauser/filesfly/master/install.sh | bash
# Install from source
git clone https://github.com/ralf-boltshauser/filesfly.git
cd filesfly
bun install
bun link
Create a configuration file at ~/.config/filesfly/filesfly.json
:
{
"ENDPOINT": "your-endpoint",
"ACCESS_KEY_ID": "your-access-key",
"SECRET_ACCESS_KEY": "your-secret",
"BUCKET": "your-bucket",
"REGION": "your-region"
}
FilesFly provides several commands to manage your S3 files:
# Test your S3 connection
ff check
# Upload files
ff upload image.jpg # Upload with original filename
ff upload data.csv -o report.csv # Upload with custom filename
ff image.jpg # Quick upload (shorthand)
# Delete files
ff delete image.jpg # Delete a file from S3
# Get help
ff --help # Show all commands
ff upload --help # Show upload options
# Clone the repository
git clone https://github.com/ralf-boltshauser/filesfly.git
cd filesfly
bun install
# Run locally
bun run src/index.ts
├── bin/ # CLI entry point
├── src/
│ ├── cli/ # CLI setup and handling
│ ├── config/ # Configuration management
│ ├── s3/ # S3 operations
│ └── utils/ # Utility functions
└── tests/ # Test files
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Bun
- Progress bar by cli-progress
- Colors by ansi-colors
- Add a "list" command to list all files in a bucket, with simple filters and sorting
- Add a "search" command to search for files in a bucket
- DB Backuper: You just plug and play your db credentials, s3 credentials and backup config like interval and it just pushed sql db backups.
- File Versioning: Instead of "final_edit_v3.mp4", v4, v5, v6 _final_final... you just use a simple cli to keep track of versions and roll backs etc.
- Simple Backup: Just simple folders that can be specified to be backuped once a day or so.