我需要制作一个正在运行的
linux系统的副本(包含在/中,并且新位置在/ mnt / sdb5中准备)似乎包含了大量的/ dev中的硬链接和特殊文件; cpio会在不增加额外魔力的情况下处理这项工作吗?
目前已知的保障措施:
>在副本被认为是可引导的并且使用root = / dev / sdb5之前,不会删除/修改正在运行的系统;在删除之前,请进行完整的分区备份.
>将使用cpio分别归档每个根目录,因此将从LiveCD环境中解压缩,因此捐赠分区不会受到损害
但是,仍然不会因为cpio错过了一些标志并且削弱了权限/节点类型/软或硬链接而浪费时间.
使用哪种工具/哪些水下岩石要避免?
解决方法
回答有关cpio的实际问题:这些是我将用于cpio的标志:
find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5
当然,既然你没有通过网络进行复制,我只会使用cp:
cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /
如果您希望能够多次复制,rsync是其恢复功能的更好选择. (它也像cp一样处理ACL和扩展属性,并且可以选择像cpio一样在网络上工作.所以它是最有用的选项,除了在本地进行第一次复制,我更喜欢用cp做.)
rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5
不要忘记复制/启动和/ dev!
/ boot很简单,只需复制即可.但是/ dev现在更加棘手,因为它被udev隐藏了.我推荐以下程序:
> mkdir / tmp / dev> mount –move / dev / tmp / dev>使用上述命令之一将/ dev复制到/ mnt / sdb5> mount –move / tmp / dev / dev> rmdir / tmp / dev