Puncte:0

Cum să copiați folderul numai în citire folosind rsync

drapel in

Încerc să copiez un folder folosind rsync

rsync -avP „$src_path” „$target_path”

Unde src_path este un director numai pentru citire. AFAIK, pentru a copia, sursa nu trebuie să fie modificabilă în timp ce doar ținta trebuie să fie scrisă (...duh!).

Dar rsync îmi dă această eroare.

rsync: recv_generator: mkdir $target_path/sub_dir failed: sistem de fișiere doar pentru citire (30)
*** Omiterea oricărui conținut din acest director eșuat ***

Dacă copiez folosind rsync de la a inscriptibil sursa nu primesc aceasta eroare, Dacă copiez folosind cp de la a numai pentru citire sursa nu primesc aceasta eroare.

TLDR; Vreau să folosesc rsync pentru a copia numai pentru citire sursă.

Editare: Nu-mi cereți să obțin acces de scriere la folderul sursă, acest lucru nu este posibil (adică nu este deținut de mine), în afară de aceasta, nu este în sfera acestei întrebări.

Editare(2): Pentru a reproduce,

  1. Accesați acest folder de unitate legătură
  2. Adăugați o comandă rapidă pe unitate
  3. Acum să Google Colab și încercați să copiați folderul folosind rsync
  4. Veți eșua folosind rsync, acum încercați să copiați folosind cp și veți avea succes.

Actualizare: Dacă src_path este doar pentru citire fişier, rsync funcționează. dar dacă este o pliant nu merge. (cp și gudron funcționează în toate condițiile)

P.S.Nu vreau să folosesc cp, vreau să folosesc rsync (deci vă rog să nu-mi sugerați să folosesc ceva mai puțin puternic decât rsync).

sudodus avatar
drapel jp
Ai încercat cu permisiuni ridicate, `sudo rsync ...`?
Cyber Avater avatar
drapel in
Nu contează, nu voi avea permisiunea de scriere pentru sursă pentru că fișierele nu sunt deținute de mine, este un folder google drive la care am doar acces de vizualizare.
sudodus avatar
drapel jp
În loc să scrieți fișiere, puteți încerca să creați un tarball. Este posibil să aveți nevoie de permisiuni ridicate (prefixul cu `sudo`) pentru a păstra proprietatea și permisiunile, `tar -cvzf file.tar.gz "$src_path"` ; Citiți mai multe despre tar în `man tar` sau găsiți un tutorial pe internet.
Cyber Avater avatar
drapel in
cp (cp -r -L) -> funcționează tar (tar -cvzf file.tar.gz "$src_path") -> funcționează rsync (rsync -avP "$src_path" "$target_path") -> nu funcționează (va funcționa doar dacă am acces de scriere pentru src_path) Am nevoie de rsync (am declarat deja că îl pot copia folosind cp (acum și tar, testat)), dar vreau rsync
sudodus avatar
drapel jp
O alternativă este să dezactivați opțiunea de arhivare `-a` și să lăsați rsync să scrie cu proprietatea/permisiunile implicite ale directorului țintă, (de exemplu, înlocuiți `-a` cu `-r`). Apropo, ce sistem de fișiere este (unde se află directorul țintă)? Un sistem de fișiere Linux (de exemplu, `ext4`) sau poate un sistem de fișiere Windows sau MacOS?
Cyber Avater avatar
drapel in
rsync -rl „$src_path” „$target_path” de asemenea nu funcționează. sistem de fișiere linux (de la google colab)
sudodus avatar
drapel jp
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/130076/discussion-between-sudodus-and-cyber-avater).
vanadium avatar
drapel cn
Este important aici să oferiți informații specifice despre natura sistemului de fișiere sursă și țintă și versiunea rsync. Nu pot reproduce această problemă cu versiunea 3.2.3 a protocolului rsync, versiunea 31 pe Ubuntu 21.04, copierea de la și către o partiție ext4.
Cyber Avater avatar
drapel in
Am adăugat pași de reproducere.
Will avatar
drapel id
S-ar putea să fi înțeles complet greșit, dar mesajul de eroare îmi sugerează că rsync eșuează, deoarece nu poate crea un director în țintă, deoarece este doar pentru citire. Sunt sigur că ai dreptate - rsync cu aceste opțiuni nu ar trebui să aibă nevoie de citire/scriere sursă. Acest lucru ar putea fi prea simplu, dar ați verificat că calea absolută către țintă este corectă, adică nu utilizați o cale relativă și, prin urmare, încercați să creați un director în directorul sursă (numai citire)?
Cyber Avater avatar
drapel in
Folosesc Calea Absolută. Puteți urma pașii de reproducere și puteți verifica dacă doriți.
Puncte:0
drapel in

Se pare că versiunea oferită de google collab este 3.1.2 (care are erori), în timp ce cea mai recentă versiune este 3.2.3 (care are problema remediată).

P.S. !apt update && apt upgrade -y nu face upgrade rsync la 3.2.3. Aveam nevoie să descarc și să instalez manual de la Aici (Da, a trebuit să descarc și să actualizez și dependențele manual).

Mulțumesc tuturor pentru că ați încercat să mă ajutați. (Mai ales @vanadium).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.