[Unison-hackers] Sneaker Net or Incremental Backup

Benjamin Pierce bcpierce at cis.upenn.edu
Sat Jan 10 17:15:03 EST 2009


Hi Duane,

Could you re-post this with the shell script appended in-line instead  
of attached?  And/or perhaps just put this explanation in the FAQ wiki

          http://alliance.seas.upenn.edu/~bcpierce/wiki/index.php

Thanks!

     - Benjamin


On Jan 10, 2009, at 5:05 PM, Duane McKinney wrote:

> This message has been automatically modified by CETS's antivirus/ 
> antispam
> filter. If you have questions about this, please send mail to cets.
>
> An attachment named sneakernet.sh was removed from this document as it
> constituted a security hazard. Send mail to cets if you have  
> questions about this policy.
>
> > That's a nice hack -- I had no idea the new copyprog functionality
> > could be used that way.
> That is what I love about linux/unix.  Lots of small programs that  
> can be combined to do great things.
>
>
> Didn't have quite as much free time as I though, but here are he  
> results of my initial testing.  It mostly works, and for now works  
> well enough for me.  I can now cron my syncs and not have to worry  
> that some large file is going to kill our pipe for a few days :)   
> I'll report back again in a month or so, or sooner if I run into an  
> issue and have to change something.
>
> I have attached the shell script and the profile I used for testing.  
> The important parts are:
> copyprog      =   sneakernet.sh /home/Duane/test  
> duane at 192.168.113.2:/home/duane/test /home/Duane/usbdrive
> copyprogrest  =   sneakernet.sh
>
> This replaces what would normally be rsync with the attached shell  
> script.
>
> I have only done limited testing so far, but I don't see anything  
> that could be harmful.
>
> To be useful you will need 2 profiles a normal and a sneakernet.  In  
> your normal profile you should have
> copyprog      =   rsync --inplace --compress --max-size=xxx
> copyprogrest  =   rsync --partial --inplace --compress --max-size=xxx
>
> Where xxx is the size you have determined is too much to transfer  
> via network. For me it is 1073741824 = 1GB
>
> The sneakernet profile should be identical except for the copyprog  
> args
> copyprog      =   sneakernet.sh LocalRoot RemoteRoot SneakerNetPath
> copyprogrest  =   sneakernet.sh
> LocalRoot is the path on the local machine you want to sync
> RemoteRoot is not formatted the same as unison, it is formatted as  
> passed by unison to rsync
> SneakerNetPath is the path to a directory on some removable media
>
> so now you will have 2 command to get everything synched
> unison myprofile
> unison myprofilesneakernet
>
> Issues:
> On copying from the modified machine, unison complains that the copy  
> did not succeed and moves on, so only one file for each directory  
> will be copied to the usb drive in a directory that is out of sync.   
> This is not a big deal for me, but it may be for others.  If it  
> turns out to be a problem I'll probably dig through the source and  
> come up with a real solution rather than this hack/workaround.
>
> I have not done any testing with copyprogrest.  Since we are using  
> local disks at all times, I don't know if this will be needed.
>
> bcpierce at seas.upenn.edu wrote:
>> That's a nice hack -- I had no idea the new copyprog functionality   
>> could be used that way.  Will be interested to hear whether it  
>> works...
>>     - Benjamin
>> Quoting Duane McKinney <duane.mckinney at gmail.com>:
>>> Or from Version 2.31.4
>>> copyprog xxx
>>>     A string giving the name of an external program that can be  
>>> used to
>>> copy large files efficiently (plus command-line switches telling  
>>> it to
>>> copy files in-place). The default setting invokes rsync with  
>>> appropriate
>>> options—most users should not need to change it.
>>>
>>> copyprogrest xxx
>>>     A variant of copyprog that names an external program that  
>>> should be
>>> used to continue the transfer of a large file that has already been
>>> partially transferred. Typically, copyprogrest will just be copyprog
>>> with one extra option (e.g., –partial, for rsync). The default  
>>> setting
>>> invokes rsync with appropriate options—most users should not need to
>>> change it.
>>>
>>> copythreshold n
>>>     A number indicating above what filesize (in kilobytes) Unison
>>> should use the external copying utility specified by copyprog.
>>> Specifying 0 will cause all copies to use the external program; a
>>> negative number will prevent any files from using it. The default  
>>> is -1.
>>> See the Making Unison Faster on Large Files section for more  
>>> information.
>>>
>>> I guess I should have checked out the Beta Documentation 1st.   
>>> I'll try
>>> messing around with using a shell script as the copyprog.  I would
>>> assume that it would work just fine.  My plan is to write a shell  
>>> script
>>> which ignores the destination unison tells it, and instead copies  
>>> it to
>>> a usb drive.
>>>
>>> I'll probably report back on this in a week or so.  Currently I am
>>> running 2.27, so I have some compiling and testing to do.
>>>
>>> Duane McKinney wrote:
>>>> What about a flag that tells it to instead of executing the  
>>>> copies, just
>>>> prints out a list of the files that would be copied?  A proper  
>>>> name is
>>>> escaping me at the moment, but it is a common option on programs.
>>>>
>>>> Benjamin Pierce wrote:
>>>>> Both of these features would be easy to implement using  
>>>>> information
>>>>> that Unison already has available.  If you want to give it a  
>>>>> try, I
>>>>> can tell you where to start.  (I'd be reluctant, though, to add  
>>>>> this
>>>>> code to the main sources -- Unison arguably has too many flags and
>>>>> switches already!)
>>>>>
>>>>> Best,
>>>>>
>>>>>     - Benjamin
>>>>>
>>>>> On Dec 27, 2008, at 10:27 AM, Duane McKinney wrote:
>>>>>
>>>>>> I searched, but came up empty.  Can this be done.
>>>>>> I sync two offices using unison.
>>>>>> 1) (Optional)I would like to be able to set a preference that  
>>>>>> says,
>>>>>> don't try to
>>>>>> sync a file if it would require X bytes transferred
>>>>>> 2) Get a list of changed files from a root.  That way I can  
>>>>>> copy the
>>>>>> files to a
>>>>>> removable drive and sync them when I get to the other office.
>>>>>>
>>>>>> Here is my reasoning.  Most of the time, root changes are very
>>>>>> small, a few MB.
>>>>>> But Let's say that I download a new CENTOS release and place it  
>>>>>> on
>>>>>> the file
>>>>>> server.  This may be a poor example, because I could retrieve it
>>>>>> over the
>>>>>> internet again, but just bear with me.  I would like for  
>>>>>> unison, to
>>>>>> instead of
>>>>>> trying to sync this file over the network to skip it.  The I  
>>>>>> would
>>>>>> like to be
>>>>>> able to say once a week, run a job, that would take the  
>>>>>> differences
>>>>>> in the root
>>>>>> and sent them to a USB drive.  I can then carry this drive to
>>>>>> location 2, and
>>>>>> update the root there.   Then from my understanding, the network
>>>>>> sync would
>>>>>> detect that both roots are identical.
>>>>>>
>>>>>> That way, our bandwidth isn't being eaten up for hours/days,  
>>>>>> trying
>>>>>> to perform a
>>>>>> sync that will most likely fail because it will take so long.
>>>>>>
>>>>>> Also, this would be more useful, than synchronizing the whole  
>>>>>> root
>>>>>> to a usb
>>>>>> drive, because, the total of the data that I am synchronizing  
>>>>>> is >
>>>>>> 1TB.  I would
>>>>>> not mind moving a few GB (<100) via USB.  I am trying to avoid
>>>>>> needing either, a
>>>>>> lot of time, or a bunch of USB drives (one for each root).
>>>>>>
>>>>>> I have not yet looked at the source, but I would assume that  
>>>>>> most of
>>>>>> the items
>>>>>> required for this feature are already in place.  Is it  
>>>>>> feasible?  Is
>>>>>> there
>>>>>> already a way?
>>>>>>
>>>>>> _______________________________________________
>>>>>> Unison-hackers mailing list
>>>>>> Unison-hackers at lists.seas.upenn.edu
>>>>>> http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
>>> _______________________________________________
>>> Unison-hackers mailing list
>>> Unison-hackers at lists.seas.upenn.edu
>>> http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
>>>
>>>
>> _______________________________________________
>> Unison-hackers mailing list
>> Unison-hackers at lists.seas.upenn.edu
>> http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
> <test.prf>_______________________________________________
> Unison-hackers mailing list
> Unison-hackers at lists.seas.upenn.edu
> http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers



More information about the Unison-hackers mailing list