BackupPC is a free backup software suite with a web-based frontend. The cross-platform server will run on any Linux, Solaris, or UNIX based server. No client is necessary, as the server is itself a client for several protocols that are handled by other services native to the client OS.

Backup Methods

Three methods for getting backup data from a client are:

  • smb (Server Message Block)
  • tar (tape archiver)
  • rsync (file transfer program for Unix systems)






    * 1.




  • rsync/cygwin software needs to be installed on client machine

The easiest method for backing up windows machines is the "smb" protocol. See the BackupPC manual for the full pro's and con's


To configure BackupPC there are 3 options:

  • Web browser (Easier)
  • Text editor (Power user)
  • Combination of both (Balanced)

Note: The BackupPC user manual is heavily "Text" based.

The BackupPC Configuration Files

BackupPC's configuration files are in the /etc/backuppc directory. The most important ones are /etc/backuppc/ and /etc/backuppc/hosts. You should open them now to become familiar with all configuration options. Both files are heavily commented, so by reading them you should understand what they do. For example, in /etc/backuppc/ you can define how often and when BackupPC wakes up to back up the clients, when/how often it does full or incremental backups, how many log files it should keep, etc.

nano -w /etc/backuppc/

nano -w  /etc/backuppc/hosts


sudo apt-get install backuppc

Add Hosts

To add a client (Host) to BackupPC, we must add it to /etc/backuppc/hosts. That file has the following format:

host        dhcp    user      moreUsers
hostname1     0     user1     anotheruser,athirduser
hostname2     1     user2     stillanotheruser

The first column contains the hostname/NetBIOS name of the client (e.g. hostname1), the second column whether the client is configured through DHCP, the third column contains a user that is allowed to log into the BackupPC web interface to manage that backup client, and the fourth (optional) column contains additional users that can do the same.

Browse Network

smbtree is a smb browser program in text mode. It is similar to the "Network Neighborhood" found on Windows computers. It prints a tree with all the known domains, the servers in those domains and the shares on the servers.

smbtree -b

Don't enter a password, hit enter

        \\BACKUP                        backup server (Samba, Ubuntu)
                \\BACKUP\IPC$                   IPC Service (backup server (Samba, Ubuntu))
                \\BACKUP\print$                 Printer Drivers
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc to machine AMD6000.  Error was NT_STATUS_ACCESS_DENIED

Your network will differ, BACKUP is the name of our BackupPC server, AMD6000 is the name of our Windows Vista PC we want to back up.

Although AMD6000 is configured through DHCP, dhcp should only be set to 1 if the following tests fail:

nmblookup AMD6000

If the test is successful, it should display AMD6000 current IP address:

querying amd6000 on amd6000<00>

Now that you know AMD6000 current IP address, run the same test in the other direction:

nmblookup -A

If successful, the output should look like this:

Looking up status of
        AMD6000         <00> -         B <ACTIVE>
        WORKGROUP       <00> - <GROUP> B <ACTIVE>
        AMD6000         <20> -         B <ACTIVE>
        WORKGROUP       <1e> - <GROUP> B <ACTIVE>

        MAC Address = 00-1A-92-B0-4C-63

Both tests were successful, so we can set dhcp to 0, and we put AMD6000   0       user into /etc/backuppc/hosts and comment out the localhost line:

nano -w /etc/backuppc/hosts

AMD6000      0       user
#localhost   0       backuppc

If the tests had not been successful, we would have put AMD6000   1       user into /etc/backuppc/hosts instead, and in addition to that we would have had to change the variable $Conf{DHCPAddressRanges} in /etc/backuppc/

We have added the user user to the hosts file. That's the system user whom BackupPC will send email reports regarding AMD6000, so we should create that user on the BackupPC server now:

useradd -m user
passwd user

In addition to that we must create a password for user for the BackupPC web interface:

htpasswd /etc/backuppc/htpasswd user

(If you like you can now open a second browser and log in as user on

Backup Linux Client (rsync)

Now we must edit /etc/backuppc/ The backup method for AMD6000 will be rsync, so we set $Conf{XferMethod} = 'rsync';. AMD6000 has just one (big) partition (/), so we set $Conf{RsyncShareName} = '/';. If you have multiple partitions to backup, you'd specify something like $Conf{RsyncShareName} = ['/', '/var', '/data', '/boot']; instead.

rsync will be tunneled through SSH (port 22). SSH needs to know the hostname or IP address of the client. Unless you have a DNS server that resolves AMD6000 to its IP address, SSH will not be able to resolve the name AMD6000. Therefore we replace $host with $hostIP in $Conf{RsyncClientCmd} and $Conf{RsyncClientRestoreCmd}.

nano -w /etc/backuppc/

$Conf{XferMethod} = 'rsync';

$Conf{RsyncClientPath} = '/usr/bin/rsync';
$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $hostIP $rsyncPath $argList+';
$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $hostIP $rsyncPath $argList+';
$Conf{RsyncShareName} = '/';
#$Conf{RsyncShareName} = ['/', '/var', '/data', '/boot'];

(You might wonder now how we can specify options for multiple clients because the options for notebook will be different from those for AMD6000. It works like this: the options in /etc/backuppc/ are global values that are valid for all clients unless they have their onw configuration file in /etc/backuppc, named after their hostname. So for notebook we will create /etc/backuppc/, and it will contain only the values that are different from the ones in /etc/backuppc/ In fact, we could have created /etc/backuppc/ for falko-desktop instead of modifying /etc/backuppc/

Enable settings

Next restart BackupPC:

/etc/init.d/backuppc restart

Backup Windows Client (smb)

To make backups of Windows systems using smb, we must share the folder that we want to back up. In this case I want to backup the whole C: drive, so I right-click on it in the Windows Explorer and go to Sharing. As share name I specify C.

Next, on, I add a line for notebook to /etc/backuppc/hosts (I do this as root). In this case I use user again as the user. If you use a different username than before, make sure you create it on the system and for the BackupPC web interface, as shown in chapter 5.

vi /etc/backuppc/hosts

AMD6000      0       user
notebook     0       user
#localhost   0       backuppc

Then create the file /etc/backuppc/ and add all options that are different from the ones in /etc/backuppc/ In this case we add $Conf{XferMethod} = 'smb';. Our share name is C, so we put $Conf{SmbShareName} = 'C'; into it as well as the username and password for the Windows share:

nano -w /etc/backuppc/

$Conf{SmbShareName} = 'C';
$Conf{SmbShareUserName} = 'username';
$Conf{SmbSharePasswd} = 'password';
$Conf{XferMethod} = 'smb';

Enable Settings

Then restart BackupPC:

/etc/init.d/backuppc restart

Then reload the BackupPC web interface again. You should now find notebook in the list of clients:

You can start the first backup of notebook manually or wait until BackupPC starts it:

Backup Linux Clients (tar)

For some reason this does not work under Intreped/9.04, however the method described on works fine! The page is complex and confusing, so you must be careful work out just which is your "client" and which is your "server"!

BackupPC is a great backup program for an Ubuntu server. However, backing up Ubuntu client machines doesn’t work “out of the box” due to Ubuntu’s lack of a root account. The following describes how to make BackupPC work with Ubuntu's sudo implementation. By adding sudo to the TAR commands in /etc/backuppc/ and adding backuppc to the sudoers list, you’re able to perform both backups and restores directly from the web-based interface.

Modify /etc/backuppc/

  • Run “sudo gedit /etc/backuppc/”
  • Add sudo to the TAR Client and ClientRestore commands

    • Change $Conf{TarClientCmd} and $Conf{TarClientRestoreCmd} to read

$Conf{TarClientCmd} = ‘sudo $tarPath -c -v -f - -C $shareName’
. ‘ –totals’;

$Conf{TarClientRestoreCmd} = ‘sudo $tarPath -x -p –numeric-owner –same-owner’
. ‘ -v -f - -C $shareName’;
  • Also remove plus (+) from $incrDate in $Conf{TarIncrArgs}  so it won't be double escaped (need to escape only once when running sudo):

$Conf{TarIncrArgs} = '--newer=$incrDate $fileList+';
  • Change $Conf{BackupFilesExclude} (these seem to all be temp files that you don’t really need to backup) to read

$Conf{BackupFilesExclude} = ['/proc', '/dev', '/tmp', '/mnt', '/media', '/sys', '/lost+found', '/usr/src', '/var/lib', '/var/tmp', '/var/cache', '/var/spool', '/var/run', '/var/lock', '/var/games', '/home/*/.Trash', '/home/*/.mozilla/*/*/Cache', '/home/*/.mozilla/*/*/Cache.Trash'];

Add backuppc to the sudoers list

  • Run “sudo visudo”
  • At the bottom of the file add

# Allow backuppc to run tar without a password
backuppc ALL=NOPASSWD: /bin/tar
  • If you are unfamiliar with vi editor: Scroll to the end of last line of the file, press a to start adding text, write magic lines mentioned above, hit esc, type ":w"+enter to save file, ":q" to quit (":q!" to quit without saving changes).


For other ways of backing up some or all of your system, see BackupYourSystem .



  • falko


BackupPC (last edited 2011-04-07 22:23:16 by k.dejong)