Except the first few need to be prefixed with an exclamation mark (!)
But according to my understanding it is either or (?). Either I have an Ignore list or a Positive list with a complete exclusion of the rest with
You can do whatever combination of includes and excludes you want.
So it sounds to me what’s really being requested it looks like is a graphical way to manage the ignore list based on global state. I envision a tree structure with checkboxes to select for sync (or select to ignore).
IMO even just a way to VIEW the global state would be a huge boon. Presently knowing what’s there requires syncing the full contents of everything, which has proven for me and those above to be non-ideal.
Would there be any way possible to put a folder advanced option which leads to receive the global state and indexes first, then halt and will wait to start transferring files around until a .stignore file has been created? A wrapper could then present the global state to the user, the user select what he/she wants, .stignore will be created and then files are synced.
I was thinking about a similar thing, some kind of half-paused state for the folder. It should exchange index data and make that available for e.g. inspection through the API endpoints. But actual content transfer (pullers) would be halted. Possibly also block requests from remotes to pull our blocks?
* into .stignore initially does achieve just that, doesn’t it?
Not quite I think, as it will prevent the local state from being populated. While pausing pullers and blocking requests will only stop the transfer. Guess it depends on whether we want our local state (index) to be sent to other devices or really just examine their view of the global state.
I don’t see how that matters, that’s an implementation detail to me. The use-case here was to get a view of the global state to be able to choose files before syncing them - that works, right?
I wanted to chime in with my +1 to this request. I know things such as iOS support are by 3rd party developers, but standardizing the UX of a selective sync would likely inform those devs how to proceed.
I have several use-cases:
Mobile, I have limited space but want easy on-demand access to my roleplaying game PDFs and the ability to add a file and have it sync back to my server and desktop. I mostly peek at a few PDFs at a time and often download updates on-the-go that I currently have to re-download on my desktop or server.
Laptop. I want a few folders with easy access to files and to be able to add files to those and have it sync to my desktop and server. I don’t have a ton of space on my laptop nor do I need to have all the files in sync all the time, just sub-sets.
Family members with the same situation as 1 or 2 but a lack of understanding how the ignore files work.
As someone stated above it’s mostly the GUI and UX that’s important here.
For some context I’ve been using the free version of Resilio Sync for a while now, but as has been pointed out it’s not really their focus any more. I was debating purchasing the paid version, but wanted to check out Syncthing first as I really wanted to use some OSS and support it if I ended up using it.
However this is a key feature for me. I made an account so my $0.02 could get thrown in. Otherwise it looks pretty great and I appreciate all the hardwork that got it to this state!
Please do not implement this feature. BTSync / Resilio was pretty rock solid until they implemented selective sync. Then the product became undependable (according to many) and many came to Syncthing.
I have cell phones with Syncthing and I found ways to achieve my ‘selective’ requirements.
I don’t know how you come up with that. The selective sync has always worked with Resilio, at least for me.
Regarding Resilio users defecting to Syncthing, most do so because of the product and update policies that have been skewed for years. Sync takes a back seat to Connect and those who want to use current developments can ultimately only switch to the commercial Connect.
Selective sync can be implemented in Syncthing, albeit more awkwardly, via the ignore lists. The further advantage of being able to create local copies can be solved with Syncthing by a second instance. With it is meant, Resilio is representable in the long run by Syncthing.
I’m one of the first users of Resilio, all the way back to when it was called BTSync. After selective sync feature a lot of people had all sorts of issues.
Same by me. I tried first versions and use for may daily things from v1.4.111 all versions up to v2.7.2 partly in parallel to Syncthing. Since about two years I use only Syncthing.
To FreeBSD_Lover: I also have used BT Sync since the first beta versions,though I haven’t really seen many issues reported by other people. At least on Linux and OS X it works great. I use the Android version too, albeit in a much more limited fashion. The biggest issue I had was with the lack of an M1 version which… they fixed. I think the issues that have come for some people are mainly due to changed in various platforms that have not been handled speedily and thus general bit rot - I don’t think they are related to a specific feature being implemented, much less Selective Sync. In fact, with all due respect to the forum moderators, I fail to even understand why Selective Sync should be that difficult to implement - but more on that later. I would also agree though, that if implementing such a feature would destabilize the core functionality of SyncThing, then I would prefer they waited until they could do it safely.
With regard to using .ignore files or web browsers, I think perhaps people are not understanding the use cases we have:
- I have a folder called “Photos” with several TB of photos. I don’t want to keep all of them synced to my laptop, but I usually do keep a large portion of those from the last few years. As I need space, I may right-click and select “Remove from device”, knowing it will still be safely be on my NAS and other servers. On the other hand, if I want to download photos from a specific event, I can navigate there and just double-click to start the download. I can edit the files if I want, and any edits will by synched back. Sure, perhaps something like synology PhotoStation or opensource equivalents might be better for some people - but actually I use both - I copy files form my camera into the photos folder on any one of my computers, and ResilioSync helps me with the upload part and lets me forget that I am even uploading. At some point, I can remove the photos from where I don’t need them.
- I have a large DVD library. While I don’t particularly need a backup (as the DVDs themselves act as backup), I have them all in a giant DVDRIP folder, If I am going on a plane flight or something, I can double click on a few to download them (which is fast since they download from multiple clients at once). When I am done watching them, I can delete them from my iPad or laptop. Again Some people might prefer VideoStation or Plex or something.
- I use RSLSync for Android to sync my CDRip folder to my Walkman and smartphone. The Walkman gets everything, but the smartphone uses selective sync to get only what I really want.
- Video Editing - This is an area where I really see little Substitute. I do a lot of video editing on laptop and desktop machines. Video takes up between dozens and hundreds of GB per video I edit. For this purpose I want to limit the size of the folder even on the server, so I have folders like VideoEdit2023. This will be synched to my desktop and laptops with selective sync. When I get a bunch of new raw video footage to edit, I will copy it onto the machine I am going to do the editing on. I will then start editing, while it gets synched in the background. I might, for example, do the color grading on my Linux desktop, and the final compression on my M2 laptop. That’s fine, so long as I wait for changes to sync before making changes on another machine. When I am done with the footage or I need space for newer footage, i will simply delete it from my laptop & desktop - which is fine, as selective RSLSync will know to keep it on the server. I never have to explicitly backup files, I always have multiple copied of everything, and it is very difficult to accidentally delete anything. If I revive an old project to re-export it with different music or a different resolution or whatever, I can very quickly re-sync it to a machine with just a double-click of the mouse, and remove it when I am done again just as easily. (provided I wait for any changes to sync first!)
Yes, I know I am using the term “backup” a bit loosely there. I have BDXL backups of important stuff as well.
I am not meaning to be too long winded - but just to point out that there are a lot of use cases, and reasons why people use and want this feature. Every year or so I check back to see if SyncThing has made any progress on this feature and every time I think “Well, maybe next year” I would be happy to contribute to a bounty.
I don’t think there’s any real dispute that this would be nice to have, nor do I think it would be enormously difficult to implement as it’s more or less a layer on top of the current ignore system. It “just” needs someone to do it. For me personally it’s not on my list of things I want to tackle.
I personally don’t think it is a very important feature in general. I structure my folders in a way that makes it not necassary or resort to ignore patterns. Having that said, there are some things that could be improved about ignore patterns.
Besides the points you’ve alreaedy mentioned, the following comes to my mind:
- When setting up a new Android phone I’ve noticed that one cannot add ignore patterns to a folder from the beginning. I resorted to set the folder to be initially paused, added the ignore pattern as second step and only then resumed it. This may not be very intuitive for less experienced users. (This problem is likely specific to the Android app. Likely it is easily solvable by letting the app do under the hood what I ended up doing manually.)
- There’s no way to ignore files retrospectively. That adding an ignore pattern afterwards will not remove files again makes sense. However, that manual deletion of those files is propagated even though they match ignore patterns was not very intuitive for me. It would also be generally nice if Syncthing could be triggered to “forget” files re-evaluating the ignore patterns. (Maybe this is actually possible but I don’t know how. I’d like to be wrong. If not, I’m wondering how hard it would be to implement such a “trigger”, e.g. if I’m not really familiar with the code base. Likely there’s only one way to find out.)
Maybe these points were already brought up here. I was only briefly reading over this old/revived thread.
Is this actually the case? Could you provide a specific example when this happens?
One problem with equaling ignore patterns to selective sync is that, as I’d assume, when people think of “selective sync” they probably want something more alike what Dropbox does, i.e. you tick a box - a file/folder is synced, you untick it - the file/folder is unsynced and deleted from the local device. Syncthing doesn’t delete like that which is a problem for devices with limited storage (which is also the main reason people want “selective sync” in the first place…).
Since I don’t use SyncThing at the moment, I have to agree, if deleting files which are in the .ignore file caused a change (i.e. they weren’t actually ignored), I would be very surprised.
I would expect that if there is a device with a selective sync folder, then deleting files from it would not delete them on the fully synched devices.
The best example I can give is that with ResilioSync you don’t need t sync an entire folder, but can double-click a placeholder file to sync and open that file. When you are done with the file, you can delete it from your local disk and a new placeholder file will be created. This is useful because you may have folders with 100s of GB of data, but you only want to sync 1 or 2 files you are working on at the moment.
On the other hand it’s not to say that any such functionality has to exactly copy Resilio or DropBox - anything would be better than nothing, so long as it is clearly defined and documented.
Selective Sync would be wonderful to have but it the task to add it would be too big I think implementing something like syncthing-pyselective would mostly be good enough.
Having something like that directly in the ignore patterns page would be great. You could switch between the raw text version (how it currently look like) or the GUI version that would look like pyselective where you can select what folders and files you wish to sync or not sync.