Synch isn't immediate. Should it be?

I’m new to oDrive so excuse the newby question. Installed oDrive on two machines. On both machines, I right clicked on the Desktop folder in Finder and selected “Sync to odrive.” I then saw the contents merged on both machines as expected.

However, I then added a .txt file on one machine, expecting it to appear on the other, and it doesn’t. How do I get changes on one machine to be immediately reflected on the other?

Also, a folder on the original desktop appears as a .cloudf on the other. Is there some way to automatically download sub directories for a synced parent directory?

Hi @allen,
Reflection of a newly uploaded file on another system will depend on a couple of things.

Some storage services offer an API to ask for recent changes. This is often seen in consumer storage products like Google, Dropbox, OneDrive, Box, and Amazon Drive. When this type of API is available, odrive will see the newly uploaded file quickly and load it “in the background”, meaning the user doesn’t have to do anything.

Utility storage products like S3, Wasabi and B2 do not offer this type of API, so there isn’t a way for odrive to ask the storage what has changed. Instead it needs to look at a particular folder to know what has changed. odrive will periodically check the remote storage for changes “in the background”, but remote scanning is an expensive process, so it will only do it occasionally.

odrive has some features to help when a changes API is not available.

  1. On Windows and MacOS odrive can detect when a user browses in a folder on Explorer or Finder. When that happens, odrive will look at the remote folder and determine if anything has changed since the last time it looked. This means you can upload a file on computer 1 and then browse into that location on computer 2 and the change will show up. It has to be an active browse action, though, so it will not detect the change if you are already sitting inside the directory with the new upload (browsing out and back in will show the change, in that case).
  2. odrive has a right-click->refresh option that can force odrive to look at the specified folder immediately and show new changes.

You can setup “folder sync rules” to specify how you want new files and folders to be handled when they are detected: https://docs.odrive.com/docs/sync-source-changes#section-folder-sync-rules

Thanks. I’m using Wasabi, so that explains it. By right-click->refresh, do you mean the “Refresh Subscriptions” option in the main odrive-icon menu? I’m gathering that moving over to one of the consumer services you mention for the backing store will give me automatic sync without having to worry about it. True?

I just deleted a file, bounced up to home and back down to Desktop and the (now deleted) file is still there. Do I need to do that on both machines? Also, If I modify a file that was deleted on the other but not yet brought into sync, will the modifications be preserved?

I spend most of my time in bash, so is there a CLI directive that I can attach to an alias of cd to do the refresh in the same way that Finder would do it?

Hi @allen,
The refresh option is in the right-click context menu within Finder, alongside the other options like “Sync”, “Unsync”, “Share Link”, etc

If you were to use a storage service that supports a “changes” API, then you would see the change reflect within about 30 seconds.

For deletes, odrive has a safeguard to prevent unintended deletes, which becomes more important with utility storage because they often don’t have a built-in trash feature to provide recovery options. Local deletes are held in the “odrive trash”, until the user explicitly empties the trash or enables an auto-trash rule to do it automatically. Once that is done the delete is reflected to the cloud storage. More on that here: https://docs.odrive.com/docs/sync-changes#section-empty-trash

There is a python-based CLI available for Mac. It is distributed with the desktop install and is located in $HOME/.odrive/bin/[current version]/odrive.py

You could create an alias like this: alias odrivecli='python $(ls -d "$HOME/.odrive/bin/"*/ | tail -1)odrive.py' and then use a command like: odrivecli refresh [path to folder] or odrivecli refresh . if you are in the folder you want to refresh.

More on the odrive CLI here: https://docs.odrive.com/docs/odrive-cli

That brings up a couple more questions.

  • Does the delete behavior you describe apply only to the Desktop, as stated in the docs, or does it apply everywhere?
  • How often will a refresh happen if you don’t do anything special.
  • Do cli commands like refresh, backup, and sync work recursively on subdirectories?

Thanks.

Hi @allen,

It applies to our desktop and agent clients. It does not apply to the web client.

odrive will perform a background remote scan to refresh all remote folders every 12 hours. A remote scan can be a very expensive and time-consuming operation, depending on how large your structure is.

No, the commands are all localized to the specified folder or file. Just like the remote scan mentioned above, recursive actions can be very intensive and can end up triggering rate limits or other detrimental effects with the storage provider if done liberally, so that is something to keep in mind.

There is an example of a bash one-liner to perform a recursive sync on a folder here: How can I force a recursive download with the CLI?

I also have an unofficial fork of the CLI here, although I haven’t updated it in a while, so it is missing a few of the newer commands in the CLI. You can still use it for its recursive sync function, however. https://github.com/amagliul/odrive-utilities

I also wanted to note that the backup command is a pre-beta feature, so it is pretty basic in its functionality and may have some quirky behavior. More information on that here: