О том как восстанавливать повреждённые библиотеки в SeaFile я уже писал в предыдущих статьях.
Seafile — FSCK восстановление и экспорт библиотек
Всё это была теория, а сегодня — практика. После отключения электричества что-то в SeaFile пошло не так и одна из библиотек перестала открываться. При попытке открыть библиотеку в web-интерфейсе получаю ошибку:
Разрешение на общий доступ к библиотеке не найдено.
SeaDrive может скачать какие-то файлики, но загрузить не получается. Ошибка:
У вас нет доступа к этой библиотеки
(синтаксис сохранён)
В логах нечто такое:
[03/06/24 14:33:50] Repo 'Работа' sync state transition from uploading to 'error': 'You do not have permission to access this library'.
Понятно, что библиотеку нужно восстанавливать. Останавливаем все зависимые службы.
systemctl stop nginx.service
systemctl stop minidlna.service
systemctl stop jellyfin.service
systemctl stop seafile-fuse.service
systemctl stop seafile.service
systemctl stop seahub.service
Запускаем проверку, идентификатор библиотеки я просто скопировал из URL.
sudo -u sf /opt/seafile-server-latest/seaf-fsck.sh 82ab2679-e32a-489a-b549-2df3905ba2e1
Starting seaf-fsck, please wait ... 2024-03-06 14:20:01 fsck.c(603): Running fsck for repo 82ab2679-e32a-489a-b549-2df3905ba2e1. 2024-03-06 14:20:01 repo-mgr.c(295): Commit 68d4106499b535fe4c374ea2d0bdf97e7b893555 is missing 2024-03-06 14:20:01 fsck.c(620): Repo 82ab2679 HEAD commit is damaged, need to restore to an old version. 2024-03-06 14:20:01 fsck.c(514): Scanning available commits... 2024-03-06 14:20:10 fsck.c(574): Find available commit cd715d57(created at 2024-02-26 00:39:41) for repo 82ab2679. 2024-03-06 14:20:10 fsck.c(429): Checking file system integrity of repo Работа(82ab2679)... 2024-03-06 14:21:48 fsck.c(667): Fsck finished for repo 82ab2679. seaf-fsck run done Done.
Найдено повреждение, есть возможность отката до предыдущего коммита. Запускаем восстановление с опцией --repair.
sudo -u sf /opt/seafile-server-latest/seaf-fsck.sh --repair 82ab2679-e32a-489a-b549-2df3905ba2e1
Starting seaf-fsck, please wait ... 2024-03-06 14:23:29 fsck.c(603): Running fsck for repo 82ab2679-e32a-489a-b549-2df3905ba2e1. 2024-03-06 14:23:29 repo-mgr.c(295): Commit 68d4106499b535fe4c374ea2d0bdf97e7b893555 is missing 2024-03-06 14:23:29 fsck.c(620): Repo 82ab2679 HEAD commit is damaged, need to restore to an old version. 2024-03-06 14:23:29 fsck.c(514): Scanning available commits... 2024-03-06 14:23:36 fsck.c(574): Find available commit cd715d57(created at 2024-02-26 00:39:41) for repo 82ab2679. 2024-03-06 14:23:36 fsck.c(429): Checking file system integrity of repo Работа(82ab2679)... 2024-03-06 14:25:09 fsck.c(407): Update repo 82ab2679 status to commit b68655f0. 2024-03-06 14:25:09 fsck.c(667): Fsck finished for repo 82ab2679. seaf-fsck run done Done.
Откатились на предыдущий коммит. Запускаем службы.
systemctl start seafile.service
systemctl start seahub.service
systemctl start seafile-fuse.service
echo Giving the server some time....
sleep 40
systemctl start minidlna.service
systemctl start jellyfin.service
systemctl start nginx.service
Проверяем работу.
Web-интерфейс заработал, библиотека доступна.
А SeaDrive так и не смог синхронизироваться. Помогло удаление учётной записи и заведение её заново.