Fast, cross-platform file copying with robust safeguards and drag‑and‑drop support.
Exporter is a production‑grade, interactive command‑line utility for moving and copying files and folders across Windows, macOS, and Linux. It bridges the gap between the speed of the terminal and the visual convenience of a GUI.
Unlike standard cp or copy commands, Exporter actively protects your data with a non‑destructive Undo system, visual progress bars, and graceful handling of massive file transfers.
- 🔄 Smart Undo System – Accidentally overwrite a file? Exporter backs up overwritten files automatically and can restore them instantly if you hit Undo.
- 🖱️ Drag & Drop Ready – Robust path parsing handles dragging multiple files from Windows File Explorer or macOS Finder directly into the terminal – spaces and quotes are handled flawlessly.
- 📊 Visual Progress Bars – Track large file and folder transfers with accurate, byte‑based progress indicators.
- 🛡️ Failsafe Operations – Hit
Ctrl+Chalfway through a large transfer? Exporter automatically cleans up the corrupted partial file. - 🔗 Symlink Preservation – Intelligently detects and preserves symbolic links rather than duplicating the underlying files.
- 🧩 Zero Hard Dependencies – Runs entirely on Python's standard library out of the box (with optional enhanced trash support).
Clone the repository and install using one of the methods below:
git clone https://github.com/SS-Sauron/Exporter.git
cd ExporterStandard Installation:
pip install .Recommended — With Safe Undo / Recycle Bin Support:
Installs the optional send2trash dependency so that undone files are sent to your OS trash bin instead of being permanently erased.
pip install .[trash]Development Mode:
For those who plan to modify the source and want changes to reflect instantly:
pip install -e .[trash]Once installed, launch Exporter from any directory in your terminal:
exporterYou'll be greeted by the interactive dashboard:
==================================================
📂 TARGET: /home/user/Desktop
[1] Copy files/folders (any number, drag‑and‑drop or list)
[2] Settings
[3] Undo last copy
[0] Exit
Your choice:
💡 Pro-Tip: Press
1, then drag & drop files/folders from your native file manager directly into the terminal window. PressEnterto process. Made a mistake? Type3to instantly roll back the entire batch!
Instead of memorizing complex command‑line flags, Exporter guides you through a persistent terminal UI.
- Press
1to start a copy operation. - Drag and drop any number of different files/folders into the terminal.
- Press
Enter. Exporter calculates sizes, renders an active progress bar, manages conflicts safely, and logs the transaction.
All copy transactions and runtime errors are quietly tracked for your review at:
~/.exporter_log.txt
Press 2 from the main menu to tweak active session rules:
- Target directory – Define exactly where your files should land (defaults to your Desktop).
- Auto‑replace – Toggle whether Exporter prompts you before overwriting existing files.
- Recycle bin undo – Toggle whether the undo routine permanently deletes files or routes them safely to the system trash.
| Component | Detail |
|---|---|
| Language | Python 3.8+ |
| Core Engine | Pure Python Standard Library (os, shutil, pathlib, shlex, dataclasses) |
| Optional Enhancement | send2trash for native OS Recycle Bin/Trash integration |
| Platforms | Windows, Linux, macOS |
Contributions, issues, and feature requests are always welcome! Please read CONTRIBUTING.md for code style guidelines and debugging notes before opening a pull request.
- Fork the repo.
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request.
Distributed under the MIT License. See LICENSE for more information.