fsarchiver (File System archiver) IMO is the absolute best for backing up and restoring not only the File System, but anything that you have on a partition
In this How To I am going to explain how I use it to backup the VSIDO build partition and use it on multiple machines
One of the greatest things about fsarchiver is that it does not care how big the partition is that you restore to, as long as it is big enough to handle the size of the original file system. My build FS is right at the 5 gig mark and fsarchiver compresses that down to 1 gig... So you can put your FS on a thumb drive and take it anywhere and restore it. Since my build process is pretty much hardware agnostic (except that it is 64 bit), you should be able to download the link I will provide and restore exactly the build machine / FS that I use to build VSIDO
Here we go. fsarchiver a part of VSIDO already. In this How To, I am going to describe exactly the steps I used on my machine
Backup the file system with fsarchiver
I am booted to sda1
Make sure that sdc2 is not mounted
1: Create the following directory in /mnt
sudo mkdir /mnt/iso
2: Run the savefs portion of fsarchiver
single-dual core PC with 1GB or less RAM,
sudo fsarchiver -z7 savefs /mnt/iso/buildos.fsa /dev/sdc2
single-dual core PC with more than 1GB of RAM,
sudo fsarchiver -z8 savefs /mnt/iso/buildos.fsa /dev/sdc2
quod core PC with 4GB or less RAM,
sudo fsarchiver -j3 -z8 savefs /mnt/iso/buildos.fsa /dev/sdc2
quod core PC with more than 4GB of RAM,
sudo fsarchiver -j3 -z9 savefs /mnt/iso/buildos.fsa /dev/sdc2
PC with more than four cores and a plenty of RAM,
sudo fsarchiver -j4 -z9 savefs /mnt/iso/buildos.fsa /dev/sdc2
buildos.fsa is the file name being built, saved to /mnt/iso. You can change this name to anything you want as long as it is with the .fsa extension
The save will take 1-3 minutes and when done you will see something like this:
vastone@vsido:~$ sudo fsarchiver savefs /mnt/iso/buildos.fsa /dev/sdc2
Statistics for filesystem 0
* files successfully processed:....regfiles=92361, directories=10723, symlinks=13608, hardlinks=21, specials=44
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
You can now take that .fsa file anywhere you need to for restore
Restoring a fsarchiver fsa file
I am booted to sda1 and I want to restore /mnt/iso/buildos.fsa to sdc8 and it cannot be mounted, if it is, unmount it
Step 1: cd to where the buildos.fsa is
cd /mnt/iso
Step 2: Run the restore process with this command
sudo fsarchiver -j 4 restfs buildos.fsa id=0,dest=/dev/sdc8
This will take 1-3 minutes to restore and when it is done, you will see something like this
vastone@vsido:/mnt/iso$ sudo fsarchiver restfs buildos.fsa id=0,dest=/dev/sdc8
[sudo] password for vastone:
Statistics for filesystem 0
* files successfully processed:....regfiles=90272, directories=10191, symlinks=12503, hardlinks=21, specials=44
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
Step 3: Change the uuid of your swap partition on the new restored device
Note - Do this only if you have a swap section in your fstab
First in terminal run:
sudo blkid
You will see something like this as one of the entries
/dev/sdb8: UUID="c462e964-62a3-4119-ac3b-1a0367905b95" TYPE="swap"
In SpaceFM mount the new drive you just created
Edit /etc/fstab and make sure the entry for swap has the same drive and uuid that you got from blkid
Step 4: Now make sure grub sees the new partition
sudo update-grub
Reboot and login into the build OS...
Profit!
NOTE - If you run this restore on the same machine, there will be a uuid conflict and it will not boot. In the next message I will write up how to get around that by making a grub tweak
Part II
How To - Correct UUID When Installing to Same Machine
This will show you what to do when restoring the fsarchive to same machine. Because fsarchive preserves the UUID you must change it or you will not be able to boot to the partition This is how you correct it
Step 1: First you need to change the uuid of the new restored partition. To do that run this:
sudo tune2fs -U random /dev/sdxx
where xx is the actual partition letter and number you are restoring to. In my example it is sdc8 so it is:
sudo tune2fs -U random /dev/sdc8
Now find out what the new uuid is
sudo blkid
that shows my new uuid on sdc8 now as:
f20b1310-fb1a-46b9-abb0-0f04f0a1a254
Now in SpaceFM mount and go to the partition that you created, in my example it is sdc8 and edit /etc/fstab as root
You will see the first entry UUID as something similar to this
#Entry for /dev/sdc3 :
UUID=fe400ca1-e2d6-4d7a-b0e2-4cc01c821fc8 / ext4 errors=remount-ro 0 1
You need to change it to the new uuid for sdc8 from what blkid told us
#Entry for /dev/sdc8 :
UUID=f20b1310-fb1a-46b9-abb0-0f04f0a1a254 / ext4 errors=remount-ro 0 1
Step 2: Getting grub to recognize the restored fsarchive
Make sure sdc8 is unmounted and now run all of this one after the other:
su
mount /dev/sdc8 /mnt
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt
update-grub
exit
ctrl d
When you are finished unmount by executing these from terminal (You do not need to do this if running this from LiveCD)
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/
Now from your normal partition (mbr grub partition or whatever you boot to) make sure you update-grub so it can see the new partition:
sudo update-grub
and when you reboot again the the normal sdc8 VSIDO grub entry will boot correctly
Profit!
It is my birthday today, and the above is my gift to you all
Enjoy! :)
Happy Birthday VastOne!
Very nice tutorial.
You probably already knew this, but just in case you didn't, the "-j" option can be added to the fsarchiver command to enable multi-threading of compression/decompression. So if a person had a snazzy four core machine, they could add "-j 3" to their fsarchiver commands thereby utilizing three of the four available cores and ultimately speeding things up a bit. Said person could even specify "-j 4" as long as they weren't planning on doing anything else while fsarchiver was running. ;)
Thank you tlinsley!
I think the -j option defaults to using all 4 of my cores without that flag. When I run this, my cpu is maxed at 100% and it only takes 2 minutes to back up and even less time to restore without using that option
It is good to know that flag in case you need it to use half of your cpu power, but when I do this I shut down everything and let fsarchiver have the whole show
I will test it with -j4 enabled to see if it is different.. Thanks for the tip. ;D
Feliz CumpleaƱos
Happy Birthday in espaƱol
Thanks for this VastOne, hope you had a great day ... did you manage to blow out all the candles without passing out?
That's looks easy enough. I'll have to play with it ...
I should have learned this years ago.
Hmmm I can -j 2 it and still play.
Yup, gotta play with this...
Edit: Did I miss something?
you should be able to download the link I will provide and restore exactly the build machine / FS
Wow... Was I ever wrong...
I just did a restore with the -j 4 option and it finished a 1 gig restore in 24 seconds...
Incredible..
Later on I will do a savefs with it to see how fast that is...
Incredible..
Thanks tlinsley!
I did the backup portion with -j 4 as well. It took less than a minute for the backup from 5 gig to a 959 MiB fsa of the build system
As long as I have been using fsarchive, I always took for granted that it was 'fast enough'
Boy was I wrong...