我已经使用 dd 和 SSH 从需要本地副本的服务器下载了启动分区。我可以使用虚拟机启动该分区,但是我注意到一些文件名已损坏。似乎这些文件在此过程中正在使用。文件名现在看起来像 ;68;48:70;10(格式的随机示例)而不是字母。我已确定数字对应于文件名的 ASCII 码。我该如何修复文件名以便我可以使用服务器副本进行本地开发?
答案1
当块设备中的任何分区都安装有写入功能时,您绝不应该执行块设备复制,原因正如您自己发现的:文件可能会在复制过程中被写入。
这就是为什么有 handy-dandyrsync
命令,它可以从已挂载的文件系统复制单个文件。由于它保持对写入的控制,因此不存在损坏文件系统的风险。我的答案是用最少的努力复制(几乎)整个文件系统可以帮助您制定适当的rsync
命令来复制您的文件系统。
如果你不知道如何在不将分区放入虚拟机的情况下挂载分区,你可以使用truncate -s 1G disk.img
(其中1G
是所需磁盘的大小,disk.img
是您选择的文件名)创建磁盘映像,然后通过回送将其转换为块设备和losetup
然后你可以像真实磁盘一样对回送设备进行分区,mount
划分你想要的分区,然后用它rsync
来从服务器复制文件。
如果您确实想要进行块设备复制,您可以在开始复制之前将源文件系统重新挂载为只读 ( mount -o remount,ro
)。显然,如果源上的某些东西试图修改它不再能修改的文件,就会产生副作用,并且如果挂载繁忙,您就无法执行此操作。
如果您无法以只读方式重新挂载,则必须将源重新启动到不会挂载源数据的救援环境,但这意味着停机时间和很多麻烦。