изменить дату символической ссылки на bindfs

У меня такое ощущение, что я не могу изменить дату символических ссылок на bindfs. См. Следующую стенограмму того, что я пробовал.

На EXT4:

nailor@needle:~$ mkdir /tmp/ex nailor@needle:~$ cd /tmp/ex nailor@needle:/tmp/ex$ touch realfile nailor@needle:/tmp/ex$ ln -s realfile linkfile nailor@needle:/tmp/ex$ stat realfile linkfile File: `realfile' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 22678377 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:46:15.356004837 +0200 Modify: 2013-09-09 00:46:15.356004837 +0200 Change: 2013-09-09 00:46:15.356004837 +0200 Birth: - File: `linkfile' -> `realfile' Size: 8 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 22678380 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:46:34.299766676 +0200 Modify: 2013-09-09 00:46:27.227855586 +0200 Change: 2013-09-09 00:46:27.227855586 +0200 Birth: - nailor@needle:/tmp/ex$ touch -h realfile linkfile nailor@needle:/tmp/ex$ stat realfile linkfile File: `realfile' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 22678377 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:46:46.931607877 +0200 Modify: 2013-09-09 00:46:46.931607877 +0200 Change: 2013-09-09 00:46:46.931607877 +0200 Birth: - File: `linkfile' -> `realfile' Size: 8 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 22678380 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:46:49.899570563 +0200 Modify: 2013-09-09 00:46:46.931607877 +0200 Change: 2013-09-09 00:46:46.931607877 +0200 Birth: - 

На bindfs:

 nailor@needle:/tmp/ex$ mkdir sub nailor@needle:/tmp/ex$ bindfs -n . sub nailor@needle:/tmp/ex$ cd sub nailor@needle:/tmp/ex/sub$ touch -h realfile linkfile nailor@needle:/tmp/ex/sub$ stat realfile linkfile File: `realfile' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 17h/23d Inode: 2 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:47:34.000000000 +0200 Modify: 2013-09-09 00:47:34.000000000 +0200 Change: 2013-09-09 00:47:34.755006803 +0200 Birth: - File: `linkfile' -> `realfile' Size: 8 Blocks: 0 IO Block: 4096 symbolic link Device: 17h/23d Inode: 3 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ nailor) Gid: ( 1000/ nailor) Access: 2013-09-09 00:46:49.899570563 +0200 Modify: 2013-09-09 00:46:46.931607877 +0200 Change: 2013-09-09 00:46:46.931607877 +0200 Birth: - 

Как вы можете видеть, времена для символической ссылки не изменялись в bindfs. Это проблема, например, rsync, потому что я получаю:

 rsync: failed to set times on "link1": No such file or directory (2) rsync: failed to set times on "link2": No such file or directory (2) ... 

Я обнаружил, что это известная проблема с sshfs ( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=640038 ), но не нашел ничего упоминания о bindfs. Теперь мне интересно, есть ли такие упоминания и / или объяснения недостающих функциональных возможностей и / или ответа, если это влияет на плавкий предохранитель в целом …

  • Symlink в тот же каталог
  • Как связать папку для создания ярлыка
  • Действительно ли жесткие ссылки занимают столько места на диске?
  • Symial aliasing файлы в подкаталогах без изменения текущего каталога
  • Как заставить samba следовать символической ссылке за пределами общего пути
  • Сделать cd следовать символическим ссылкам
  • Символ ссылки на разрешение каталогов запрещен
  • Поиск тестируемой утилиты для получения абсолютного пути к относительной целевой символической ссылке
  • 2 Solutions collect form web for “изменить дату символической ссылки на bindfs”

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

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

    В Linux rsync вызывает utimensat с флагом AT_SYMLINK_NOFOLLOW чтобы изменить время символьной ссылки. Насколько я могу судить, проблема в том, что API FUSE не имеет соответствующего флага для utimens (или utime ), поэтому реализация файловой системы видит только запрос на изменение времени и отсутствие указания на то, следует ли следовать символической ссылке или нет. Отсутствие каких-либо конкретных указаний, как bindfs, так и sshfs действуют обратно совместимым способом: они изменяют цель символической ссылки. Для сломанной символической ссылки это приводит к ошибке ENOENT.

    На первый взгляд, я думал, что это ошибка в FUSE: поскольку FUSE не может передать флаг AT_SYMLINK_NOFOLLOW , он должен вернуть ошибку (EINVAL или ENOTSUP). Тем не менее, из беглого чтения кода Linux VFS , похоже, что код, специфичный для файловой системы, вызывается либо на символической ссылке, либо на ее цели, и поэтому не должен следовать какой-либо символической ссылке. Это имеет смысл: цель символической ссылки может быть в другой файловой системе.

    Поэтому я думаю, что это ошибка в bindfs и sshfs (и, вероятно, во многих других файловых системах FUSE): если указано изменить метаданные символической ссылки, они должны влиять только на эту символическую ссылку или возвращать ошибку, если запрошенное изменение не является возможное.

    Эта ошибка теперь исправлена в bindfs версии 1.12.3.

    Ответ Гилла объясняет ошибку великолепно.

    Interesting Posts

    использовать ffplay для воспроизведения списка аудиофайлов

    Как фиксировать вывод хвоста -f с удаленного хоста на неопределенный срок

    Сортировка таблицы HTML

    Используйте nautilus вместо thunar с папками для рабочего стола?

    Переиндексация большого файла CSV

    Нечувствительный к регистру поиск в awk

    Как игнорировать входной буфер клавиатуры между двумя `read`

    Где указан параметр PageWriteback в исходном файле ядра 4.9 Linux?

    Как использовать один и тот же псевдоним SSH с несколькими адресами хостов / портами и т. Д.?

    Как установить ключи known_host для ssh вручную?

    Где я могу найти схему ссылок для тематики GNOME 3 (например, Adwaita)?

    Получить родительский каталог данного файла

    grep трубопроводы в sed, заменяя inline; но я хочу, чтобы sed печатал имя файла и менял строку. Является ли это возможным?

    Перенаправить stderr и stdout в другой дескриптор файла

    Есть ли способ ссылаться на несколько файлов в каталоге без повторного набора всего пути?

    Linux и Unix - лучшая ОС в мире.