versioning to another directory / location

Is it possible in a future release to have the ability to set versioning to a definable directory?

Reason for the ask is I run an 8Tb drive for very large backup images, however there’s not enough capacity to hold one previous version as well as the current but also, in the event of a drive failure, I would have an earlier version located else where.

Thanks

Hi Terry

Please see the docs R.E. external versioning. The example could be used to version files wherever you like.

https://docs.syncthing.net/users/versioning.html#external-file-versioning

1 Like

Alternatively, you can also use a symlink/junction for the .stversions folder, and keep the real one in a completely different location.

1 Like

I looked at the external option, but I only want to retain one copy of the image so if something happens during the transmission of the latest update, I have a copy of the one prior. I could do something with bat files, but figured it would be easier for St to handle everything.

I will look into symlinks. Not really ever used them.

I think all the versioners technically support archiving to an arbitrary place, but for historical reasons only the staggered versioner allows setting it in the gui.

Indeed, all of them support it now, and can be manually setup by editing the config (and setting the same options staggered version sets).

I am just not sure if the changes will survive config changes in the web ui, but I guess you can test it out.

I would try calmh and AudriusButkevicius’s suggestions but…

The example in external versioning will overwrite files to only keep the latest. If you are changing the name on each backup, each file will be seen as a different file and kept but this will happen with all of the versioners.

If the file names are different after each backup:

The closest you will get is trashcan versioning with which you can set to keep files for 1 day. Keep in mind though, you should expect multiple versions to exist sometimes even if only backing up once a day. Or worse the old version may be deleted before a new one is synchronised.

I think the alternative location is defined by

image

(I had to use a picture to make it appear). I will see how this goes.

Cheers

You can surround it with backtick ` to include Preformatted text

1 Like

Trashcan versioning only ever keeps the one version, since it doesn’t rename versions at all. That, with a hack to set the version path, should be the solution here.

2 Likes

Sorry for intrusion. This request reminds to me: anyone remember I suggested months or years ago if ST could retrieve blocks from within the versions? I guess this could dramatically increase the Saved by re… stats

This a known enhancement proposal (see https://github.com/syncthing/syncthing/issues/5279). I would guess that this is a little bit tricky, as Syncthing would need to be able to index those files, while not adding them to the overall local/global state at the same time.

I’m leaning towards a bug on this…

I have tried different ways to get the versions folder to move to another location, but nothing works. So far I have…

set the config.xml to point to h:\

set the gui (edit / file versions) to point to h:\

made a directory on h:\older

made a directory called h:\.stversions

made a subdirectory called .stversions within the test 'older’directory

tried all of the above with H rather than lowercase h in case there was case sensitivity issues

delete the original .stversions folder, but it gets recreated

tried all of the above on all the other versioning options and restart St on each change

it seems the only versioning that works is simple and using the default location

I have seen this has been recently added…

image

image

So I wonder if somehow the versioning has been broken with this being introduced?

windows 1.14 rc2

1 Like

It is a bug, but nothing new - quite ancient actually. The path originally was called versionsPath which was changed to fsPath in https://github.com/syncthing/syncthing/pull/5514 - not in the GUI though. Staggered versioner still accepts versionsPath, thus it’s the only one that works. I’ll fix.

EDIT: I could have also mentioned: The correct key is fsPath - if you use that instead of versionsPath in config.xml it should work.

2 Likes

There is an ugly way to do : create a folder for .stversions (don’t worry with the warning about nested folder) and share with no-one. Set ageing as usual for main folder and no trash for the “Trash” folder (or maybe another trash to get a double stair trash… although I feel easier to increase the main trash ageing).