Cum de a copia permisiunile acl atunci când se deplasează de date de la server la server - sistem

A existat o nevoie de a transfera fișiere de pe un mingi de rețea pe Linux pe un server diferit. Ambele servere sunt incluse în domeniul AD. S-ar părea o sarcină simplă, dar să ia o copie. drepturile de acces ar trebui să fie păstrate, pentru că cele două mașini într-unul și același domeniu. Dar nu a fost atât de ușor.

Pentru mine a fost o mare surpriză, că prin simpla copiere de permisiuni ferestre de mașini nu sunt stocate. Ambele servere au un sistem de fișiere de sprijin ACL. Setați apoi mâna dreaptă ar putea fi. Asta este tot funcționalitatea a fost, dar drepturile de acces sunt conservate. Observ imediat că serverul de la care informația a fost ridica QNAP, copiat pe CentOS 7.

A doua etapă a fost o încercare de a monta receptorul direct la server prin mingea CIFS sistem de fișiere. Dar, la aceleași permisiuni de ACL nu sunt copiate, de asemenea. Am început să caute informații cu privire la acest subiect pe Internet și a constatat că, într-adevăr, prin intermediul CIFS drepturi nu sunt transferate acl. Există anumite instrumente pentru a verifica și atribui drepturi: getcifsacl și setcifsacl. Mână-ales acest lucru nu este dorit.

Cum de a copia permisiunile acl atunci când se deplasează de date de la server la server - sistem

Am ferm gândit cum să fie. N-am avut timp să se ocupe în detaliu, a fost necesar să vină repede cu ceva. Poate că am făcut o greșeală pe undeva sau privit atent, iar acest proces poate fi efectuate rapid. Aș fi fericit să sfaturi cu privire la acest subiect. Anterior, nu am avut de a face cu mutarea mingea cu acces samba conservare. Și datele din acțiunile Windows sunt transferate fără probleme cu păstrarea drepturilor de acces. Nici nu am știut că pot apărea astfel de probleme la transferul informațiilor de la mingea pe samba.

Ca urmare, transferul de date menținând în același timp permisiunile ACL am mers, după cum urmează. Pe primul server, în cazul în care datele au fost efectuate comanda:

Echipa a adunat permisiuni recursiv toate directoarele și fișierele și înregistrate într-un fișier text. În cazul în care mingea este foarte mare, fișierul este de dimensiuni impresionante. Sunt pe minge cu 80.000 de dosare și 500.000 de fișiere, fișierul a avut loc 240MB. Apoi, ar fi frumos să fac pe comanda receptor server:

Și pentru a termina acest lucru. Dar lucrurile nu sunt atât de simple. În primul rând, modul în acest format au fost specificate în fișierul rezultat:

Cu această comandă, am înlocuit cota / MD1_DATA gheață / acțiuni și a primit acum calea corectă / acțiunile / soft / Player.

Dar asta nu a fost tot. Niciun utilizator alt domeniu întâlnit în permisiunile de fișiere și local la serverul de la care să se miște. A fost necesar pentru a elimina toate dintre ele prea, în caz contrar, comanda nu este executat, a zburat cu o eroare. În cazul meu a fost utilizatorilor: admin, clienților, toată lumea. Am din nou cu SED tocmai a șters toate liniile, în cazul în care au întâlnit aceste fraze. Am făcut-o doar în cazul în pas cu pas la verificarea în fiecare etapă. Sa dovedit ca aceasta:

Ar putea fi toate pe aceeași echipă de a face, dar eu nu sunt foarte bun la construirea expresii regulate, nu am avut timp să înțeleagă, au făcut acest lucru. Utilitate este surprinzător de rapidă. Doar 2-3 secunde, și linii au fost eliminate din dosar.

După aceea, receptorul de server, executați această comandă:

Și toate drepturile de acces domeniu au fost stabilite cu succes. Utilitatea a lucrat destul de mult, 15 minute.

Sper ca experienta mea va părea cuiva util. Mai bine, dacă aș fi avut cineva spune cum aceeași operație pentru a face mai ușor și mai rapid. Din anumite motive, eu sunt convins că există o cale mai ușoară. Poate că problemele au fost cauzate de faptul că unul dintre serverele QNAP a fost. Ideea este Linux, au acces ssh, în cadrul samba. Dar totul nu este aranjat în mod specific știu, poate ceva se va schimba.

Salutări!
Ultima dată când am avut o sarcina de a migra de date de la un server la altul, păstrând în același timp drepturile, îmi place te întărîtat scripturi getfacl și setfacl. Și, la fel cum ați știut că trebuia să existe o cale mai bună.
Azi am adus aminte de rsync. Am înființat între serverul de acces cheie și copiat în directorul de server vechi la cel nou ca aceasta:
# / Usr / bin / rsync -e 'ssh -l rădăcină /root/.ssh/id_rsa -i' -progress -lzuogthvrpA -compress-level = 9--delete după root @ oldserver: /share/Profiles/user.V2 / share / Profile /

De fapt, pentru păstrarea drepturilor, este un element cheie -A ACL

Dar, pe diferite servere uid locale vor fi diferite în același utilizator de domeniu, în cazul în care setările winbind diferă. În acest caz, această opțiune nu este o plimbare.

articole similare