Hacker News new | ask | show | jobs
by algo646464 2732 days ago
The above is a great answer.

To expand on this (from some googling). All of this requires root.

1) Create a sparse file (actual size depends on usage)

  truncate -s 100G /home/zzz/Dropbox.image
2) Create a ext4 filesystem on it

  mkfs.ext4 -m0 /home/zzz/Dropbox.image
3) Mount it as a loopback file system

  sudo mount /home/zzz/Dropbox.image /home/zzz/Dropbox-fs
4) Create / Copy your dropbox folder to Dropbox-fs

  sudo mkdir /home/zzz/Dropbox-fs/Dropbox
  sudo chown -R zzz.zzz /home/zzz/Dropbox-fs/Dropbox
  cp -r /home/zzz/Dropbox-original /home/zzz/Dropbox-fs/Dropbox
5) Start Dropbox and point it to the new location

6) If we want to mount this automatically at login. Adding it to /etc/fstab may not work because of encryption.

But perhaps some script at login to mount it will work. For example, we can create a script at /usr/local/bin/mountDB.sh and then add a line to /etc/sudoers

  zzz ALL=(root) NOPASSWD: /usr/local/bin/mountDB.sh
Then somehow call this script at login of user zzz.
1 comments

I've never heard of a 'loopback filesystem' before. Can you expand a little on what this is?
It lets you mount a file as a filesystem, instead of an actual hardware device. I think it's called "loopback" because instead of reading from /dev/whatever it loops back to /dev/original and reads the specified file.

See the man page for `mount`: https://linux.die.net/man/8/mount (search for "loop")

The right term is a 'loopback device' which allows you to use a file on an existing filesystem as a block device.

Here's what the flow looks like:

open(/path/to/myfile) ->

ext4 driver ->

block operations on /dev/loop0 ->

open(/path/to/loop-file) ->

block operations on the data region of the file ->

btrfs driver ->

block operations on /dev/sda