Я пытаюсь выполнить резервное копирование на внешний жесткий диск. И собственный диск, и внешний диск используют файловую систему BTRFS. Я делаю это, сначала создавая снимок только для чтения моего домашнего каталога:
# btrfs subvolume snapshot -r /home /.snapshots/home/BACKUP
Затем следует отправка/получение на резервный диск:
# btrfs send /.snapshots/home/BACKUP | btrfs receive /.backup/home
Я получаю такой вывод:
At subvol /.snapshots/home/BACKUP
At subvol BACKUP
ERROR: failed to clone extents to matt/.local/share/Anki2/Matt/collection.anki2: Invalid argument
где ошибка возникает примерно через минуту. Я пробовал с несколькими разными снимками и получал одну и ту же ошибку на каждом. Более того, я не мог найти этот файл ни в одном из снимков. Я подумал, что это может быть какая-то ошибка повреждения диска, поэтому я загрузился в образ ОС USB и запустил
# btrfs check --repair /dev/mapper/...
на размонтированной файловой системе. Это не сообщило об ошибках. После загрузки обратно в файловую систему я снова попробовал резервную копию и получил ту же ошибку. Есть мысли о том, что может быть причиной этого?
РЕДАКТИРОВАТЬ
Согласно комментарию Эммануэля Розы, я попытался
# btrfs scrub start -B /
который вышел без ошибок. Проблема все еще присутствует после очистки.
ПРАВКА 2
Я не смог понять, в чем тут проблема. Я просто удалил локальный файл, и тогда все снова заработало.
ПРАВКА 3
Хотя удаление файлов временно решает проблему, часто создаются новые файлы, которые приводят к той же ошибке, так что на самом деле это не решено. Файлы sqlite, похоже, особенно проблемны.
решение1
По-видимому, это была ошибка в ядре Linux, которая была исправленаэто совершить. Я обнаружил это, разместиввопрос в списке рассылки btrfs. Обновление ядра решило проблему.