This shows you the differences between two versions of the page.
— |
articles:how-to-backupninja-samba-share:start [2013/10/05 21:34] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== How to backupninja a samba share ? ====== | ||
+ | |||
+ | I will explain how to configure [[http://packages.debian.org/en/stable/backupninja|backupninja]] to do an automatic incremental backup of a remote samba share. The main difficulty is that I consider that the samba share is sometime offline. | ||
+ | |||
+ | First of all we have to install ''backupninja'', ''rdiff-backup'' and ''smbfs'': <code bash>sudo aptitude install backupninja rdiff-backup</code> | ||
+ | |||
+ | Then we have to create a customized backupninja handler. This is required because we have to test if the samba share is online before starting the incremental backup process. | ||
+ | |||
+ | Finally we will create a simple action to backup a samba share. Of course we could create as many actions as we need (if we had several samba share to backup). | ||
+ | |||
+ | ===== Create the handler ===== | ||
+ | |||
+ | Our own handler name will be **''zekra''**. | ||
+ | |||
+ | - We copy the rdiff handler: <code bash>cp /usr/share/backupninja/rdiff /usr/share/backupninja/zekra</code> | ||
+ | - We edit the file and we add this code at the end of the ''### GET CONFIG ###'' section:<code bash> | ||
+ | # get the samba config | ||
+ | setsection samba | ||
+ | getconf smb_remote_path | ||
+ | getconf smb_mount_path | ||
+ | getconf smb_credentials | ||
+ | |||
+ | # mount the samba share and check its status | ||
+ | umount $smb_mount_path | ||
+ | output=`smbmount $smb_remote_path $smb_mount_path -o credentials=$smb_credentials 2>&1` | ||
+ | if [ $? = 0 ]; then | ||
+ | info "Samba share mounted ($smb_remote_path on $smb_mount_path)" | ||
+ | else | ||
+ | error $output | ||
+ | fatal "Samba share cannot be mounted ($smb_remote_path on $smb_mount_path)" | ||
+ | fi | ||
+ | </code> | ||
+ | - On the same file, we put this code at the end just before the ''return 0'':<code bash> | ||
+ | output=`umount $smb_mount_path` | ||
+ | if [ $? = 0 ]; then | ||
+ | info "Samba share succesfully unmounted ($smb_remote_path on $smb_mount_path)" | ||
+ | else | ||
+ | info $output | ||
+ | info "Samba share cannot be unmounted ($smb_remote_path on $smb_mount_path)" | ||
+ | fi | ||
+ | </code> | ||
+ | |||
+ | At this point our customized handler is ready. So we have to create a first backup action. | ||
+ | |||
+ | ===== Create an action ===== | ||
+ | |||
+ | In order to use our customized handler (zekra), our action filename has to be ended with the **''.zekra''** suffix. | ||
+ | |||
+ | - We create a standard ''rdiff'' action using the ''ninjahelper'' utility: <code bash>sudo ninjahelper</code> (for example ''90.rdiff'') | ||
+ | - We have to rename it to match the ''.zekra'' suffix: <code bash>mv /etc/backup.d/90.rdiff /etc/backup.d/90.zekra</code> | ||
+ | - We have to add the ''[samba]'' section to the end of the ''90.zekra'' file: <code ini> | ||
+ | [samba] | ||
+ | smb_remote_path=//my-samba-share-hostname/MyHome | ||
+ | smb_mount_path=/path/that/will/be/backuped/ | ||
+ | smb_credentials=/path/to/a/smbmount/credential/file | ||
+ | </code> | ||
+ | - Take care that the ''/path/that/will/be/backuped/'' exists and that it is listed in the ''include'' directives (above in the file in the ''[source]'' section). | ||
+ | |||
+ | __Notice:__ the credential file format should respect what the ''smbmount'' command wants. Example: <code>username = stephane | ||
+ | password = secret</code> | ||
+ | |||
+ | |||
+ | {{tag>article computing backupninja backup rdiff-backup samba debian}} | ||
+ | ~~DISCUSSION~~ | ||