我正在尝试将正在运行的 Linux 安装转移到新的更大磁盘,因此我将新磁盘连接到 USB 端口,对其进行分区并创建文件系统。在复制所有文件时,我在 /dev 目录上遇到了障碍。 “cp -a”完成了大部分工作,但在 /dev/video0 上失败并显示“不支持操作”。
>ls -l /dev/video0 # on disk I copy from
crw-rw----+ 1 root video 81, 0 2011-09-25 17:15 video0
>ls -l dev/video0 # on disk copied to
crw-rw---- 1 root video 81, 0 2011-09-25 17:15 video0
因此,除了访问权限字段末尾的“+”之外,似乎所有内容都被复制了。该加号是什么意思以及如何在目标磁盘上创建它?
答案1
末尾的+
表示存在访问控制列表。除了传统的 UNIX 权限(仅区分所属用户、所属组和其他用户)之外,文件上的 ACL 还为其他用户或组提供特定权限。您可以使用getfacl
查看文件上的 ACL 并setfacl
对其进行设置。
cp -a
如果可以的话会复制 ACL。不能的原因是目标文件系统不支持 ACL 或在没有 ACL 支持的情况下安装。
在这里,这并不重要。/dev
无论如何,它不是磁盘上的文件系统,您不应该复制它,同样您也不应该复制/proc
和/sys
其他非磁盘文件系统。运行cp -ax
以执行复制,而无需递归到其他文件系统。
cp
通常不是将现有安装转移到新磁盘的最佳方法。批量复制文件系统,然后将其放大以填充目标分区会更容易。简而言之:
cat </dev/sdy1 >/dev/sdz1
resize2fs /dev/sdz1
其中/dev/sdy1
是包含现有安装的分区,也是/dev/sdz1
您要将系统复制到较大磁盘上的位置。键入此命令时要非常小心,因为这将不可恢复地删除目标分区。
复制文件后,您需要在新磁盘上设置引导加载程序。grub-install /dev/sdz
应该可以解决问题,但您可能需要先写一个/boot/grub/device.map
来表示新磁盘将成为主磁盘。如果您遇到问题,最简单(如果不是最方便)的方法是将新磁盘放在最终位置,然后从 Ubuntu CD/USB 启动并告诉安装程序修复引导加载程序。