rdiff-backup FAQ

Table of contents

  1. When I try to run rdiff-backup it says "ImportError: No module named __future__" or "SyntaxError: invalid syntax". What's happening?
  2. What do the different verbosity levels mean?
  3. Does rdiff-backup run under Windows?
  4. My backup set contains some files that I just realized I don't want/need backed up. How do I remove them from the backup volume to save space?
  5. How do I install the RPMs on Redhat linux system?
  6. Under Solaris, rdiff-backup keeps failing with the error message "open(/dev/zero): Too many open files".

FAQ

  1. When I try to run rdiff-backup it says "ImportError: No module named __future__" or "SyntaxError: invalid syntax". What's happening?

    rdiff-backup versions 0.2.x require Python version 2.1 or later, and versions 0.3.x and later require Python version 2.2 or later. If you don't know what version of python you are running, type in "python -V" from the shell. I'm sorry if this is inconvenient, but rdiff-backup uses generators, iterators, nested scoping, and static/class methods extensively, and these were only added in version 2.2.

    If you have two versions of python installed, and running "python" defaults to an early version, you'll probably have to change the first line of the rdiff-backup script. For instance, you could set it to:

    #/usr/bin/env python2.2
    
  2. What do the different verbosity levels mean?

    There is no formal specification, but here is a rough description (settings are always cumulative, so 5 displays everything 4 does):

    0No information given
    1Fatal Errors displayed
    2Warnings
    3Important messages, and maybe later some global statistics (default)
    4Some global settings, miscellaneous messages
    5Mentions which files were changed
    6More information on each file processed
    7More information on various things
    8All logging is dated
    9Details on which objects are moving across the connection

  3. Does rdiff-backup run under Windows?

    Yes, apparently it is possible. First, follow Jason Piterak's instructions:

    Subject: Cygwin rdiff-backup
    From: Jason  Piterak <Jason_Piterak@c-i-s.com>
    Date: Mon, 4 Feb 2002 16:54:24 -0500 (13:54 PST)
    To: rdiff-backup@keywest.Stanford.EDU
    
    Hello all,
      On a lark, I thought I would attempt to get rdiff-backup to work under
    Windows98 under Cygwin. We have a number of NT/Win2K servers in the field
    that I'd love to be backing up via rdiff-backup, and this was the start of
    getting that working. 
    
    SUMMARY: 
      o You can get all the pieces for rdiff-backup working under Cygwin.
      o The backup process works up to the point of writing any files with
    timestamps.
          ... This is because the ':' character is reserved for Alternate Data
    Stream (ADS) file designations under NTFS.
    
    HOW TO GET IT WORKING (to a point, anyway):
      o Install Cygwin
      o Download the Python 2.2 update through the Cygwin installer and install.
      o Download the librsync libraries from the usual place, but before
    compiling...
      o Cygwin does not use/provide glibc. Because of this, you have to repoint
    some header files in the Makefile:
    
       -- Make sure that you have /usr/include/inttypes.h
          redirected to /usr/include/sys/types.h. Do this by:
    
          create a file /usr/include/inttypes.h with the contents:
          #include <sys/types.h>
      o Put rdiff-backup in your PATH, as you normally would.
    
    
    Then, whenever you use rdiff-backup (or at least if you are backing up to or restoring from a Windows system), use the --windows-time-format switch, which will tell rdiff-backup not to put a colon (":") in a filename (this option was added after Jason posted his message). Finally, as Michael Muegel points out, you have to exclude all files from the source directory which have colons in them, so add something like the --exclude ".*:.*" option. In the near future some quoting facility may be added to deal with these issues.
  4. My backup set contains some files that I just realized I don't want/need backed up. How do I remove them from the backup volume to save space?

    Let's take an example. Suppose you ran

    rdiff-backup /usr /backup
    and now realize that you don't want /usr/local backed up on /backup. Next time you back up, you run
    rdiff-backup --exclude /usr/local /usr /backup
    so that /usr/local is no longer copied to /backup/usr/local. However, old information about /usr/local is still present in /backup/rdiff-backup-data/increments/usr/local. You could wait for this information to expire and then run rdiff-backup with the --remove-older-than option, or you could remove the increments manually by typing:
    rm -rf /backup/rdiff-backup-data/increments/usr/local
    rm /backup/rdiff-backup-data/increments/usr/local.*.dir
  5. How do I install the RPMs on a Redhat linux system?

    The problem is that the default version of python for Redhat 7.x is 1.5.x, and rdiff-backup requires python >= 2.2. Redhat/rawhide provides python 2.2 RPMs, but they are packaged under the "python2" name.

    So, if you are running Redhat 7.x:

    1. Make sure the python2 >= 2.2 package is installed, leaving python 1.5 the way it is
    2. Install the rdiff-backup RPM, using --nodeps if it only complains about python 2.2 missing.
    3. Edit the first line of /usr/bin/rdiff-backup so it says
      #!/usr/bin/env python2
      
      so "python2" gets run instead of "python".

    You can also upgrade using a non-Redhat python 2.2 RPM and avoid the above steps (this is what I did). Because of all the dependencies it is usually easier to use source RPMs for this.

  6. Under Solaris, rdiff-backup keeps failing with the error message "open(/dev/zero): Too many open files".

    Kevin Spicer reported this problem and then posted the following update:

    Subject: RE: Crash report....still not^H^H^H working
    From: "Spicer, Kevin" 
    Date: Sat, 11 May 2002 23:36:42 +0100
    To: rdiff-backup@keywest.Stanford.EDU
    
    Quick mail to follow up on this.. 
    My rdiff backup (on Solaris 2.6 if you remember) has now worked
    reliably for nearly two weeks after I added...
    
        ulimit -n unlimited 
    
    to the start of my cron job and created a wrapper script on the remote
    machine which looked like this...
    
        #!/bin/sh 
        ulimit -n unlimited 
        rdiff-backup --server 
        exit 
    
    And changed the remote schema on the command line of rdiff-backup to
    call the wrapper script rather than rdiff-backup itself on the remote
    machine.  As for the /dev/zero thing I've done a bit of Googleing and
    it seems that /dev/zero is used internally by libthread on Solaris
    (which doesn't really explain why its opening more than 64 files - but
    at least I think I've now got round it).
    
    

Ben Escoto
<bescoto@stanford.edu>
Last modified: Sat May 11 19:26:17 PDT 2002