
Я только что обнаружил, что rm -f
не могу удалить файлы из дерева, включая каталоги только для чтения. Есть ли альтернативная команда, которая может это сделать? Удаление запускается rnapshot, и я подумал о предоставлении другого значения для "cmd_rm".
Предыстория: я использую rnapshot
, который выдает кучу ошибок "отказано в доступе" при удалении папки _delete.XXXXX. Ошибки возникают именно на файлах в каталогах только для чтения. Эти каталоги были созданы автоматически git-annex, поэтому я не могу просто дать им права на запись.
Пример:
Создайте два файла с разными правами записи в каталоге, доступном только для чтения:
$ mkdir моя_дир $ коснитесь mydir/test1 $ коснитесь mydir/test2 $ chmod aw mydir/test1 $ chmod aw mydir/
Попробуйте удалить этот материал:
$ rm -r моя_каталог/ rm: перейти в защищенный от записи каталог 'mydir'? y rm: удалить защищённый от записи обычный пустой файл 'mydir/test1'? y rm: невозможно удалить «mydir/test1»: Отказано в доступе rm: невозможно удалить 'mydir/test2': Отказано в доступе
Я даже не могу удалить файлы напрямую:
$ rm -rf mydir/test2 rm: невозможно удалить 'mydir/test2': Отказано в доступе
Поиск каталогов, доступных только для чтения, и предоставление им возможности записи перед удалением сработает:
(find /path/to/remove -type d -not -writable | xargs chmod u+w) && rm -rf /path/to/remove
Но команда кажется действительно сложной для довольно простой задачи. Это действительно единственное решение? И как мне сказать rsnapshot сделать такую вещь?
решение1
Я не могу комментировать, поэтому пишу здесь.
Насколько я знаю, read only означает только чтение и точка. А не чтение и запись.
Думаю, вам придется смонтировать свой каталог в режиме чтения и записи.