Рейтинг:0

Как скопировать папку только для чтения с помощью rsync

флаг in

Я пытаюсь скопировать папку с помощью rsync

rsync -avP "$src_path" "$target_path"

Где src_path — это каталог только для чтения. Насколько я знаю, для копирования источник не обязательно должен быть модифицируемым, а только цель должна быть доступна для записи (... да!).

Но rsync выдает мне эту ошибку.

rsync: recv_generator: mkdir $target_path/sub_dir не удалось: файловая система только для чтения (30)
*** Пропуск любого содержимого из этого неисправного каталога ***

Если я скопирую с помощью rsync из доступный для записи источник я не получаю эту ошибку, Если я скопирую с помощью ср из только для чтения источник Я не получаю эту ошибку.

TLDR; Я хочу использовать rsync для копирования только для чтения источник.

Изменить: не просите меня получить доступ для записи к исходной папке, это невозможно (т.е. она мне не принадлежит), кроме того, это выходит за рамки этого вопроса.

Изменить (2): Чтобы воспроизвести,

  1. Зайдите в эту папку на диске соединять
  2. Добавьте ярлык на свой диск
  3. Теперь к Google Колаб и попробуй скопировать папку с помощью rsync
  4. У вас не получится использовать rsync, теперь попробуйте скопировать с помощью cp, и у вас все получится.

Обновление: если src_path доступен только для чтения файл, rsync работает. но если это папка это не работает. (cp и tar работают на всех условиях)

P.S.Я не хочу использовать cp, я хочу использовать rsync (поэтому, пожалуйста, не предлагайте мне использовать что-то менее мощное, чем rsync).

sudodus avatar
флаг jp
Вы пробовали с повышенными правами, `sudo rsync ...`?
Cyber Avater avatar
флаг in
Это не имеет значения, у меня не будет разрешения на запись для источника, потому что файлы не принадлежат мне, это папка на диске Google, к которой у меня есть доступ только для просмотра.
sudodus avatar
флаг jp
Вместо того, чтобы записывать файлы, вы можете попытаться создать архив. Вам могут потребоваться повышенные разрешения (префикс с `sudo`), чтобы сохранить права собственности и разрешения, `tar -cvzf file.tar.gz "$src_path"`; Узнайте больше о tar в `man tar` или найдите учебник в Интернете.
Cyber Avater avatar
флаг in
cp (cp -r -L) -> работает tar (tar -cvzf file.tar.gz "$src_path") -> работает rsync (rsync -avP "$src_path" "$target_path") -> не работает (будет работать, только если у меня есть права на запись для src_path) Мне нужен rsync (я уже говорил, что могу скопировать с помощью cp (теперь еще и tar, проверено)) но хочу rsync
sudodus avatar
флаг jp
В качестве альтернативы можно отключить опцию архивирования `-a` и позволить rsync записывать с правами собственности/правами по умолчанию для целевого каталога (например, заменить `-a` на `-r`). Кстати, какая это файловая система (где находится ваш целевой каталог)? Файловая система Linux (например, `ext4`) или, может быть, файловая система Windows или MacOS?
Cyber Avater avatar
флаг in
rsync -rl "$src_path" "$target_path" тоже не работает. файловая система linux (из google colab)
sudodus avatar
флаг jp
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/130076/discussion-between-sudodus-and-cyber-avater).
vanadium avatar
флаг cn
Здесь важно предоставить конкретную информацию о характере вашей исходной и целевой файловых систем, а также о версии rsync. Я не могу воспроизвести эту проблему с протоколом rsync версии 3.2.3 версии 31 в Ubuntu 21.04, копируя из и в раздел ext4.
Cyber Avater avatar
флаг in
Я добавил шаги воспроизведения.
Will avatar
флаг id
Возможно, я совершенно неправильно понял, но сообщение об ошибке предполагает, что rsync дает сбой, потому что он не может создать каталог в цели, поскольку он доступен только для чтения. Я уверен, что вы правы - rsync с этими параметрами не должен требовать чтения/записи источника. Это может быть слишком банально, но проверили ли вы правильность абсолютного пути к цели, т. е. не используете ли вы относительный путь и, следовательно, пытаетесь создать каталог в исходном (только для чтения) каталоге?
Cyber Avater avatar
флаг in
Я использую Абсолютный путь. Вы можете выполнить шаги воспроизведения и проверить, хотите ли вы.
Рейтинг:0
флаг in

Оказывается, что версия, предоставленная Google Collab, — 3.1.2 (глючная), а последняя версия — 3.2.3 (в которой проблема исправлена).

P.S. !подходящее обновление && подходящее обновление -y не обновляет rsync до 3.2.3. Мне нужно было вручную загрузить и установить с здесь (Да, мне также пришлось вручную загружать и обновлять зависимости).

Спасибо всем за попытку помочь мне. (Особенно @vanadium).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.