Snapper und SnapUtil

Tuesday, April 12. 2011

An earlier post described my TimeMachine-inspired SnapShot backup based on rsync and hard links downloadable there. It has been very useful for me already. You know how things can happen, I was working on a script which should empty a certain directory before writing new files there and at some point substituted the hard-coded path to that directory with a parameter, and then tested the thing forgetting to enter the path-parameter.
Thus, 
rm -rf $DEST_BASE/*  effectivly turned into 
rm -rf /*

I was so glad my last snapShot was but 70 min old.

Then I had to detail the steps and times of working on a certain project a posteriori, which files had been edited over what times on which days? A series of snapShots is basically a very good source for this kind of research, but in praxis it turned out to be uncomfortabel to always walk the pathes up and down between the parallel snapShot directories.

Typically the folders I wanted to compare always share a common relative path, like
snapShots/snap1/some/longish/and/winded/path 
snapShots/snap2/some/longish/and/winded/path 
snapShots/snap3/some/longish/and/winded/path 
and I soon started to wish I had symlinks to the destinations in a special folder. And while in some cases I want to see all the files, in other cases I'd rather only have the files that got changed between one snapShot and the next.

So I ended up creating a tool to build just this.

At the core this is a bash shell script which gets the pathes to the snapShot base, the relative path to link, the destination dir to place the symlinks in and then walks the file tree. It is supported by a gui front end that makes picking the pathes and setting the parameters so much easier.  

Together they form SnapUtil, based on Bash, Python_2.6 and wxPython. This is an early alpha version, GPL 2,  download .

python für den Desktop

Tuesday, April 12. 2011

Um einem shell-script eine bequemes grafisches Frontend zu geben habe ich mich in python und wxPython versucht, und sah mich nach einer IDE um. Boa Constructor  sah zunächst, trotz des haesslichen Icons, recht vielversprechend aus, erwies sich aber leider als sehr absturzfreudig und im Ernst: ein IDE, die mir schon bei den kleinen Anfangsschritten immer wieder unter den Fingern verschwindet und keine Vorkehrungen trifft, Editiertes vor dem Abgang noch gespeichert zu bekommen, scheint mir nicht nützlich.

Im zweiten Anlauf habe ich es dann mit einer Combo von Wing IDE und  WxGlade versucht, und war ganz angetan und erstaunlich schnell produktiv. wingware ist ein kommerzielle Produkt und kommt in einer Staffel von Versionen, eine davon ist kostenlos und für den Anfang genügend. ScriptEditor und Interpreter-Prompt, mehr habe ich davon erstmal nicht benutzt.

Und zum Design des gui diente wxGlade, wobei mich die offizielle Seite zum Download gleich auf einen fork verwies. Dies Projekt ist regelmaessig gepflegt und hat sich eigentlich ganz gut bewährt. Sobald man raus hat, dass man für alles immer erst mal einen sizer platzieren muss und was das Feld Proportion anrichtet, geht es doch recht flott. wxGlade kommt mit einem kleinen tutorial, von dem auch das Ende (9. Notes) lesenswert ist.

Besonders gefreut hat mich, dass wxGlade bei der Code-Generierung sehr zurückhaltend zu Werke geht und bei Neugenerierung nur bestimmte, ausdrücklich mit  " begin wxGlade:" bzw. " end wxGlade" getaggte Bereiche überschreibt. So dass meine anfängliche Sorge, andere Bearbeitungen mit jedem Update des Designs wieder zu verlieren, sich als ganz unbegründet erwies. Gut!

(Page 1 of 1, totaling 2 entries)