I use an old machine as a file server, for backups, and as a testbed for development. I currently have Debian installed, but I'm very interested in FreeBSD because of ZFS: I really, really like its file integrity features.

Before I switch, however, I wanted to ask: what's the best way to migrate my ~400GB of files from the current filesystem (ext3) to ZFS? My number-one requirement is that the migration be absolutely reliable: I don't want to lose any data. (I'll be backing it up before doing this anyway, but still.) My secondary goal is speed: I'd rather not have this take overnight if it doesn't have to.

Recommendations? Is FUSE for FreeBSD stable enough to use? What about FreeBSD's native read support for ext3? NFS, maybe? How have you done this?


Note: Linux systems changed the ext3 header from 128 bytes to 256 bytes a while back. Any version of FreeBSD older than 45-70 days will not be able to mount ext partitions. There is a simple fix, use cvsup to get the most recent sources and then do a make world. Then you will be able to read the ext3 partition.

For FUSE, you could setup/use FUSE on the Linux box and then use it with an SSH account on the FreeBSD box.

NFS on FreeBSD works well, you could then mount the file system from one system on the other system.

Because these are both "UNIX" systems, using rsync would work and would be restartable. By this, I might that you could start a sync, have it die for some reason and when you restart it, it will compare the files on both systems and only copy over the files that did not get copied in the first run. CP will start the copy from the beginning.

I'd stay away from Samba between two UNIX boxes, unless it was your only choice.


I've recently migrated 120GB from a Windows mirrored volume to an OpenSolaris/ZFS box. Rsync over SMB worked well for me. I compared sha1 checksums on some orginals/copies to satisfy myself the migration was successful.


I have done the same migration myself. I found it best to use rsync over ssh between the different machines.

On the linuxbox:

rsync -avc -e ssh /path/to/files user@computer:/path/to/files

And just to be safe run the command 2 times.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.