I need to make a copy of a working linux system, which (being contained in /, and the new place is prepared in /mnt/sdb5) seems to contain considerable amount of hard-, soft-links and special files in /dev; would cpio
handle this job without applying additional magic?
Currently known safeguards:
- not going to remove/modify running system until the moment the copy is considered bootable and working with
root=/dev/sdb5
; before removing, take a full partition backup. - will use cpio for archiving each root directory separately, thus will unpack it from LiveCD environment so donor partition will not be harmed
But still, not going to lose time just because cpio missed some flag and crippled the permissions/node type/soft or hardlink.
Which tool to use / which underwater rocks to avoid?
To answer the actual question regarding
cpio
: These are the flags I would use forcpio
:Of course, since you're not copying over the network, I would just use
cp
:And if you want to be able to do the copying several times,
rsync
is a better choice for its resuming capabilities. (It also, likecp
, handles ACLs and extended attributes and can optionally work over the network likecpio
. So it's the most useful option, except for doing the first copy locally, which I prefer to do usingcp
.)Don't Forget to copy
/boot
and/dev
!/boot
is easy, just copy it. But/dev
is much trickier nowadays since it's hidden byudev
. I recommend the following procedure:mkdir /tmp/dev
mount --move /dev /tmp/dev
/dev
to/mnt/sdb5
using one of the above commandsmount --move /tmp/dev /dev
rmdir /tmp/dev
As @Klox mentioned, when copying partitions of the same size I agree on using
dd
.But when you want to copy a disk onto a different partition whith different size, I'd rather go with
rsync
. Mount the new partition (let's say, /mnt/new) and:No aditional magic for symlinks and no need for live cd (single user / init 1 will do just fine).
When moving Linux installations between hard drives, I always boot from a Live CD and use
dd
to copy the entire partition. I recognize that this doesn't deal with changes in disk size (inevitably the new disk is bigger, which simplifies things), but I like the technique for exactly the reasons you are concerned about usingcpio
: something may go wrong. Using thedd
technique, it's all or nothing: either the new disk boots and everything is the same, or the disk doesn't boot. There's no risk of lurking problems popping up later.Now, of course, there's the issue of the partition not filling the new disk, but I'd rather just create a new partition to fill the extra space and rely on symlinks to move directories around. (I'm sure there's tools for resizing partitions, too, but I haven't used them.)
The more optimal variant of
dd
is usingpartimage
, it will copy only the used section of the partition making copying of large unused partitions more expedient.Note the important caveat:
A convenient copy is included on the System Rescue CD distribution.