Петлевая зацикленная загрузка webdav кэша при монтировании диска

archive view archive save

webdav_1.jpg При монтировании диска в ФМ webdav постоянно качает большой файл в локальный кэш, и после полной его загрузки удаляет скачанный локальный файл и снова скачивает его с удалённого хранилища - файловый менеджер зависает (замерзает), так продолжается до безконечности.

webdav постоянно качает большой файл в локальный кэш, и после полной его загрузки удаляет скачанный локальный файл и снова скачивает его с удалённого хранилища - файловый менеджер зависает (замерзает, webdav loop, webdav freeze), так продолжается до безконечности.

  1. Описание проблемы webdav кэша
  2. Устранение петлевой зацикленной загрузки webdav кэша
  3. Приложения для работы с webdav хранилищами
    1. Для смартфонов
    2. Для ПК

Описание проблемы webdav кэша

1) В операционной системе Debian 10 в качестве локального диска монтируется удалённое сетевое файлововое хранилище по протоколу webdav:

$ /usr/sbin/mount.davfs -o users,rw,_netdev,uid=yuzver,gid=yuzver,conf=/home/yuzver/.davfs2/davfs2.conf https://REMOTE_URL/ /home/yuzver/LOCAL_DIR

2) После открытия локальной директории /home/yuzver/LOCAL_DIR (LOCAL_DIR нужно создавать, если её нет) в папке /home/yuzver/.davfs2/cache создаётся каталог для кэша удалённых файлов с именем REMOTE_URL+home-yuzver-LOCAL_DIR.

3) Выполняется синхронизация и отображение корневого каталога удалённого хранилища.

4) Когда открывается каталог содержащий большой файл (3-4 ГБ например), то ФМ (ака файловый менеджер) зависает (замерзает), и висит до полной загрузки большого файла в кэш.

5) После полной загрузки webdav автоматически удаляет локальный файл и снова скачивает его с удалённого хранилища, что пожно обнаружить регулярно проверяя папку локального кэша:

$ df -h /home/yuzver/.davfs2/cache/REMOTE_URL+home-yuzver-LOCAL_DIR

Такая петлевая зацикленная загрузка кэша никогда не прекращается: ФМ висит; сеть висит; полная жопа. И эту упёртую рогатую программу никак не остановить.

6) Каким-то образом заставить webdav прекратить такое безобразие не представляется возможным. Если убить процесс, то остаётся "труп" каталога /home/yuzver/LOCAL_DIR с типом "Тип inode/x-corrupted".

Устранение петлевой зацикленной загрузки webdav кэша

$ man davfs2.conf говорит нам, что переменные конфигурации:

backup_dir
 Each mounted davfs2 file system has a directory to store backups of files that could not be stored back to the server. This sets the name of this directory. You should regularly check this directory.
 Default: lost+found
 
cache_dir
 The directory where mount.davfs will store cached files. For every mount point a subdirectory will be created. In the systemwide configuration file this will set the system wide cache, used by root. In a users configuration file it will set the cache used by this user.
 Defaults: /var/cache/davfs2 and ~/.davfs2/cache
 
cache_size
 The amount of disk space in MiByte that may be used. mount.davfs will always take enough space to cache open files, ignoring this value if necessary.
 Default: 50

cache_dir - указывает путь где хранится кэш для каждой точки монтирования webdav устройств

cache_size - определяет размер кэша, который может быть использован, но mount.davfs херит (ignoring) сей параметр и выделяет столько сколько ему нужно.

В итоге получается, что ограничить размер кэша webdav не представляется возможным.

При этом, следует полагать, что когда cache_size превышает установленный размер, mount.davfs магёт удалять более старые версии файлов.

Вот и полчается, что

  1. загрузив файл mount.davfs смотрит на cache_size и дует: "дофига нафигачено, отфигачиваем нафиг";
  2. в это же самое время зависший в ожидании ФМ постоянно обновляющий открытое окно так и не обнаружив желанное содержимое каталога продолжает его запрашивать;
  3. mount.davfs получивший от ФМ запрос на открытие каталога с большим файлов внутри подумал: "Наш насяльнике просто душка! Надо, так надо." - начал заново заливать файл с удалённого хранилища;
  4. и так до морковина заговенья.

Установка cache_size на величину общего размера удалённого хранилища, скажем 10 ГБ, решает проблему петлевой зацикленной загрузки локального кэша webdav.

Однако, остаётся загадкой, - cache_size определяет общий для всех точек монтирования размер кэша или же для каждой в отдельности? Документация умалчивает.

Также cache_size не решает задачи, когда мы хотим отключить кэш полностью.

Вместе с тем, есть ещё такие настройки как:

use_locks
 Whether to lock files on the server when they are opened for writing. 0 = no, 1 = yes.
 Default: 1
 
if_match_bug
 Some servers do not handle If-Match and If-None-Match-headers correctly. This otion tells mount.davfs to use HEAD instead of thes headers. 0 = no, 1 = yes.
 Default: 0
 
drop_weak_etags
 Popular servers send a weak etag whenever they are not able to calculate a strong one. This weak etag will never be valid, but after one second it is silently turned into a strong, valid etag. With this flag set to 1, mount.davfs will never use this weak etags. If the flag is 0, the weakness indicator will be removed and the etag is assumed to be strong. There is some danger of the Lost-Update-Problem with this. But it is minimized when using locks.
 You should turn this on, when you cant use locks and there is the danger of concurrent access to the same resource. In this case the etag is not used at all and the resource cannot be cached.
 0 = no, 1 = yes.
 Default: 0
 
ignore_dav_header
 Some servers send wrong information about their capabilities in the DAV-header. In this case the header should be ignored.
 Default: 0
 
use_compression
 Use gzip-compression for downloading files, if supported by the server. Uploads will still be uncompressed.
 Default: 0

Согласно одной из которых, drop_weak_etags - In this case the etag is not used at all and the resource cannot be cached.

Но по моим наблюдениям drop_weak_etags неарбайтен, и большие файлы один шиш заливаются в локальный кэш. Возможно drop_weak_etags арбайтен для средних файлов размером до 512 МБ, - это пока тайна пократая мраком.

Рабочий файл ~/.davfs2/davfs2.conf спасший "отца русской демократии" от петлевой зацикленной загрузки webdav кэша

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Приложения для работы с webdav хранилищами

В случае описаном выше, выполнялось монтирование диска с персонального удалённого хранилища Nextcloud. Выгоды целый вагин...

Nextcloud - также позволяет совершать защищённые видеозвонки и чаты между пользователями (родными, близкими, клиентами и т.п.), независимо от неорграфического расположения, + синхронизация файлов (заметок) меж мобильным гаджетом и стационарным ПК. Отличная альтернатива платной сотовой связи и насквозь наЧИПукизированого прослушкой ПО с закрытым исходным кодом типа Skype, Telegram etc.

Для смартфонов

Nextcloud, Nextcloud Talk на F-Droid.org от разработчика самой Nextcloud - вероятно самые полезные и нужные приложения в смартфоне. Прочие типа Nextcloud Notes нахрен не нужны (хватает обычных текстовых редакторов).

Для ПК

Насквозь наЧИПукизированый Windows давно не рассматриваем, однако есть одна FOSS программа которая подойдёт и для вдоюзверей - это rclone,  поддерживает туеву хучу облачных хоронилищ:

  • 1Fichier
  • Akamai Netstorage
  • Alibaba Cloud (Aliyun) Object Storage System (OSS)
  • Amazon Drive (See note)
  • Amazon S3
  • Backblaze B2
  • Box
  • Ceph
  • China Mobile Ecloud Elastic Object Storage (EOS)
  • Cloudflare R2
  • Arvan Cloud Object Storage (AOS)
  • Citrix ShareFile
  • DigitalOcean Spaces
  • Digi Storage
  • Dreamhost
  • Dropbox
  • Enterprise File Fabric
  • Fastmail Files
  • FTP
  • Google Cloud Storage
  • Google Drive
  • Google Photos
  • HDFS (Hadoop Distributed Filesystem)
  • HiDrive
  • HTTP
  • Huawei Cloud Object Storage Service(OBS)
  • Internet Archive
  • Jottacloud
  • IBM COS S3
  • IONOS Cloud
  • Koofr
  • Liara Object Storage
  • Mail.ru Cloud
  • Memset Memstore
  • Mega
  • Memory
  • Microsoft Azure Blob Storage
  • Microsoft OneDrive
  • Minio
  • Nextcloud
  • OVH
  • OpenDrive
  • OpenStack Swift
  • Oracle Cloud Storage
  • Oracle Object Storage
  • ownCloud
  • pCloud
  • premiumize.me
  • put.io
  • QingStor
  • Qiniu Cloud Object Storage (Kodo)
  • Rackspace Cloud Files
  • RackCorp Object Storage
  • Scaleway
  • Seafile
  • SeaweedFS
  • SFTP
  • SMB / CIFS
  • StackPath
  • Storj
  • SugarSync
  • Tencent Cloud Object Storage (COS)
  • Wasabi
  • WebDAV
  • Yandex Disk
  • Zoho WorkDrive
  • The local filesystem

В Дебиан просто делаем apt-get install rclone rclone-browser

Для виндосов есть rclone Precompiled binary for Windows от самого автора проги.


Об авторе
Иван Шаман
Меня нет ни в Инстаграмме ни в Фейсбуке, я просто хожу по улицам и рассказываю первым встречным: сколько зарабатываю; с кем дружу; где живу и чем дышу. У меня даже появилось несколько подписчиков: ПСИХоЛОХ и участковый полицай!
Ещё статьи автора

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме