Copies movies to USB drives with verification.
Note: Device size validation protects against accidentally formatting the wrong drive.
- Create/read SHA1 checksums from film directory
- Read meta file for
stick_label - Validate device size, format as ExFAT
- Mount to
<mount-dir>/<device_id> - Copy files (skip existing verified)
- Verify checksums
- Retry failed files (up to 3x)
- Print summary, archive log
- Unmount
- Prompt for next stick
- macOS (uses
diskutil) - Film directory with movie files
- Meta file with
stick_label = "..."
# List matching USB devices
movie2usb --ls
# Process a device
movie2usb /dev/disk4
# Custom stick size (32GB ± 4GB)
movie2usb /dev/disk4 --stick-size 32.0 --size-tolerance 4.0
# Custom paths
movie2usb /dev/disk4 --film-dir ./movies --meta-file ./config.toml| Option | Default | Description |
|---|---|---|
--ls |
- | List USB devices matching size range |
--stick-size |
16.0 |
Expected USB stick size in GB |
--size-tolerance |
2.0 |
Size tolerance in GB (±) |
--mount-dir |
/tmp |
Base directory for mounting |
--film-dir |
./film |
Directory containing movie files |
--meta-file |
./film/.meta.toml |
Path to meta.toml file |
--logs-dir |
./logs-archive |
Directory for archiving logs |
The movie2usb-tui binary provides a dashboard interface for processing multiple USB sticks concurrently.
- Device list with multi-select (left panel)
- Real-time output grid for parallel processing (right panel)
- Auto-scroll output cells to show latest logs
macOS notifications on completion
| Key | Action |
|---|---|
↑/↓ or k/j |
Navigate device list |
Space |
Toggle selection and advance |
Ctrl+A |
Select all devices |
Enter |
Start processing selected devices |
Ctrl+R |
Refresh device list |
q |
Quit |
# Start TUI with defaults
movie2usb-tui
# Custom stick size
movie2usb-tui --stick-size 32.0 --size-tolerance 4.0Same options as movie2usb (see above), except --ls which is not applicable.
# Install CLI version
cargo install --git [email protected]:sassman/movie2usb-rs.git
# Install TUI version
cargo install --git [email protected]:sassman/movie2usb-rs.git --bin movie2usb-tuiBinaries: movie2usb, movie2usb-tui
to split a movie to 2gb parts:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map \
"[outa]" -segment_time 2000 -f segment -reset_timestamps 1 output_%03d.mp4
# or for single input:
ffmpeg -i input.mp4 -c copy -map 0 -fs 2000000000 -segment_time 99999 \
-f segment output_%03d.mp4On macOS by default a EFI partition is created on USB sticks, which causes 2 partitions to show up. The GPT confuses DVD Players and smart TVs. To avoid this, you can create a single partition scheme with diskutil:
diskutil eraseDisk "MS-DOS FAT32" STICK_NAME MBR /dev/diskX