eXdupe is backup tool that performs data deduplication at 1 gigabyte per second (3.6 terabyte per hour) on 8 cores. Example of differential backup:

  exdupe z:\database\ database.full Backup 2,000 GB. Results in a 1,200 GB database.full file and takes 57 minutes
exdupe -D z:\database\ database.full database.diff1 Backup again next day. Results in a 65 GB database.diff1 file and takes 44 minutes
exdupe -D z:\database\ database.full database.diff2 Backup again next day. Results in a 65 GB database.diff1 file and takes 44 minutes
exdupe -RD database.full database.diff2 z:\database Restore backup from database.diff2 and database.full

You can also utilize deduplication in a simple file archiver style, outperforming gzip, bzip2, pigz, WinRAR, lzop, 7-Zip, etc, second-to-none:

  exdupe server1\ server2\ server3\ server4\ vmdks.full
 
Backup 400 GB of virtual machines into just 80 GB because they share many data blocks in form of
common system and application files

It uses the sliding window class of deduplication which finds displaced data at byte grannularity and yields the best compression ratio in all use cases. Source code available under restricted and non-permissive terms: exdupe-050-source.zip. Precompiled statically linked binaries:

x64 exdupe.exe 050-linux-x64.tar 043-macos-x64.tar to come 033-freebsd-x64.tar to come to come
POWER   041-linux-power.tar         to come
SPARC 017-linux-sparc.tar to come
Itanium       017-hpux-itanium.tar      
Version 0.5.0 is not backwards compatible! Download old versions
   
 
 
 
   full backup:

      [-vxarctpmgl] [-f] [-s] <sources> <destination>
      [-vxarctpmgl] <-stdin> <filename to assign> <destination>

      <destination> can either be -stdout or a file. Use .full as file extension

   Differential backup:
      -D[vxarctpl] [-f] [-s] <sources> <.full file> <destination>
      -D[vxarctpl] <.full file> <-stdin> <filename to assign> <destination>

      <destination> can either be -stdout or a file. Use .diff as file extension

   Restore full backup:
      -R[fq] <.full file> <destination directory> [files]
      -R[fq] <-stdin> <destination directory>

      [files] is one or more files, drives or directories to restore, typed as
      provided by -L flag

   Restore differential backup:
      -RD[fq] <.full> <.diff file> <destination directory> [files]
      -RD[fq] <-stdin> <.diff file> <destination directory>

      [files] is one or more files, drives or directories to restore, typed as
      provided by -L flag

   List contents:
     -L <.full file | .diff file>

   Flags:
       -r Do not include sub directories
       -o Overwrite existing files (default is to abort)
       -c Continue if a source file cannot be read or does not exist (default is
          to abort)
      -xn Use compression level n for traditional data compression applied after
          deduplication. Set n = 0 for none (lets you apply your own), x = 1 for
          QuickLZ, x = 2 for zlib or x = 3 for bzip2 (default = 1)

       -p Include named pipes
       -l On *nix: Follow symlinks (default is to store link only). On Windows:
          symlinks are always followed - storing link only is not supported
       -a Store absolute and complete paths (default is to remove the common
          parent path of items passed on the command line)
   -s"d:" Use Volume Shadow Copy Service for local drive d: (Windows only)
    -f"s" Filter files using a script, s, written in the LUA language
      -gn Use n GB memory for a hash table (default = 1). Use -mn to specify
          number of MB instead. Use 1 GB per TB data for best compression ratio
          Differential backups will use the same memory as the full backup
      -tn Use n threads/cores (default = 6)
      -vn Use verbose level n for n = 0...9 (default = 7)
       -- Prefix items in the <sources> list with " --" to exclude them.
copyright 2013 eXdupe.com