Потерянные данные после отмены перемещения папки

Я пытался переместить 30 ГБ папку на внешний диск exFat на Ubuntu 20.04.2. Во время перемещения на exFat появились вложенные папки. Я отменил операцию перемещения, потому что она занимает много времени. После отмены вложенные папки исчезли на exFat, также они отсутствуют на стороне Ubuntu. Я попытался восстановить exFat на машине Windows, но там не было никаких доказательств для этих вложенных папок.

В чем проблема?

0
задан 9 July 2021 в 11:51

1 ответ

В принципе, это работает следующим образом. При операции перемещения каждый файл в источнике удаляется, как только он был успешно скопирован в место назначения. Когда вы прерываете операцию перемещения во время передачи (обычно более крупного) файла, файл назначения оказывается неполным (на мой взгляд, это неудачное поведение linux - скорее, должна быть удалена неполная копия, т.е. поврежденный файл), однако исходный файл сохраняется.

Второе соображение заключается в том, что Linux широко использует оперативную память для буферизации операций передачи файлов. Это означает, что содержимое сначала кэшируется в памяти RAM, и только затем физически записывается с некоторой задержкой на диск назначения. Из-за этого механизма копирование кажется завершенным раньше, чем это есть на самом деле. Как только все файлы будут считаны в кэш, копирование считается завершенным. После этого операционная система в фоновом режиме продолжит запись файлов на диск.

То, что у вас повреждены файлы, заставляет меня подозревать, что вы, возможно, слишком рано извлекли диск exfat. Возможно, вы физически извлекли диск после того, как система сообщила вам, что операция перемещения была отменена. Так говорит система, но на самом деле физические операции записи могли все еще продолжаться в фоновом режиме на основе кэширования, о котором я рассказывал выше.

Это основная причина, по которой вам всегда нужно отсоединять диски после их отключения с помощью программного обеспечения. Если вы сначала попробуете отключить диск через программу, система предупредит вас, что физическое извлечение еще не безопасно, промоет кэш и сообщит вам, когда можно будет извлечь диск.

Рекомендация: предпочитайте сначала копировать, а не перемещать большой набор файлов, а затем удалять исходные файлы после завершения копирования. Если вы отмените копирование, все исходные файлы останутся нетронутыми.

3
ответ дан 28 July 2021 в 11:20

Другие вопросы по тегам:

Похожие вопросы: