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



Reply via email to