Skip to main content

A dodgy ripoff of rsync for my music files. MTP mounts have been very flakey for me in the past. FAT32 and exFAT filesystems have restrictions on what filenames are allowed. This combination makes transferring music to my phone difficult.

This script helps. It takes care of munging filenames appropriately, checking if a file needs updating in case of a partial or failed transfer, and copying only subsets of your library. If a file already exists at the destination with the same file size, it will not copy.

To copy the contents of ‘Zechs Marquise/Getting Paid/’ and ‘Grails/’ from your music library to your mounted phone:

$ syncfat --source $HOME/Music \
        --destination /mnt/phone/Music \
       'Zechs Marquise/Getting Paid/' \
       'Grails/'

The source defaults to pwd. This script works best when you are in the source directory, as you can leave off the source and tab-complete files to copy:

$ cd $HOME/Music
$ syncfat --destination /mnt/phone/Music \
       'Zechs Marquise/Getting Paid/' \
       'Grails/'

This never deletes files, and should not be used for transferring back to your music library. It is designed specifically for transferring to intermittent FAT devices. File names are munged on the destination to fit FAT naming restrictions, as well as other conversions that might happen.

Usage

See syncfat --help for detailed help. Two useful options:

-v

Print more information about what is happening. Use this twice to print even more information

--dry-run

Don’t actually transfer anything, only print what would happen.

Release files for syncfat 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for syncfat 0.1.0
File Size Uploaded
syncfat-0.1.0.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for syncfat 0.1.0
File Interpreter ABI Platform
syncfat-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.5 kB

Release files / syncfat-0.1.0.tar.gz

Download URL syncfat-0.1.0.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
90eb17c261dbecc4d3616a130a568ce7ba484bf977360deb86f0a16c13220c23
BLAKE2b-256 checksum
How to use checksums
297bc28d1050d6f54624cd774041196ff2e168c82a69f0119417a34060f3348a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

Release files / syncfat-0.1.0-py3-none-any.whl

Download URL syncfat-0.1.0-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
279de89ebc3b5eff6642ae34d97b25dc339553643e798355a2d06c04add12f84
BLAKE2b-256 checksum
How to use checksums
f00959750b465bd78ec1e052d7c2001ea7e2bee41677331c17a862fed3d16766
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page