changing filesystem format from xfs to ext4 without losing data

I have a fresh Lucid Lynx (Ubuntu 10.04) running on a laptop. where I defined the filesystems as:

  • mount point / on ext4 (46 Gb)
  • mount point /home on jfs (63 GB)
  • swap as 3 Gb

I left the machine over night to do some task, without AC power supply. next day in the morning I found it on standby, task completed, but filesystem was not reachable. it gave me I/O error

it seems that there is a problem with jfs and standby.

anyways, to avoid any hassle, I want to move this mount point from jfs format to ext4.

can I do this without losing data and without the need to place the data in a temporary location until transformation is done?

sorry to mention that, but I recall back in the windows days, we would change a FAT16 to FAT32 or a FAT32 to NTFS without having to lose the data. I hope this is available on Linux.

Update The /home filesystem was xfs not jfs, and it seems there is a bug with this filesystem for some reason, I had to re-install the OS twice until I ended up with ext4 for the entire /

However, as a conclusion, it seems that there is no way to make a conversion


i am unaware of any way to non-destructively convert a file system. this does not mean it is impossible, but i would put it at very low odds.

you can, for example, convert from ext2 to ext3 without wiping the disk, and from ext3 to ext4.

but to go from something like jfs to ext4 seems highly improbable, without first copying your /home files to another partition or external hard disk.

even then, you would want to create a new user on your system, with a home directory somewhere like /tmp/tempuser or copy your configurations for your user, usually the 'dot' files (files beginning with .) in your home directory to a new location off /home and updating /etc/passwd to use the new home directory, so you can log in as a normal user while you're performing this update.

then, back up your files, unmount /home and format it using /sbin/mkfs.ext4 or whatever tool you plan to use. mount the fresh partition at /home and copy your files back.

also, i would recommend something 'intelligent' like rsync to copy your files, to assure you preserve your permissions and all that jazz.


fstransform converts between ext2, ext3, ext4, jfs, minix, xfs, reiserfs.

I see it in Debian repositories, so it probably is also available in other Debian-based distributions.


You can try http://tzukanov.narod.ru/convertfs/ When I used it a few years ago it worked in one case and trashed the file system in another case.