Puncte:1

rsync refuză să excludă directorul

drapel mx

Încerc să fac o copie de rezervă a sistemului de operare cu rsync și l-am pus în crontab. care în sine funcționează grozav, dar din anumite motive refuză să ia în considerare /exportul în timp ce se uită la exclude...

0 2 * * 0 rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*"," /mnt/*","/media/*","/lost+found","/export/*"} /media/backup-disk/server-backup/ >/dev/null 2>&1

Totuși, exclude toate celelalte foldere din backup.

Motivul general pentru care vreau să exclud și acest lucru /export/* se datorează faptului că acest disc de rezervă este, de asemenea, montat ca bind la /export datorită unei partajări nfs a discului către un server la distanță.

Datorită faptului că include /export/* Continui să ajung cu discul plin din cauza unei bucle în rsync-ul meu, deoarece începe să facă o copie de rezervă a discului în sine (/export/backup-disk/ -> /media/backup-disk/server-backup)

montarea discului meu /media/backup de export este după cum urmează /etc/fstab:

/media/backup-disk /export/backup-disk nicio legătură 0 0 

Deci întrebarea mea generală este, de ce este inclusă /export/* în timp ce se află în opțiunea de excludere a rsync și cum repar acest lucru?

Editați | ×:

rezultatul unei rulări uscate cu --stats --progress (fără a redirecționa stout en stin către /dev/null):

sudo rsync -aAXv --stats --progress / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*" ,"/mnt/*","/media/*","/lost+found","/export/*"} /media/backup-disk/test/ > /media/backup-disk/test.txt 

cat /media/backup-disk/test.txt | grep -A1 export/        
export/
Acasă/
--
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__init__.py
          9.060 100% 38,98 kB/s 0:00:00 (xfr#17141, ir-chk=1174/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/day.py
         12.609 100% 54,24 kB/s 0:00:00 (xfr#17142, ir-chk=1173/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/export_custom_job.py
         12.034 100% 51,77 kB/s 0:00:00 (xfr#17143, ir-chk=1172/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/job.py
          8.970 100% 38,59 kB/s 0:00:00 (xfr#17144, ir-chk=1171/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__pycache__/
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__pycache__/__init__.cpython-38.pyc
          8.809 100% 37,90 kB/s 0:00:00 (xfr#17145, ir-chk=1169/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__pycache__/day.cpython-38.pyc
         12.206 100% 52,28 kB/s 0:00:00 (xfr#17146, ir-chk=1168/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__pycache__/export_custom_job.cpython-38.pyc
         11.859 100% 50,79 kB/s 0:00:00 (xfr#17147, ir-chk=1167/22834)
home/user/.local/lib/python3.8/site-packages/twilio/rest/bulkexports/v1/export/__pycache__/job.cpython-38.pyc
          9.302 100% 39,84 kB/s 0:00:00 (xfr#17148, ir-chk=1166/22834)
...

Acest lucru indică faptul că exclude exportul, dar tot cumva îmi găsesc că discul este plin de fiecare dată când se execută cron-ul, deoarece încă copiază lucruri în /export în directorul meu de backup pe server...

un alt lucru pe care am uitat să-l menționez aici este că inițial am crezut că ar putea fi o problemă de uitare /export/* la început, l-am adăugat mai târziu la cron, dar am uitat să repornesc (deci nu există o repornire programată cron), dar chiar și după o repornire, reușește totuși să copieze /export/* cu cronul. De asemenea, pare puțin stupid faptul că ar fi nevoie de repornire, deoarece ar trebui să poată gestiona editările la cron de fiecare dată când trebuie să ruleze comanda din cron, dar voiam să fiu sigur că nu s-a rezolvat după o repornire ...

bac0n avatar
drapel cn
Ce se întâmplă dacă schimbați locul cu lost+found
terdon avatar
drapel cn
Funcționează așa cum era de așteptat dacă inversați logica și includeți doar lucrurile pe care le doriți, în loc să le excludeți pe celelalte? `rsync -aAXv /{boot,bin,etc.home,net,opt,root,srv,var}`? De asemenea, puteți să vă [editați] întrebarea și să includeți rezultatul rsync care arată căile în `/export` pe care le preia? În funcție de modul în care apar, asta ne-ar putea oferi câteva informații. În cele din urmă, ați încercat `rsync -aAXv / "/export/*"`? Funcționează așa cum era de așteptat dacă excludeți doar „export” și nimic altceva?
drapel ar
De asemenea, redirecționați atât stdout, cât și stderr către /dev/null. Încercați mai întâi fără acea redirecționare și vedeți ce are de spus rsync?
drapel ar
De asemenea, încercați să eliminați virgulele.
FGOD avatar
drapel mx
sugestii grozave, lasă-i să încerce unele dintre aceste lucruri pe uscat
FGOD avatar
drapel mx
Reîncerc acum cu --stats --progress pentru a avea o ieșire mai bună a ceea ce vede rsync și voi edita postarea cu ea
FGOD avatar
drapel mx
ar putea fi acesta chestia /dev/null?
drapel hr
Lucrările cron AFAIK sunt executate implicit în `/bin/sh` - care nu acceptă extinderea bretelor. Sunt surprins că * oricare* dintre exclude funcționează - cu excepția cazului în care ați adăugat un `SHELL=/bin/bash` explicit sau similar înainte de specificația jobului?
FGOD avatar
drapel mx
@steeldriver deci ar fi mai bine să faci un fișier cu o listă a excluderilor și să folosești fișierul în excluderi?
FGOD avatar
drapel mx
@sudodus bine, dezactivarea monturii de legare o va face să funcționeze în mod normal, deoarece oricum nu va fi nimic de copiat în /export/... Funcționează așa cum ar trebui făcând-o manual în terminal, așa cum puteți vedea în editarea pe care am făcut-o. Pot încerca să fac o listă cu ceea ce trebuie copiat, dar nu ar fi și asta o listă mare, deoarece nu aș putea face / ca sursă și ar trebui să dau o listă cu toate directoarele pentru trebuie copiat?
drapel hr
@FGOD, în opinia mea, este în regulă să utilizați expansiunea brace - cu condiția să vă asigurați că comanda este rulată într-un shell care o acceptă (ksh,zsh,bash,...) fie setând `SHELL` pentru cronjob, fie mutând comanda la un script shell separat cu shebang-ul corespunzător și rulând-o de la cron
FGOD avatar
drapel mx
@steeldriver Am încercat să rulez rsync în sh și într-adevăr include exportul. Totuși, cred că este ciudat că exclude restul. Dar va testa mai târziu astăzi cu setarea shell-ului în cron și rularea lui.
FGOD avatar
drapel mx
@steeldriver chiar și atunci când adaug SHELL=/bin/zsh, tot se remarcă pe /export. Am făcut un script din el acum cu #!/bin/zsh la început și am pus acel script în cron și se pare că funcționează bine acum. Mulțumesc pentru sfatul despre modul în care cron rulează!
Puncte:2
drapel mx

Se pare că problema a fost într-adevăr așa cum a menționat @steeldriver, modul în care sunt rulate crons (în sh în loc de bash sau zsh sau orice alt shell). Asta a făcut-o incompatibilă cu extinderea bretelor din lista de excluderi.

Sfatul privind adăugarea shell-ului la cron nu a rezolvat această problemă, dar introducerea comenzii într-un script și rularea scriptului a remediat problema.

Deci acum am un script care are următoarele:

#!/bin/zsh

rsync -aAXv --stats --progress / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*", „/mnt/*","/media/*","/lost+found","/export/*"} /media/backup-disk/test > /dev/null 2>&1

și cronul după cum urmează pentru a-l face să ruleze în fiecare duminică noaptea la 2:00:

0 2 * * 0 /opt/scripts/rsync-os-backup
sudodus avatar
drapel jp
Mulțumesc că ai împărtășit soluția ta :-)

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.