Emulating (some) ext FS features to enable syncing through OneDrive

Hi,

I have 3 distant Linux computers across which I want to sync parts of my home folder.

Context
Currently, I’m using a USB flash drive that I carry around (I don’t need to sync PCs remotely, I only need to sync the computer I’m physically working on). I’ve read reports, and experienced myself, that formatting a flash drive with ext and using it like a hard drive quickly shortens its life. So, to save the flash drive life, I’m using it “WORM” (write once, read many) by putting on it incremental backups in squashfs “format” ; this is to sync from the PC to the drive. The other way round, I mount the squashfs “fragments” with unionfs-fuse. This is all good with respect to extfs features, since squashfs can handle them.

Caveats
My current setup is impractical in these respects:

  • I have to manually launch the sync (read: I may forget to do it)
  • the files are not accessible from a Windows computer (sometimes, not often, I’m “stuck” on a Win computer and I wish I could read my flash drive)
  • when the flash drive is full of incremental backups, I have to reset it to a fresh backup, but putting several gigabytes to a flash drive is darn slow
  • when my flash drive will fail it will bother me for a few days

Wish
My job provides us with individual OneDrive storage. I would like to use it, in place of my flash drive, to do the sync. Problem: I absolutely need the following features:

  1. preserving modification times
  2. preserving filename case
  3. preserving permissions
  4. symlinks

where “preserving X” means both “not altering X for existing files when they are updated from the remote” and “setting X correctly when creating a new file from the remote”.

Questions

  • Are features 1&2 above managed “out of the box” by rclone? I’ve read that OneDrive is case-insensitive, but is it “strict” (alters case of transferred files) or “loose” (cannot have two filenames differring only by case)?
  • Features 3&4 are discussed in several issues in the Github, but it looks like neither is operational yet, is it right? Then, I’ll have to make a script that creates auxiliary files in the file tree to store/restore ACLs and symlinks.
  • Are there any features you think I’m overlooking?

Thank you!

Yes they are. Onedrive is case preserving so provided you don’t have two files which are the same when case folded (eg “hello.txt” and “HELLO.txt”) you’ll be fine.

Permissions are not supported. However you can use for instance getfacl to save the permissions to a file so you could restore them with setfacl.

Symlinks can be followed or ignored. There is a thread about preserving them here, but they aren’t preserved at the moment.

You may enjoy the –backup-dir flag which will save old copies of files.