pretz / yarg Goto Github PK
View Code? Open in Web Editor NEWSimple rsync client for OS X with scheduling support
Home Page: http://alex.turnlav.net/yarg/
License: GNU General Public License v2.0
Simple rsync client for OS X with scheduling support
Home Page: http://alex.turnlav.net/yarg/
License: GNU General Public License v2.0
Yarg should make them case-insensitive somehow (can I use some sort of GNU Regex flag?). I have no idea how to deal with this.
This will require running rsync with the -P option and parsing the output -- shouldn't be too hard.
They should probably be greyed out -- I'm not sure what happens if you add a new job while another is running.
I don't know how to fix this.
On a global and per-job basis.
Currently yarg only allows weekly repeat jobs. The main issue was getting a nice GUI that behaved to allow choosing monthly, daily, or bi-etc weekly jobs.
Aditionally launchd syntax for scheduling things like this is much more bizarre than cron's -- would these require a changeover to cron?
So that the entire program doesn't beachball like it does currently. Also, a "stop backup" button wouldn't work unless the GUI wasn't jammed.
So I can know when to upgrade it.
This will make yarg follow a design more similar to other backup programs -- the user selects several folders that will all be backed up to a single location.
What that would entail as far as changing current code, and if it makes sense.
I can't localize into anything -- making it localizeable would only make sense if someone would want to localize it. Aditionally, would localizing make sense with my personal willy nilly development cycle, or would Actual Releases come about too rarely to be feasable?
It should show the path to and from on separate lines from the title, and have room for in the future having a "Job last ran" note.
People will feel better about the backup actually running this way.
This is a fucking obvious feature.
headdesk
-x, --one-file-system
This tells rsync not to cross filesystem boundaries when
recursing. This is useful for transferring the contents of
only one filesystem.
People will feel better about the backup actually running this way.
This will allow future portability; potentially to gnustep.
Aditionally it appears there are some fundamental issues with launchd in earlier versions of os x: for yarg to work with older versions it will have to work with cron.
psyncx has a cron management class written, I could potentially use that code (psyncx is GPL according to sourceforge although there is no license that comes with the software). Has anyone else written a C/Obj-C interface for creating, modifying, and deleting entries in a user's crontab? I'd really rather not write it all from scratch.
This will allow the user to use rsync to clone their main hard drive onto another, and then boot from the other drive.
Before blessing a drive, do I need to check that the drive is the right partition format?
Via http://sparkle.andymatuschak.org/ duh.
Imagine this scenario:
Yarg stores its serialized jobs in a preferences file in /Users/alex/Library/preferences/com.pretz.yarg
Yarg runs a scheduled job set to run as root, authenticates itself, and begins the job.
NOW, imagine a malicious application that overwrites that preferences file to do something nasty when rsync is called (like somehow giving it setuid). That would be pretty bad.
...
Correct me if I'm wrong, but the exclusion list in the GUI doesn't seem to accommodate filenames which contain whitespace, since whitespace is used to delimitate the excluded files. Also, I had to check the source to find out what the delimiter was for the list; it isn't clear in the program whether it's whitespace, returns, commas, etc.
Thanks a bunch for Yarg though! There really are some godawful OS X GUIs for rsync out there, so it's great to finally find one that is nice and simple and works. And I don't have any major complaints other than this one. :)
This will require a pipe on stderr and parsing rsync's output -- or something fancy with expect if that ever gets done.
The window remembers its stare from its previous use. Are issues like this something that can be dealt with all at once, maybe by not re-using the same window?
Like, say, when a user plugs in an external hard drive or connects to a network resource for the first time.
Yarg should allow a user to enter a password to use for syncing with remote rsync servers, whether via ssh or rsync alone.
It seems to me that the only way to handle receiving passwords from a user and supplying that password to rsync is to use expect to script rsync, and pass a password to expect via a pipe or by embedding it in a script.
My issue is that handing the password to rsync or ssh via the command line will result in the password being visible globally as a running process' name. Is there a way to hide that?
expect also allows passwords to be prompted for conditionally, so that I can just run the job and if it turns out I need a password, ask for one. Is this important?
This will allow yarg to access passwords stored in the keychain, so they don't have to be embedded in launchd jobs.
This will also allow yarg to optionally show something to the user as its job is running, and log that the job ran.
Note that this is only apparent with transfers over very large numbers of files. Also consider visual feedback regarding skipped files vs. transferred files.
Running an rsync job as root is the only way to make a proper image of the entire hard drive. To run an rsync as root, it appears I will have to use os x's authentication framework and do some major refactoring and redesign. See [http://developer.apple.com/documentation/Security/Conceptual/SecureCodingGuide/index.html Apple's Secure Coding Guide], and possible how to call rsync: [http://developer.apple.com/documentation/Security/Conceptual/authorization_concepts/index.html#//apple_ref/doc/uid/TP30000995 Calling a Helper Tool as Root].
Yarg 0.3 is not launching under 10.5.6. In system.log, I get the following entries:
Jan 10 08:39:50 Ians-MacBook-Pro Yarg[1326]: CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary.
Jan 10 08:39:52 Ians-MacBook-Pro ReportCrash[1328]: Formulating crash report for process Yarg[1326]
Jan 10 08:39:52 Ians-MacBook-Pro ReportCrash[1328]: Saved crashreport to /Users/ian/Library/Logs/CrashReporter/Yarg_2009-01-10-083950_Ians-MacBook-Pro.crash using uid: 501 gid: 501, euid: 501 egid: 501
Jan 10 08:39:52 Ians-MacBook-Pro com.apple.launchd97: Exited abnormally: Bus error
The GUI never appears.
I attach the crash log.
seperate doThisThing and doThisThingButtonPressed, or thisThing and thisThingTextArea in yargController
Is there a good reason to use NSKeyedArchiver and save each job to a file instead of just storing everything in dicts and serializing into NSUserDefaults?
rsync 3 includes a number of fixes related to ACLs and hfs "extended attributes". This will require yarg to bundle an rsync binary in its own distribution.
So users can make new folders to backup to.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.