Rdiff-backup and point-in-time backups


#1

I think just about any NAS solution needs to have backup versioning / snapshots. I’m surprised that the My Cloud product doesn’t bundle any sort of differential backup versioning. Having a single backup version on an external drive is not sufficient.

A simple solution would be to use rdiff-backup to push daily increments to any other rdiff-backup target (rsync via SSH, CIFS share, etc.) Does anyone know how to install rdiff-backup on this device? Most of the dependencies are missing (libc6 and about a dozen others) so I cannot simply install the Debian .deb file.

I think WD needs to implement rdiff-backup in their firmware and create a simple web interface to view point-in-time versions of a share/folder and restore them.


#2

If one has an older gen 1 v4.x firmware version My Cloud they could, unofficially, use another OS which may provide one the ability to script their own custom backup of the My Cloud to another device.
https://community.wd.com/t/clean-os-debian-openmediavault-and-other-firmwares/93714

For the newer gen 2 v2.x firmware My Cloud its much harder.

So long as rsync is available via SSH one could possibly script a backup process using (I assume) cron. An alternative to Safepoint is discussed in the following thread:
https://community.wd.com/t/alternative-to-safepoint-reposted/140685

And one might be able to use Goodsync to do some sort of scheduled backup as well.
https://community.wd.com/t/app-goodsync-for-wd-my-cloud-backup-and-file-synchronization/173984


#3

Thanks for the info. I’ll check out GoodSync. I have the gen2 version. Currently I’m using rdiff-backup to pull from the NAS using CIFS shares. This works, but it’s not bandwidth friendly… fwiw, here’s my (trivial) bash script I run from OS X.

#!/bin/bash

TARGET="Vault"
NAS_PATH="cifs://user@nas"
SHARES=( "Media" "Public" )

echo ""

for i in "${SHARES[@]}"
do
  echo "Backing up $i"
  if [ ! -d "/Volumes/$i" ]; then
    open -g "$NAS_PATH/$i"
    echo -n "Waiting for /Volumes/$i to mount..."
    while [ ! -d "/Volumes/$i" ]
    do
      echo -n "."
      sleep 1
    done
  echo ""
  fi
  sleep 1
  rdiff-backup /Volumes/$i /Volumes/$TARGET/$i || exit
done