在将文件夹复制到 SD 卡后,我立即卸载了它并将其从插槽中移除。问题是,我移除了它前它已完成卸载,现在该文件夹名为“ELEILE”(来自“引擎”),并且(据称)有无限的项目,名称完全无效(例如:“╓|?≤^?≈E.DZ$”、“µ?╟ g╥▒τ.?ü”、“j+e?»░a?.b\2”),并报告 6.6TB 的大小,但 SD 只有 16GB,这让它认为只有 11MB 可用(这也没有多大意义)。
每次我尝试做任何与其相关的事情(删除、重命名、复制甚至检查属性)时,它都会开始认为文件系统是只读的,如果我想修改任何内容,我必须重新插入它。
在 FBI(3DS homebrew)之类的程序中打开 SD 通常会将文件夹显示为“引擎”,并且也会正确列出其子文件夹,但是文件丢失并且大小仍然很大,所以没有希望。
我研究这个问题很久了,但是没有人遇到和我一样的问题。我的问题是:如何删除它?
答案1
从终端运行此命令:
Ctl+ Alt+T
$ sudo dosfsck -w -r -l -a -v -t /dev/[drive and partition]
用您的设备的驱动器和分区替换该驱动器和分区。
您可以使用以下命令获取此信息:
sudo lsblk -o name,mountpoint,label,size,fstype,uuid&&sudo parted -l
输出将显示类似于以下内容的分区:/dev/sdb1
。
聊天结果显示 USB 驱动器的分区是干净的。问题出在 3ds 文件夹下的目录上。由于无法处理该文件夹,因此替代方案是备份驱动器的内容,同时跳过有问题的文件夹。
以下是执行此操作的脚本和步骤:
建立备份文件夹:
$ sudo mkdir /usbbackup
$ chwon $(whoami) /usbbackup
该文件夹可以位于系统上的任何地方。第二条命令授予您的帐户对该文件夹的访问权限。
将脚本中的设置更改为以下设置:
source - The name of the mount point of the usb drive
dest - The destination folder.
skipfolder - The problem folder that is being skipped
备份脚本
#!/bin/bash
source=/media/joaovictor/9016-4EF8/
dest=/usbbackup
skipfolder=3ds
ls $source | while read -r item;do
# echo $item
if [[ $item == $skipfolder ]]; then
# echo $item
continue
fi
echo "$source/$item -> $dest"
cp -pvau "$source/$item" "$dest"
done
echo "Finished"