On 2017-07-05 21:38, Jason wrote:
> > - create a file such as "mail.img" on your FAT partition, format
> > it as something smarter (e.g. ext{2,3,4}, UFS or ZFS), and mount
> > it as a loop-back/memory-disk, to which you can then use rsync to
> > that loopback device. This allows for actual sym-links and
> > hard-links which rsync can use for deduplication (using the
> > --link-dest option[1])
>
> An interesting suggestion but a little above my head, I fear.
The specifics would be OS-dependent, but the general gist would be
something like the following:
1) make a DOS-friendly-named "mail.img" file to act as a virtual disk.
I'm specifying 100MB here, but choose a value appropriate for you
$ MAILIMG=/mnt/fatusb/mail.img
$ MOUNTPOINT=/mnt/mailbackup/
$ mkdir -p ${MOUNTPOINT}
$ truncate -s 100MB ${MAILIMG}
2) make a filesystem on it and get the system to recognize it as a
device. On Linux, that might looks something like:
$ /sbin/mkfs.ext4 ${MAILIMG}
# DEVICE=/dev/loop0
# losetup ${DEVICE} disk.img
On FreeBSD for UFS, you'd create a memory disk and format it:
$ su -
# MD_IDX=0
# mdconfig -f ${MAILIMG} -u ${MD_IDX} # create md${MD_IDX}
# gpart create -s gpt md${MD_IDX} # set up GPT partitioning
# gpart add -t freebsd-ufs md${MD_IDX} # create a partition in that
# DEVICE=/dev/md${MD_IDX}p1
# newfs ${DEVICE} # format it with UFS
3) mount the loopback/memory-disk device someplace:
# mount ${DEVICE} ${MOUNTPOINT}
4) use the device mount-point for your backup, such as
$ rsync -avr ~/Mail/ ${MOUNTPOINT}
5) unmount it:
# umount ${DEVICE}
6) destroy the loopback device:
On Linux:
# losetup -d ${DEVICE}
On FreeBSD:
# mdconfig -d -u ${MD_IDX}
Once you have the disk-image file, you can skip the
partitioning/formatting commands (gpart/mkfs.ext4/newfs) and just
create the device (losetup/mdconfig), mount, use, unmount, and
destroy the device. Linux's mount(1) even knows about loop-back
devices so you can just create/mount in one step, and
unmount/destroy in one step:
# mount -o loop ${MAILIMG} ${MOUNTPOINT}
use the disk
# umount ${MOUNTPOINT}
There may be a simpler way of doing it on FreeBSD, but I just use the
mdconfig/mount/use/umount/mdconfig-d sequence and it Works For Me(tm)
You might also be able to use some nice ZFS functionality if it was
available, but that is a little more convoluted (importing/exporting
pools in particular).
Sorry if that's more complicated/convoluted than you want, but it
does give you "full Unix-like filesystem functionality on a
DOS-formatted USB drive".
-tkc