Monday 28 October 2013

rsync and rdiff-backup

Some notes on rsync and rdiff-backup


Some rsync options:
     
       -v, --verbose
        -a, --archive [ same as -rlptgoD (no -H, -A, -X)]

        -b, --backup                make backups (see --suffix & --backup-dir)
            --backup-dir=DIR        make backups into hierarchy based in DIR
            --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)

        -u, --update                skip files that are newer on the receiver
        -l, --links                 copy symlinks as symlinks
        -p, --perms                 preserve permissions
        -E, --executability         preserve executability
        -t, --times                 preserve modification times
        -n, --dry-run               perform a trial run with no changes made
        -e, --rsh=COMMAND           specify the remote shell to use
        -y, --fuzzy                 find similar file for basis if no dest file
            --compare-dest=DIR      also compare received files relative to DIR
            --copy-dest=DIR         ... and include copies of unchanged files
            --link-dest=DIR         hardlink to files in DIR when unchanged
        -z, --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST
            --exclude-from=FILE     read exclude patterns from FILE
        -f, --filter=RULE           add a file-filtering RULE
        -F                          same as --filter='dir-merge /.rsync-filter'
                                    repeated: --filter='- .rsync-filter'
            --exclude=PATTERN       exclude files matching PATTERN
            --exclude-from=FILE     read exclude patterns from FILE
            --include=PATTERN       don't exclude files matching PATTERN
            --include-from=FILE     read include patterns from FILE

            --files-from=FILE       read list of source-file names from FILE
     --exclude-from=rsync_exclude.txt

            --progress              show progress during transfer


e.g:
rsync -avz source remotehost:destination
rsync -avvz source remotehost:destination [ more verbose ]

rsync -avzb source destination [ It will backup the file that is there as default suffix of ~ and only one earlier version only ]

rsync -avzb --backup-dir=/mnt/rsync-backup/ source destination [ This will create a backup directory at as given [ must have write access ] and copy the file under that as a directory structure.  [ Start from the soruce dir name. ]

rsync -avzb --backup-dir=/mnt/rsync-backup/ --suffix=-`date +%s` source remote@destination.

As per the above given example, the command will create a backup of the updating file under "/mnt/rsync-backup/", as per the source of the directory structure and with the file suffix of Filename-epoch time.

So, that you can recover the same file when needed. 

--------------- command example START------------------

amit@Amit:~/patch-abc$ rsync -avvzb  --backup-dir=/mnt/rsync-backup/patch-`date +%s` --suffix=-`date +%s` * remoteHost:/var/www/

backup_dir is /mnt/rsync-backup/patch-1383060956/
opening connection using: ssh remoteHost rsync --server -vvblogDtprze.iLsf --backup-dir /mnt/rsync-backup/patch-1383060956 --suffix=-1383060956 . /var/www/
backup_dir is /mnt/rsync-backup/patch-1383060956/
sending incremental file list
delta-transmission enabled
advertiser/
advertiser/a.html
ads/ads-file.php is uptodate
unit/abc.property is uptodate
backed up advertiser/a.html to /mnt/rsync-backup/patch-1383060956/advertiser/a.html-1383060956
total: matches=0  hash_hits=0  false_alarms=0 data=78

sent 282 bytes  received 55 bytes  51.85 bytes/sec
total size is 104  speedup is 0.31
amit@Amit:~/patch-abc$
 

NOTE: backup structure will be like following:

amitmund@master:/mnt/rsync-backup$ ls -lR patch-1383060956/
patch-1383060956/:
total 4
drwxrwxr-x 2 amitmund amitmund 4096 Oct 29 21:06 advertiser

patch-1383060956/advertiser:
total 4
-rw-rw-r-- 1 amitmund amitmund 73 Oct 29 21:04 a.html-1383060956

--------------- command example END ------------------
In rsync_exclude.txt file, you can put the file and directory information that need to be excluded: e.g:
 
 --exclude-from=rsync_exclude.txt 
 
uploads/
logs/
cache/
nbproject/
.svn
.DS_Store

External links:

http://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history

http://rdiff-backup.nongnu.org/

https://coderwall.com/p/moabdw


No comments:

Post a Comment