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