Re: How to exclude all dotfiles in a folder but include a specific set?

Reio Remma <[email protected]> Wed, 11 Jan 2023 00:02:20 +0200
Newsgroups gmane.comp.sysutils.backup.rdiff-backup.general
Message-ID <[email protected]>
I'm personally using WSL2 / AlmaLinux 9 to run rdiff-backup on Windows 
files.

Good luck
Reio

On 10.01.2023 22:43, EricZolf wrote:
> You could try to use the cygwin version of rdiff-backup, because cygwin maps all drives under /cygdrive. Disclaimer: I didn't try and it's been ages since I used last cygwin.
>
> KR, Eric
>
> On January 10, 2023 12:52:09 PM UTC, Patrik Dufresne <[email protected]> wrote:
>> On windows, if you want to backup C: and H: you must execute rdiff-backup
>> twice. Once for C: and another for H: with a different destination.
>>
>> I tried to quickly search the documentation for a reference, but I could
>> not find it...
>>
>>
>> On Tue, Jan 10, 2023 at 1:03 AM <[email protected]> wrote:
>>
>>> Nice, I haven't used --include/exclude before, but I have a use case now
>>> so I want to try it.
>>>
>>> How do I make this work on Windows where there isn't (AFAIK) a common
>>> root for all the drives?  For example I want to do
>>> rdiff-backup \
>>>       --include C:/from1 \
>>>       --exclude C:/from1/exclude1 \
>>>       --exclude C:/from1/exclude2 \
>>>       --include H:/from2 \
>>>       --exclude H:/from2/exclude3 \
>>>       --include C:/from3 \
>>>      sourcedir \\nas4free\my-backup.rdiff-backup
>>> but I don't know what I can use for sourcedir that will allow me to
>>> include directories from both C: and H:.  The 3 included directories are
>>> all logically related so I prefer to back them up to a single
>>> repository.  Is there a way to do this on Windows?
>>>
>>>
>>> On 2023-01-09 12:30, EricZolf ewl+rdiffbackup-at-lavar.de
>>> |rdiff-backup-users| wrote:
>>>> Order does indeed matter _ and_ there is an implicit include "all" at
>>> the end, so that the slightly simpler following command should also work:
>>>> rdiff-backup --terminal-verbosity 5 \
>>>> --include /tmp/from/.2 \
>>>> --exclude /tmp/from/.\* \
>>>> --exclude /tmp/from/2 \
>>>> /tmp/from ./to.
>>>>
>>>> It basically depends if you want to save the full path or not.
>>>>
>>>> K R, Eric.
>>>>
>>>> On January 9, 2023 11:42:10 AM UTC, Tobias Leupold <[email protected]>
>>> wrote:
>>>>> Yay, I made it :-D ;-)
>>>>>
>>>>> The --include and --exclude order actually DOES matter.
>>>>>
>>>>> If invoked like so:
>>>>>
>>>>>      rdiff-backup --terminal-verbosity 5 \
>>>>>          --include /tmp/from/.2 \
>>>>>          --exclude /tmp/from/.\* \
>>>>>          --exclude /tmp/from/2 \
>>>>>          --include /tmp/from/\* \
>>>>>          --exclude / \
>>>>>          / ./to
>>>>>
>>>>> I get what I want:
>>>>>
>>>>>      Processing changed file .
>>>>>      Processing changed file tmp
>>>>>      Processing changed file tmp/from
>>>>>      Processing changed file tmp/from/.2
>>>>>      Processing changed file tmp/from/1
>>>>>      Processing changed file tmp/from/3
>>>>>
>>>>> A bit hard to figure out, but it works!
>>>>>
>>>>> Thanks again for helping!
>>>>>
>>>>> Am Montag, 9. Januar 2023, 10:31:53 CET schrieb Tobias Leupold:
>>>>>> Hi Eric!
>>>>>>
>>>>>> Thanks for yout reply!
>>>>>>
>>>>>> The problem is that I don't know the complete list of the "normal"
>>>>>> folders I want to include. But I know a complete list of dotfiles I
>>> want
>>>>>> to include.
>>>>>>
>>>>>> So, if we have
>>>>>>
>>>>>> /tmp/from/1
>>>>>> /tmp/from/2
>>>>>> /tmp/from/3
>>>>>> /tmp/from/.1
>>>>>> /tmp/from/.2
>>>>>> /tmp/from/.3
>>>>>>
>>>>>> I want to exclude all the files starting with a ., but include a list
>>> of
>>>>>> specific files starting with a ".", e.g. /tmp/from/.2 (at this point,
>>>>>> it's not a problem yet I think ...).
>>>>>>
>>>>>> But I also want to include all the regular files and folders from
>>>>>> /tmp/from, with e.g. the exception of /tmp/from/2. But I don't know the
>>>>>> list to include. And that's the problem -- there could also be
>>>>>> /tmp/from/4, /tmp/from/5 and so on.
>>>>>>
>>>>>> Now if I do
>>>>>>
>>>>>>        rdiff-backup \
>>>>>>            --include /tmp/from/\* \
>>>>>>            --exclude /tmp/from/2 \
>>>>>>            --include /tmp/from/.2 \
>>>>>>            --exclude /tmp/from/.\* \
>>>>>>            --exclude / \
>>>>>>            / ./to
>>>>>>
>>>>>> all the files from /tmp/from are included (also /tmp/from/2 and all the
>>>>>> /tmp/from/.whatever files) no matter the order of the --include and
>>>>>> --exclude statements.
>>>>>>
>>>>>> I also tried to mess with --include-regexp, but e.g. this:
>>>>>>
>>>>>>        rdiff-backup --terminal-verbosity 5 \
>>>>>>            --include-regexp "/tmp/from/[^\.].+" \
>>>>>>            --exclude / \
>>>>>>            / ./to
>>>>>>
>>>>>> leads to no files included at all ...
>>>>>>
>>>>>> Am 09.01.23 um 07:16 schrieb Eric Zolf:
>>>>>>> Hi Tobias,
>>>>>>>
>>>>>>> what about something like:
>>>>>>>
>>>>>>> mkdir /tmp/from
>>>>>>> touch /tmp/from/.{un,}wanted /tmp/from/also{un,}wanted
>>>>>>>
>>>>>>> rdiff-backup -v5 backup \
>>>>>>>
>>>>>>>        --include /tmp/from/.wanted --exclude /tmp/from/.\* \
>>>>>>>        --include /tmp/from/alsowanted --exclude /tmp/from/\* \
>>>>>>>        /tmp/from /tmp/bak
>>>>>>>
>>>>>>> (and /tmp/bak contains then only the wanted files)
>>>>>>>
>>>>>>> So first the includes, then the corresponding excludes. It shouldn't
>>>>>>> make a difference if from the command line using --include/exclude or
>>>>>>> using files with --include/exclude-globbing-filelist
>>>>>>>
>>>>>>> Hope this helps,
>>>>>>> Eric
>>>>>>>
>>>>>>> On 08/01/2023 23:32, Tobias Leupold wrote:
>>>>>>>> Dear list,
>>>>>>>>
>>>>>>>> I use rdiff-backup to do automated backups on my server. I backup /,
>>>>>>>> but I
>>>>>>>> exclude everything and only include what I need. E.g. I use the
>>>>>>>> following call
>>>>>>>>
>>>>>>>>        rdiff-backup --include-globbing-filelist /etc/backup.include \
>>>>>>>>                     --exclude / \
>>>>>>>>                     / /backup/data
>>>>>>>>
>>>>>>>> and specify a list of folders I want in /etc/backup.include, e.g.
>>>>>>>>
>>>>>>>>        /etc/crontab
>>>>>>>>        /etc/postfix
>>>>>>>>        /etc/dovecot
>>>>>>>>        /usr/local/bin
>>>>>>>>        /usr/local/sbin
>>>>>>>>        /srv
>>>>>>>>
>>>>>>>> That works just fine.
>>>>>>>>
>>>>>>>> Now I'm trying to adapt this to a machine with similar requirements,
>>> but
>>>>>>>> including some parts of a home directory.
>>>>>>>>
>>>>>>>> What I can't get to work is: I want to include the home directory,
>>> but
>>>>>>>> without
>>>>>>>> all the .whatever files. But I want SOME of them.
>>>>>>>>
>>>>>>>> E.g. I want:
>>>>>>>>
>>>>>>>>        /etc/some/config_file
>>>>>>>>        /etc/some/other/config_file
>>>>>>>>
>>>>>>>> And also all the "normal" files and folders in /home/my_user
>>>>>>>>
>>>>>>>>        /home/my_user/folder_1
>>>>>>>>        /home/my_user/folder_2
>>>>>>>>        /home/my_user/foo
>>>>>>>>        /home/my_user/bar
>>>>>>>>
>>>>>>>> and so on, but I don't want
>>>>>>>>
>>>>>>>>        /home/my_user/.*
>>>>>>>>
>>>>>>>> but I DO want a defined set of dotfiles, e.g.
>>>>>>>>
>>>>>>>>        /home/my_user/.ssh
>>>>>>>>        /home/my_user/.local/share/foo
>>>>>>>>
>>>>>>>> I can't get this to work. I played around a lot with
>>> --include-globbing-
>>>>>>>> filelist, --exclude-globbing-filelist, --include and --exclude, but
>>>>>>>> either, I
>>>>>>>> get none of the .whatever files inside /home/my_user, or I get all of
>>>>>>>> them.
>>>>>>>>
>>>>>>>> Is it possible to do this? Thanks in advance for all help!
>>>>>>>>
>>>>>>>> Cheers, Tobias
>>>>>
>>>>>
>>>>>
>>>
>>>