Ruby Fileutils.cp_r Отказано в доступе, когда: preserve => true - PullRequest
1 голос
/ 26 мая 2010

Я пытаюсь реализовать скрипт резервного копирования / зеркалирования для бедного человека, и у меня возникли некоторые проблемы.

Я на 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 Ответ

1 голос
/ 14 июля 2010

В конечном итоге мне пришлось изменить разрешения для целевого каталога, чтобы разрешить изменение, поскольку, как представляется, он записывает файл, а затем изменяет атрибуты.

...