Puncte:2

Folosind caractere metalice în „surse” pentru comanda `rsync`

drapel cn

Încerc să fac backup pentru unele fișiere pe o altă unitate folosind rsync.

Ca caz de testare, încerc următoarea comandă:

rsync -Rav --delete --stats /home/my_user/bin* „$dest”

Această comandă va copia fișierele și directoarele (cu conținutul lor) prezente în my $HOME director și având nume ca ~/bin, ~/binb, ~/bin1, ~/bin2, etc până la destinație.

Cu toate acestea, când șterg oricare dintre fișierele sau directoarele numite ~/bin1 sau ~/bin2 de exemplu, acestea nu sunt șterse nici în destinație. Singurul lucru care funcționează este atunci când există un fișier într-un director, spunem ~/bin2/file1 și acest fișier este șters, apoi acest fișier este șters și în destinație (dar nu în cazul în care directorul ~/bin2/ este eliminat cu totul).

Evident, această problemă este creată de extinderea shell-ului /home/my_user/bin* la toate numele de fișiere și directoare începând cu cos in al meu $HOME directorul la momentul în care rsync comanda este executată. Deci, am încercat să citez sursa ca „/home/my_user/bin*”, dar în acest caz primesc eroarea:

rsync: [sender] link_stat „/home/my_user/bin*” a eșuat: nu există un astfel de fișier sau director (2)

Ce opțiuni sunt necesare, deci, pot folosi wildcard-uri pentru sursă(e) și voi avea replica exactă a fișierului sursă și a structurii directorului, tot în destinație?

Notă: rsync versiunea 3.2.3 protocol versiunea 31

Artur Meinild avatar
drapel vn
Ați încercat `--delete-after` în loc de doar `--delete`?
FedKad avatar
drapel cn
@ArturMeinild Rezultatul final nu se schimbă.
pLumo avatar
drapel in
Cred că ar trebui să utilizați o structură diferită în care aveți totul într-un singur părinte, `~/bin/1` `~/bin/2`...
Artur Meinild avatar
drapel vn
Trebuie să luați în considerare sfaturile pLumo, cu excepția cazului în care doriți să găsiți o modalitate de a obține lista de director de pe gazda destinație pentru a o include ca surse suplimentare în comandă.
Puncte:5
drapel in

Poți să folosești --include / --exclude ca:

rsync -Rav --delete \
  --include="/home/my_user/bin*" \
  --exclude="/home/my_user/*" \
/home/my_user/ „$dest”

Dar cred că ar fi mai ușor să aveți o structură diferită în care să puteți sincroniza doar un director părinte.

FedKad avatar
drapel cn
Mulțumiri. În cazul meu, opțiunea `--include` ar trebui să fie așa: `--include="/home/my_user/bin*"` (fără bară oblică finală).
pLumo avatar
drapel in
ah da, pentru că vrei și fișiere care încep cu `bin`, reparate

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.