Ruby Fileutils.cp_r Отказано в доступе, когда:preserve => true
Я пытаюсь реализовать скрипт резервного копирования / зеркалирования бедного человека, и у меня возникли некоторые проблемы.
Я нахожусь на Windows-XP, используя модуль FileUtils Руби для рекурсивного копирования файлов.
Пока я не установил флаг:preserve в true, все работает нормально.
Работает:
FileUtils.cp_r('Source_dir', 'Dest_dir', :verbose => true)
Не работает:
FileUtils.cp_r('Source_dir', 'Dest_dir', :verbose => true, :preserve => true)
У меня есть полные права доступа к Dest_dir, так как он находится на рабочем столе моей локальной машины, и я только что создал его. Я могу копировать и удалять файлы и папки, но, видимо, меняю или поддерживаю атрибуты файла с помощью:preserve не работает. У меня не было возможности попробовать это на компьютере Mac или Linux, но, читая в Интернете, флаг:preserve является нормальным камнем преткновения, с которым приходится сталкиваться в среде Windows.
В аналогичной строке вопроса, каково поведение по умолчанию для FileUtils.cp_r, когда он встречает существующий файл в целевом каталоге? Просто перезапишите и замените все в Destination тем, что находится в Source, или я могу пропустить файл с конфликтами и просто зарегистрировать его для разрешения позже? (Если это будет отдельный вопрос, просто дайте мне знать, и я сделаю один.)
Спасибо,
спенсер
1 ответ
В итоге мне пришлось изменить разрешения для целевого каталога, чтобы разрешить изменение, так как кажется, что он записывает файл, а затем изменяет атрибуты.