【Linux】NTFS文件备份与磁盘格式转换

项目场景:

  • 首先,准备在原先的NTFS硬盘上使用docker部署mysql并对mysql的数据进行持久化,持久化的硬盘选择空间大的NTFS格式硬盘。
  • 然后,部署的时候发现mysql容器的启动日志中针对my.cnf文件的提示是ignore,原因是权限设置为World-Read即所有人都可以读取。
  • 接下来,无论如何使用chmod 777还是chmod 644依旧改变不了my.cnf文件的权限,文件权限保持-rwxrwxrwx;
  • 随着想起之前挂载NTFS硬盘文件的设置,之前遇到的问题是硬盘回收站失效,即删除文件的时候是永久删除而没有回收站机制。

在/etc/fatab中的挂载语句如下,此时文件的权限管理失效:
UUID=C7E7C8FFF7C15075 /my_data ntfs defaults,utf8,uid=1000,gid=1000 0 0
查询资料后改动为下面的格式,发现新的问题是又没有回收机制了,删除一个文件就只能永久删除
UUID=C7E7C8FFF7C15075 /my_data ntfs permissions 0 1

改回原来的格式后,开始思考

考虑到这个硬盘需要在Linux系统中频繁地进行数据集的读写,不如直接将文件系统换回Linux常用格式EXT4


问题描述

Linux中将my_data硬盘的文件拷贝到备份硬盘时,出现拷贝到一半时不能完全拷贝的问题,于是切换Windows系统并使用工具进行硬盘修复;修复完成后,在Windows系统下复制文件会出现0x80070005的错误。

于是切换回Ubuntu系统,可以完整拷贝完文件夹;准备换回Windows系统查看,发现统计的文件夹大小差异很大。
在这里插入图片描述

硬盘是NTFS格式,通过Ubuntu系统写入文件,然后在Windows系统中读取文件。

备份硬盘文件时出现的问题

在Windows系统中打开由Ubuntu系统中创建的文件,出现问题。

在这里插入图片描述

  • 分区:NTFS
  • Windows系统版本:Windows10企业版
  • Linux系统版本:Ubuntu 22.04
  • Linux中硬盘的挂载方式:

在这里插入图片描述

cmd输入systeminfo
在这里插入图片描述
在这里插入图片描述
vi /etc/fstab后能看到

UUID=C7E7C8FFF7C15075 /my_data ntfs defaults,utf8,uid=1000,gid=1000 0 0


原因分析:

针对拷贝前后的文件夹进行比较。
在这里插入图片描述
在这里插入图片描述

根据logs和pth文件的共性,推测可能是文件名含有@的原因。

推测1:当硬盘是NTFS格式的时候,使用Ubuntu系统创建或复制文件名称中含有@符号的文件,在Windows系统中读取不出来。

验证:在Linux系统中,创建下面两个文件“fileBuilt@Linux.txt“和“fileBuiltInLinux.txt”,其中log文件是其它地方拷贝过来的。
在这里插入图片描述
实验表明,在Linux系统中手动创建的两个文件都可以打开,那么推测1就是错误的。

推测2:使用Ubuntu系统创建的文件或文件夹不符号Windows的命名规则,这个时候在Windows系统中读取不出来。
在这里插入图片描述
这个命名不对的文件没办法被Windows读取,改名也改不了,因为Windows无法定位它。
在Linux中复制好这个文件之后,将英文状态下的:去除,发现改名后的文件可以被拷贝。

然后继续进行格式转换,并在Linux系统中改变挂载方式
在这里插入图片描述

此时,格式化后分区的uuid会发生变化,需要重新修改/etc/fstab文件里面的内容才方便挂载,不行的话先注释掉

使用linux系统获取各个分区以及uuid信息如下:

lsblk -f | grep -v /snap
在这里插入图片描述
vi /etc/fstab

在这里插入图片描述

EXT4格式的硬盘设置为detault就好,后面可以使用chmod命令更改权限。

下面的NTFS格式硬盘
记住uid和gid分别代表挂载时权属的用户和用户组,dmask和fmask分别是文件夹掩码和文件掩码,权限最高是777;
使用文件夹掩码022就是777-022 = 755,属于id=1000的当前用户有读、执行和写权限,同组用户、其它用户有读、执行权限。

在这里插入图片描述
chmod改变权限依旧无效,不如mask全部设置为0


解决方案:

  1. 如果复制文件的时候报错,请先使用Linux或Windows下的文件修复工具对硬盘进行修复;
  2. 含有Windows系统不支持的命名字符的文件,可以使用Linux系统复制,但千万别在Windows系统中打开,复制或重命名;
  3. 以后在Linux系统中也尽量避免使用Windows不支持的命名字符。
  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值