From: Kern S. <ke...@si...> - 2007-03-02 10:07:57
|
On Friday 02 March 2007 10:52, BOLLENGIER Eric wrote: > Hi, > > > first, the idea is a good one and would allow important things to > > happen. One example you missed: backing up from a linux LVM snapshot > > (where the snapshot for /home might be in /.snapshot/home) and restoring > > to the right originallocation (/home in this example). > > > > > When i use Linux or SAN snapshot, i mount them to > > > /mnt/snap_xxx so, when a restore a file, i have to move by hand > > > from /mnt/snap_xxx/file to /xxx/file. I can't replace a file > > > easily. > > > > > > > > > > > > Notes: I think we can enhance the where= option very easily by > > > allowing regexp expression. (by replacing bregex by libpcre > > > see http://en.wikipedia.org/wiki/PCRE and > > > http://www.pcre.org/) > > > > > > Since, many users think that regexp are not user friendly, > > > > I don't know much about many users, but I do know that I at the same > > time like REs for their power, but hate them for all the thinking and > > trying I have to invest before they work. > > It's ok, but regexp is a common language, you find them with : > - shell (with sed) > - perl > - python > - php > - java > - bacula (in fileset) > - vi, emacs > - Exim, postfix > - Apache > - etc. > > If you do not know them, I advise you to throw a glance, it is a tool very > much used and very powerful. > > > > i think > > > that bat, bconsole or brestore must provide a simple way to > > > configure where= option (i think to something like in > > > openoffice "search and replace"). > > > > > > Ie, if user uses where=/tmp/bacula-restore, we keep the old > > > fashion. > > > > The above - sure thing. > > Your below suggestions - not so sure. I don't especially like the syntax > > you suggest, and I don't think it is very user-friendly. > > > > A GUI could spare the user any contact with the textual representation > > of the where= clause. > > I think that bat can have 2 fields like > Replace = > With = > > and bat will send the good where= to director > > > For input, I thought about something where you can use special path > > elements. > > > > the idea: A path consists of a number of elements, separated by path > > delimiters (/ in unix, \ in windows, always a forward slash in Bacula). > > I don't agree with you, you want to rewrite a new langage just for bacula > restoration ? Sure, you will have to invest before they work. > > It will need lots of new code, instead of using a common > library. > > > So, you can disassemble any path into a number of path elements. > > > > There are not many characters that can be used to mark a path element > > descriptor in Bacula, so we need something that is both readily > > available on all or most keyboard layouts and seldomly used in path > > names. > > > > Several characters to mark path elements would be available: > > \ good choice, because it's commonly used as an escape character. > > bad chioce because windows users will make more mistakes than > > necessary > > # possibly usable > > {} possibly usable. > > > > I prefer the braces because I imagine we will need to group things > > together, which suggests some sort of parentheses. > > > > The syntax I imagine could be somehing like this: > > - Take a path as given in the where clause. > > - normal path elements remain unchanged, i.e. /home/arno remains > > /home/arno - a path element can be a simple number, where the number > > represents the path element number from the beginning, counting with 1. > > Take this original path for the examples: > > > > /var/spool/imap/user/its-al/Mailinglists/bacula-devel/ > > > > If I wrote /tmp/{7}/ I would refer to the directory /tmp/bacula-devel. > > where=/tmp/{7}/ instead of > > where=s!/var/spool/imap/user/its-al/Mailinglists!/tmp! > or > where=s!.*bacula-devel!/tmp/bacula-devel! > > I don't think it's more easy to read (and to write). > > And in bacula it's more simple and less buggy to check the first char to > know it bacula must use regexp. I want to hear more about regex vs some other proposal (i.e. I'm still open on this subject), but unfortunately, Eric, s is a perfectly legal first character for a where, so assuming we did regexes, which are very powerfull, but not very user friendly, we need another mechanism to distinguish it from a path specification -- it will probably be necessary to add something like a regexwhere command, in which case, I don't think the s will even be needed. > > > A negative number would indicate to take the elements from the end of > > the path elements list, so /{-1}/ would refer to the direcetory > > /bacula-devel. > > Non-existing path elements would be the empty string, so /tmp/{5}/{12} > > would refer to /tmp/its-al, just like /tmp/{5}/{-18} would. > > > > Note that you could also use a clause like > > /tmp/{5}_{7} which would refer to a path /tmp/its-al_bacula-devel > > > > The {0} should refer to the whole, original path. > > - A path element could also be a special operation. The following > > operations look reasonable: > > * drop an element > > * replace an element > > * modify an element > > Such an operation could be noted in the path element reference as > > introduced, or could be written separately. > > I use the following operation designators: > > ! drop an element > > = replace an element (simple form suitable to people without RE > > experience) s///-syntax as known from pcre, sed, or whatever can be > > implemented for more sophisticated use. > > > > You could write things like > > /{2!}{0} which would drop path element 2 and keep all others unchanged, > > creating /var/imap/user/its-al/Mailinglists/bacula-devel/ as a path. > > > > This syntax would be perfect for LVM snapshot backups: you backup from > > /.snapshot/home and restore to /{1!}{0}. > > where=/{1!}{0} instead of where=s!/.snapshot!! (or > where=s/.snapshot//) > > which is a very common thing for unix user > > (with regexp, you can choose your separator s/toto/titi/ is like > s!toto!titi!, it's more path friendly) > > > Replacing a path element would look like this: /{1=/restore}{0} which > > would restore a backup taken from /.snapshot/home to /restore/home. > > > > (I'll leave the s///-syntax to your imagination; I don't want to wrap my > > mind around REs now) > > > > Finally, you could do things like a restore to > > {3!}{4!}{5!}{6!}{7!}{8!}{9!}/tmp/{1}/{2=oldspool}/which would really mix > > up all my mail, but we do need an option for the users to really need > > our support :-) > > > > - finally, we need a way to attach a suffix or prefix to the file name > > (I don't think more modifications are useful; that would make it too > > hard to understand which file was what). I'd use the special operations > > + and - for that, plus for a suffix, minus for a prefix. > > Stop please, my brain will explode :) > > > So, for my mail, you could restore to {+-old}{0} which would add "-old" > > to the file name restored to the original location, or {-old-}{0} which > > would prefix "old-" to the mail files. > > > > > If user uses something like where=s!/prod!/test!, files will > > > be restored from /prod/xxx to /test/xxx. > > > > > > If user uses something like where=s/$/.old/, files will > > > be restored from /prod/xxx.txt to /prod/xxx.txt.old. > > > > > > If user uses something like where=s/txt$/old.txt/, files will > > > be restored from /prod/xxx.txt to /prod/xxx.old.txt > > > > > > if user uses something like where=s/([a-z]+)$/old.$1/, files > > > will be restored from /prod/xxx.ext to /prod/xxx.old.ext > > > > > > > > > Nice, isn't it ? > > > > Nah, I don't like your syntax suggestions :-) > > Me too :) > > > But apart from that - yes. > > > > (Oh, and I've been thinking about something similar, of course... I > > didn't invent all that stuff above in a few minutes. Which doesn't mean > > there can't be misconceptions in there that others note in a minute ;-) > > > > Arno > > Thanks for your feedback > > Bye > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Bacula-devel mailing list > Bac...@li... > https://lists.sourceforge.net/lists/listinfo/bacula-devel |