dirvish - linux "rsync hardlink" backup to disk
Dirvish - Linux Backup to Disk
Nice tutorial and tipps: http://wiki.edseek.com/howto:dirvish
Execution
- dirvish-runall
Master configuration file
- /etc/dirvish/master.conf
-
## Example dirvish master configuration file: xdev: 1 index: gzip image-default: %Y-%m-%d_%H-%M bank: /srv/backup exclude: lost+found/ *~ .nfs* Runall: home etc var expire-default: +5 days expire-rule: # MIN HR DOM MON DOW STRFTIME_FMT * * * * 1 +1 months * * 1 * * +1 year
-
Vault configuration
- cd /srv/backup
- sudo mkdir etc
- cd etc
- sudo mkdir dirvish
- sudo vi dirvish/default.conf
-
client: my_server
# tree: use trailing "/" !
tree: /etc
exclude: # Exclude a specific directory /cache/ #excludes /etc/cache # Exclude any directory in all subdirectories
cache/ #excludes e.g. /etc/cache, /etc/php5/cache, ...
# /**/.*/**/*cache/
# /**/.*/*cache/
# /**/.*/**/*Cache/
# .kde/share/thumbnails/
-
- Example network config : /media/disk/my_remote_backup/home_my_user/dirvish/default.conf
-
client: my_user@remote_server.example.com
# tree: use trailing "/" !
tree: /home/my_user/
#exclude:
# /**/.*/**/*cache/
pre-client: /home/my_user/bin/dirvish_mysql_dump.sh
zxfer: 1
speed-limit: 0.5
-
Initialize a vault
- dirvish --vault my_vault --init
Run cronjob
- sudo vi /etc/cron.d/dirvish
-
# /etc/cron.d/dirvish: crontab fragment for dirvish # run every night 4 1 * * * root /etc/dirvish/dirvish-cronjob
-
Example MySQL dump script
- on the remote machine
- Example: /home/my_user/bin/dirvish_mysql_dump.sh
-
# dumps mysql databases locally to be included in remote dirvish backup cd /home/my_user/mysql_dumps mysqldump -u user1 --password=password1 --add-drop-table db1 > db1.mysql.dump mysqldump -u user2 --password=password2 --add-drop-table db2 > db2.mysql.dump chmod 600 *.dump
-
Duplicate / Copy a dirvish backup disk
-
# -H stands for "preserve hardlinks" sudo rsync -avH --delete --stats --progress /media/disk/ /media/disk-1/
Automated replication to a backup disk
- /etc/dirvish/backup-clone
-
#! /bin/sh # # daily cron job for the dirvish package # Klemens Ullmann-Marx 2010-01-31 # ## Example of how to mount and umount a backup partition... MOUNTPOINT="/media/inseq_backup_1" mountpoint $MOUNTPOINT # $? is the exit status of the last bash command # ("mountpoint" in that case") # The exit status "0" in case of success, an integer between "1" and "255" in case of error if [ $? -eq 0 ] ; then echo "Good..." else echo "Trying to mount it now..." mount $MOUNTPOINT if [ $? -eq 0 ] ; then echo "$MOUNTPOINT successfully mounted!" else echo "Failed to mount $MOUNTPOINT!" exit 1 fi fi #rsync -aHq --delete /srv/backup $MOUNTPOINT umount $MOUNTPOINT
Symlink latest backups to a directory for remote backup
- /etc/divish/master.conf
- post-server: /root/bin/latest_backup_symlink.sh
- /root/bin/latest_backup_symlink.sh
-
#!/bin/bash # # 2009-10-12 by Klemens Ullmann-Marx BACKUP_DEST=/srv/backup_latest$DIRVISH_SRC rm -rf $BACKUP_DEST ln -s $DIRVISH_DEST $BACKUP_DEST
-
Delete a file or directory from all snapshots (DANGEROUS!)
Example delete a directory "public" from a vault /srv/backup/srv
- find /srv/backup/srv -type d -name public -exec rm -rf '{}' \;



