我试图将旧的 7z 存档从旧的 ext4 分区移动到当前的分区,但在此过程中它似乎随机取消了。不仅新位置拥有不完整的存档(无法读取),而且旧位置也有一个7z.part
文件。是否有可能以某种方式继续移动过程?我似乎无法简单地从文件资源管理器的用户界面中弄清楚它,但我想知道是否可能有终端命令?
在旧目录中使用ls
显示旧的 7z 文件,但其名称似乎是红色的,并且 ls 声称无法读取该文件(I/O 错误)。在新目录中使用它似乎也显示为红色,但没有相同的错误
旧目录是 ~/Documents/Archive/backup (在不同的分区上,因为这是来自较旧的 Linux 安装)
[frontear@frontear-net backup]$ ls
ls: cannot access 'OneDrive.7z': Input/output error
OneDrive.7z OneDrive.7z.part
尽管ls
声称此处存在 OneDrive.7z,但实际上即使启用了隐藏文件,通过文件资源管理器也看不到它
当前目录是 ~/Desktop/Archive/backup (我当前的 Linux 安装)
[frontear@frontear-net backup]$ ls
OneDrive.7z
在这两个命令中,OneDrive.7z 都是红色的,我认为这意味着什么,可能是因为它已损坏
fsck
从 Manjaro Live ISO运行不会产生明显的损坏迹象。/dev/sda2
是我当前的分区,而/dev/sda3
是旧分区。
[manjaro manjaro]$ sudo fsck /dev/sda2
fsck from util-linux 2.34
e2fsck 1.45.4 (23-Sep-2019)
/dev/sda2: clean, 738853/39223296 files, 76011466/156883968 blocks
[manjaro manjaro]# fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.4 (23-Sep-2019)
Superblock last write time is in the future.
(by less than a day, probably due to the hardware clock being incorrectly set)
/dev/sda3: clean, 4362438/9715712 files, 18432430/38835968 blocks
编辑:fsck
应蒂莫西·鲍德温的要求更新:
[manjaro manjaro]# fsck -f /dev/sda2
fsck from util-linux 2.34
e2fsck 1.45.4 (23-Sep-2019)
Pass 1: Checking inodes, blocks, and sizes
Inode 19400943 extent tree (at level 2) could be narrower. Optimize<y>? yes
Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda2: 757397/39223296 files (0.5% non-contiguous), 80084462/156883968 blocks
[manjaro manjaro]# fsck -f /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.4 (23-Sep-2019)
Superblock last mount time is in the future.
(by less than a day, probably due to the hardware clock being incorrectly set)
Superblock last write time is in the future.
(by less than a day, probably due to the hardware clock being incorrectly set)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda3: 4362438/9715712 files (0.1% non-contiguous), 18432430/38835968 blocks
编辑2:更新ls
为ls -l
:
[frontear@frontear-net ~]$ cd ~/Documents/Archive/backup/
[frontear@frontear-net backup]$ ls -l
ls: cannot access 'OneDrive.7z': Input/output error
total 2168832
-????????? ? ? ? ? ? OneDrive.7z
-rw------- 1 frontear frontear 2220883968 Apr 30 06:46 OneDrive.7z.part
[frontear@frontear-net backup]$ cd ~/Desktop/Archive/backup/
[frontear@frontear-net backup]$ ls -l
total 2446952
-rw------- 1 frontear frontear 2220883968 Apr 29 23:13 OneDrive.7z
编辑3:添加了一个smartctl
检查:
[manjaro@manjaro ~]$ sudo smartctl -a /dev/sda | sed -n '/Threshold/,/^$/p'
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 0
2 Throughput_Performance 0x0004 142 142 000 Old_age Offline - 70
3 Spin_Up_Time 0x0007 128 128 024 Pre-fail Always - 177 (Average 180)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 2450
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000a 100 100 000 Old_age Always - 0
8 Seek_Time_Performance 0x0004 118 118 000 Old_age Offline - 33
9 Power_On_Hours 0x0012 097 097 000 Old_age Always - 23216
10 Spin_Retry_Count 0x0012 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 2388
192 Power-Off_Retract_Count 0x0032 098 098 000 Old_age Always - 2461
193 Load_Cycle_Count 0x0012 098 098 000 Old_age Always - 2461
194 Temperature_Celsius 0x0002 119 119 000 Old_age Always - 46 (Min/Max 20/53)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0012 097 097 000 Old_age Always - 23203
241 Total_LBAs_Written 0x0012 100 100 000 Old_age Always - 171426971200
242 Total_LBAs_Read 0x0012 100 100 000 Old_age Always - 228792438899
编辑4:badblocks
检查
[manjaro@manjaro ~]$ sudo badblocks -sv /dev/sda
Checking blocks 0 to 976762583
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)
答案1
我想我有一种预感发生了什么事(根据你的 dmesg)。
在您移动过程中发生的情况是,您的 Dolphin 在移动过程中崩溃了。
Apr 29 23:14:28 frontear-net kernel: dolphin D 0 567940 1 0x00004084 Apr 29 23:14:28 frontear-net kernel: Call Trace: ...
您已经使用了一些需要的文件系统保险丝像 NTFS 等。这可能导致死锁(疯狂猜测缓存溢出或类似情况)
如果原件损坏,则表明您可能正在使用的 Dolphin、FUSE 或 NTFS-3g 驱动程序中存在严重错误。
现在回答你原来的问题
出于好奇,你可以执行:
sudo chmod -R g+x ~/Documents/Archive/backup
?我想知道会发生什么。
您尝试列出的文件似乎已损坏,这就是您收到错误的原因:ls: cannot access 'OneDrive.7z': Input/output error
。 (从您采取的操作来看,您的硬件似乎没问题)。您的文件系统(日志?)似乎已损坏。在尝试修复它之前我会强烈推荐通过例如 ddrescue 创建磁盘映像。
(笔记:执行此操作时,fsck
请不要忘记文件系统必须是umount
(ed) 的!)
回答你的问题,复制过程是否可以继续?
不能,因为您使用了错误的工具来完成任务。
你应该使用同步或类似的工具来确保您拥有原始文件的正确副本。
如何恢复坏的 7z 文件?
最好的办法是遵循这些说明 -如何恢复损坏的 7z 存档来自 7-zip.org。
下次该做什么更好?
1)使用同步用于复制、移动等重要文件
2)将大文件分割成更小的文件
3) 压缩时使用恢复信息 - 7zip 不支持添加恢复信息,但可以以 par1.0/par2.0 格式添加。 (对于Linux使用par2cmdline或图形用户界面适用于 KDE 的简易 Par2,对于 Windows,您可以使用多方或者Github 上的 MultiPar;快速帕)。
4) 对于存储,使用 zfs(带有 ECC RAM)等高级文件系统来提高数据完整性