Data-Recovery

無法移動 7z 存檔,現在無法讀取,但在原始位置留下了一個名為 .part 的片段

  • May 15, 2020

我試圖將舊的 7z 存檔從舊的 ext4 分區移動到目前分區,但在此過程中它似乎隨機取消了。新位置不僅有一個無法讀取的不完整存檔,而且舊位置還有一個7z.part文件。是否有可能以某種方式繼續移動過程?我似乎無法簡單地從文件資源管理器的 UI 中弄清楚,但我想知道是否可能有終端命令?

在舊目錄中使用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 都是紅色的,我認為這意味著一些東西,可能是因為它被損壞了

從 Manjaro Live ISO執行fsck不會產生明顯的損壞跡象。/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:更新lsls -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)

我想我有預感發生了什麼(基於你的 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:  ...
  • 您使用了一些需要FUSE的文件系統,例如 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)!)

回答你的問題,如果復製過程可以繼續?

不能,因為您使用了錯誤的工具來完成任務。

您應該使用rsync或類似工具來確保您擁有原始文件的正確副本。

如何恢復壞的 7z 文件?

最好的辦法是遵循這些說明 -如何從 7-zip.org 恢復損壞的 7z 存檔。

下次怎麼做比較好?

  1. 使用rsync複製、移動等重要文件

  2. 將大文件拆分成更小的文件

3)壓縮時使用恢復資訊——7zip不支持添加恢復資訊,但可以添加par1.0/par2.0格式。(對於 linux 使用par2cmdline或 gui Easy Par2 用於 KDE,對於 Windows,您可以在 Github 上使用MultiPar或MultiPar ;QuickPar)。

  1. 對於儲存,使用 zfs 等高級文件系統(帶有 ECC RAM)來提高數據完整性

引用自:https://unix.stackexchange.com/questions/584243