Sync only certain files with Ignore Patterns


#1

I have a directory tree like the following on my Windows PC:

Root dir
 + SubDir1
    - file1.txt
    - file2.txt
 + SubDir2
    - someotherfile.txt
 - backup1.rar
 - backup2.rar
 - backup3.rar
 - BackupFull.rar
 - somethingelse.rar

The only files I want to sync are the ones beginning with backup (case-insensitive). I thought about using the .stignore file for that, but so far, my attempts to do so have all failed. I tried:

// First try
(?i)!backup*
*

// Second try
(?i)!backup*
!/
/*
*

// Third try
(?i)!backup*
!./
./*
*

So, what is the correct way?

note: found this https://forum.syncthing.net/t/use-ignore-patterns-to-sync-only-certain-files-of-one-folder/1816 but that’s different because OP wants to sync files inside a subfolder while mine are in the root directory.

Thanks anyone

Edit The following seems to work:

!/backup*
/*
!/
*

Two oddities:
1- The first line makes both files beginning with backup and Backup to sync. This is unexpected! If I use (?i)!/backup* instead, it wont work.
2- Switching lines 2 and 3 causes it to stop working. Why is that?


Problem with override changes
(Jakob Borg) #2

You’re making it rather complex… I just set up that same structure and tested it, the following patterns work for me:

!backup*
*

The patterns are case insensitive by default on operating systems where that makes sense, i.e. Mac and Windows.


(Audrius Butkevicius) #3

Be aware that only will work if its at the root of the directory.


#4

@calmh: Thanks! Btw that looks like my first attempt (I forgot to include), which was:

*(?i)!backup**
*

There seems to be no mention of that in the docs, but anyway, I feel that the pattern using (?i) should work as well - but it doesn’t. There are also a few other places where it would make sense to behave in a case-insensitive manner on proper OSes, for consistency, so I’d vote for that.


(Jakob Borg) #5

I don’t have the code in front of me, but I suspect that what happens is that your (?i)backup actually gets turned into (?i)(?i)backup on case insensitive OS:es, which then doesn’t work. It should work, of course, so that’s a bug in that case.


#6

I came across a similar problem (and exactly the same issue with Windows and (?i)

Bug reported there


(Zillode) #7

It won’t turn into (?i)(?i), link. However, it could turn into (?i)*(?i) because of the TrimPrefix… I think the documentation should state that (?i) should be stated in front because some ppl might want to filter myfolder with (?i) in its name.


(system) #8