Отключить создание миниатюр только для определенных папок, но для всех пользователей

12

Как запретить моему Ubuntu 14.10 (теперь 15.04) создавать и сохранять эскизы только для определенной папки?
Я хочу сказать, чтобы thumbnailer пропустил эту единственную папку (и подпапки), но для всех существующих и будущих учетных записей пользователей.

Я прочитал некоторые ответы на вопросы об исключении файлов определенного типа, но мне нужно исключить файлы по их расположению!
Я уже пытался скрыть папку (переименована в .foldername), но безуспешно . Кстати, папка принадлежит root.

Byte Commander
источник
6
Просто начало идеи (и она будет работать только для одного пользователя): миниатюры создаются, если я правильно понимаю, путем хеширования пути и записи файла с именем [hash] .png в каталог .thumbnails/normal/и / или .thumbnails/large/в домашний каталог пользователя. Ваша программа может выполнить тот же хэш и вместо этого записать файл миниатюр нулевого байта. Если вам повезет, программа-превью заметит, что файл миниатюр уже существует, и пропустите миниатюру вашего изображения.
Jos
Какой thumbnailer вы используете? Где вы сохраняете миниатюры?
daltonfury42
@ daltonfury42 Я не могу тебе сказать. Ситуация, когда мне это было нужно, была на старом, теперь уже мертвом ноутбуке. Я запускал Ubuntu с XFCE там, так что я думаю, что он был тумблером или как его называли. Во всяком случае, я думаю, если это возможно, это должно быть более общее решение.
Byte Commander

Ответы:

2

В дополнение к ответу @Fabby :

  1. Установите пакет inoticoming

    sudo apt-get install inoticoming
    
  2. Создать скрипт-обертку disable_thumbnails

    #!/bin/bash
    
    # Create the thumbnail filename
    tn_filename=$(echo -n "file://$1/$2" | sed 's/\s/%20/g' | md5sum | awk '{print $1}')
    
    # Destroy the thumbnail without deleting
    find ~/.cache/thumbnails -type f -name "$tn_filename*" -print0 | while IFS= read -d '' file; do
      echo > "$file"
    done
    exit 0
    
  3. Сделайте это исполняемым

    chmod +x disable_thumbnails
    
  4. При необходимости убить запущенные процессы

    killall inoticoming
    
  5. Смотри свою папку

    Избегайте трейлинга /для имен папок

    inoticoming "<path_to_disabled_thumbnail_folder>" <full_path_of_disable_thumbnails_script>  {} "<path_to_disabled_thumbnail_folder>" \;
    

Есть всего лишь одна проблема. Изменения видны только послеnautilus -q

Используйте, inoticoming --foreground …чтобы избежать режима демона, если вы тестируете скрипт.

AB
источник
Ладно, nautilus -qубивает фоновый процесс наутилуса и выпускает миниатюры, кэшированные в памяти, я думаю. И почему \;в конце inoticomingкоманды?
Byte Commander
@ByteCommander Для маскировки ;Нам нужна команда ;in, а не разделитель для следующей команды.
AB
И о чем это inoticoming --foreground _? Что не так с режимом демона? Я думал, что это должно работать автоматически в фоновом режиме. О, и как мне установить, чтобы эта вещь запускалась автоматически?
Byte Commander
@ByteCommander Для тестирования скрипта используйте--foreground
AB
2

Чтобы получить имя файла для миниатюры, начните md5sumс исходного имени файла:

% echo -n "file:///home/user/Pictures/image%201.png" | md5sum
6e1669aea9c118cb2b7ad23fc6646c71  -

% find ~/.cache/thumbnails -type f -name "6e1669aea9c118cb2b7ad23fc6646c71*"
/home/user/.cache/thumbnails/large/6e1669aea9c118cb2b7ad23fc6646c71.png

Теперь удалите разрешения на чтение:

chmod -r /home/user/.cache/thumbnails/large/6e1669aea9c118cb2b7ad23fc6646c71.png

Перезапустите наутилус:

nautilus -q

и у вас не будет миниатюры для /home/user/Pictures/image 1.png.

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

Кредиты : P

Fabby
источник
Если вы добавите этот скрипт и включите строку, которая перезаписывает миниатюру 0-байтовым файлом, я буду счастлив! О, и вы должны сказать мне (или ссылку), как заставить скрипт запускаться автоматически. Лучше всего было бы реагировать на события файловой системы в этой папке, если бы это было возможно ... Я не знаю, как дать вам эту награду, хотя, я думаю, @AB должен сделать это так, как он предлагает ...
Byte Commander
@ByteCommander что-то вроде этого ?
AB
@AB Да, выглядит хорошо. Если бы вы сейчас написали другой ответ с этим сценарием и всем вместе, это было бы здорово! :-)
Byte Commander
@ByteCommander готов :)
AB