Cuprins
Sunt descrise instrumente și sfaturi pentru gestionarea datelor binare și textuale în sistemul Debian.
|
Avertisment |
|---|---|
|
Accesul necoordonat la scriere la dispozitive și fișiere accesate activ din
mai multe procese nu trebuie efectuat pentru a evita condiția de concurență. Pentru a evita acest
lucru, se pot utiliza mecanisme de blocare a
fișierelor folosind |
Securitatea datelor și partajarea controlată a acestora au mai multe aspecte.
Crearea arhivei de date
Accesul la stocare de la distanță
Duplicarea
Urmărirea istoricului modificărilor
Facilitarea schimbului de date
Prevenirea accesului neautorizat la fișiere
Detectarea modificării neautorizate a fișierelor
Acestea pot fi realizate prin utilizarea unei combinații de instrumente.
Instrumente de arhivare și comprimare
Instrumente de copiere și sincronizare
Sisteme de fișiere în rețea
Suporturi de stocare amovibile
Shell-ul securizat
Sistemul de autentificare
Instrumente pentru sistemul de control al versiunilor
Instrumente de criptare criptografică și sume de control
Iată un rezumat al instrumentelor de arhivare și comprimare disponibile în sistemul Debian.
Tabel 10.1. Lista instrumentelor de arhivare și comprimare
| pachet | popcon(popularitate) | dimensiune | extensie | comandă | comentariu |
|---|---|---|---|---|---|
tar
|
V:895, I:1000 | 3085 | .tar |
tar(1) |
arhivatorul standard (standardul de facto) |
cpio
|
V:422, I:999 | 1201 | .cpio |
cpio(1) |
arhivator în stil Unix System V, se utilizează cu find(1) |
binutils
|
V:191, I:640 | 1119 | .ar |
ar(1) |
arhivator pentru crearea de biblioteci statice |
fastjar
|
V:1, I:11 | 183 | .jar |
fastjar(1) |
arhivator pentru Java (precum zip) |
pax
|
V:6, I:10 | 167 | .pax |
pax(1) |
nou arhivator standard POSIX, compromis între tar și
cpio |
gzip
|
V:891, I:1000 | 256 | .gz |
gzip(1), zcat(1), … |
instrumentul de comprimare GNU LZ77 (standardul de facto) |
bzip2
|
V:170, I:972 | 114 | .bz2 |
bzip2(1), bzcat(1), … |
instrumentul de comprimare
prin sortare de blocuri Burrows-Wheeler cu un raport de comprimare
mai mare decât gzip(1) (mai lent decât
gzip cu sintaxă similară) |
lzma
|
V:1, I:11 | 349 | .lzma |
lzma(1) |
instrument de comprimare LZMA cu o raport de
comprimare mai mare decât gzip(1) (depreciat) |
xz-utils
|
V:311, I:981 | 1475 | .xz |
xz(1), xzdec(1), … |
instrument de comprimare XZ cu un raport de
comprimare mai mare decât bzip2(1) (mai lent decât
gzip, dar mai rapid decât bzip2;
înlocuitor pentru instrumentul de comprimare LZMA) |
zstd
|
V:298, I:781 | 2313 | .zstd |
zstd(1), zstdcat(1), … |
instrument de comprimare rapidă fără pierderi Zstandard |
p7zip
|
V:8, I:233 | 8 | .7z |
7zr(1), p7zip(1) |
arhivator de fișiere 7-Zip cu raport de comprimare ridicat (comprimare LZMA) |
p7zip-full
|
V:27, I:256 | 12 | .7z |
7z(1), 7za(1) |
arhivator de fișiere 7-Zip cu raport de comprimare ridicat (comprimare LZMA și altele) |
lzop
|
V:13, I:138 | 164 | .lzo |
lzop(1) |
instrument de comprimare LZO cu viteză de
comprimare și decomprimare mai mare decât gzip(1) (raport
de comprimare mai mic decât gzip cu sintaxă similară) |
zip
|
V:51, I:369 | 627 | .zip |
zip(1) |
InfoZIP: instrument de arhivare și comprimare DOS |
unzip
|
V:116, I:760 | 387 | .zip |
unzip(1) |
InfoZIP: instrument pentru dezarhivare și decomprimare DOS |
|
Avertisment |
|---|---|
|
Nu definiți variabila „ |
Arhiva tar comprimată cu tar(1) utilizează extensia de
fișier „.tgz” sau „.tar.gz”.
Arhiva tar(1) comprimată cu xz utilizează extensia de
fișier „.txz” sau „.tar.xz”.
Metoda populară de comprimare în instrumentele FOSS, cum ar fi tar(1), a evoluat
după cum urmează: gzip → bzip2 →
xz
cp(1), scp(1) și
tar(1) pot avea unele limitări pentru fișiere speciale.
cpio(1) este cel mai versatil.
cpio(1) este conceput pentru a fi utilizat împreună cu
find(1) și alte comenzi și este potrivit pentru crearea
de scripturi de copiere de rezervă, deoarece partea de selectare a
fișierelor din script poate fi testată independent.
Structura internă a fișierelor de date Libreoffice este
„.jar”, care poate fi deschisă și cu ajutorul comenzii
unzip.
Instrumentul de arhivare multiplatformă de facto este
zip. Utilizați-l ca «zip -rX» pentru
a obține compatibilitatea maximă. Utilizați și opțiunea
„-s”, dacă dimensiunea maximă a fișierului este
importantă.
Iată un rezumat al instrumentelor simple de copiere și copie de rezervă disponibile în sistemul Debian.
Tabel 10.2. Lista instrumentelor de copiere și sincronizare
| pachet | popcon(popularitate) | dimensiune | instrument | funcție |
|---|---|---|---|---|
coreutils
|
V:897, I:1000 | 17994 | GNU cp | copierea locală a fișierelor și directoarelor („-a” pentru recursiv) |
openssh-client
|
V:904, I:997 | 5133 | scp | copierea de la distanță a fișierelor și directoarelor (client,
„-r” pentru recursiv) |
openssh-server
|
V:751, I:807 | 3502 | sshd | copierea de la distanță a fișierelor și directoarelor (server la distanță) |
rsync
|
V:202, I:541 | 814 | sincronizare și copie de rezervă la distanță într-un singur sens | |
unison
|
V:3, I:13 | 14 | sincronizare și copie de rezervă la distanță bidirecțională |
Copierea fișierelor cu rsync(8) oferă funcții mai
avansate decât alte programe.
algoritm de transfer delta care trimite numai diferențele dintre fișierele sursă și fișierele existente în destinație
algoritm de verificare rapidă (implicit) care caută fișiere care au suferit modificări în ceea ce privește dimensiunea sau data ultimei modificări
opțiunile „--exclude” și
„--exclude-from” similare cu tar(1)
sintaxa „o bară oblică la sfârșitul directorului sursă” care evită crearea unui nivel suplimentar de director la destinație.
|
Indicație |
|---|---|
|
Instrumentele sistemului de control al versiunilor (VCS) din Tabel 10.14, „Lista altor instrumente pentru sistemul de control al versiunilor” pot funcționa ca instrumente de copiere și sincronizare în mai multe direcții. |
Iată câteva modalități de arhivare și dezarhivare a întregului conținut al
directorului „./source” folosind diferite instrumente.
GNU tar(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Alternativ, prin următoarele.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -T -
cpio(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Iată câteva modalități de a copia întregul conținut al directorului
„./source” folosind diferite instrumente.
Copie locală: directorul „./source” → directorul
„/dest”
Copie la distanță: directorul „./source” de pe gazda
locală → directorul „/dest” de pe gazda
„user@host.dom”
rsync(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Alternativ, puteți utiliza sintaxa „o bară oblică la sfârșitul directorului sursă”.
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Alternativ, prin următoarele.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp(1) și openSSH scp(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
Puteți înlocui „.” cu „foo” pentru
toate exemplele care conțin „.” pentru a copia fișiere
din directorul „./source/foo” în directorul
„/dest/foo”.
Puteți înlocui „.” cu ruta absolută
„/ruta/la/source/foo” pentru toate exemplele care conțin
„.” pentru a elimina „cd ./source;”.
Acestea copiază fișierele în locații diferite, în funcție de instrumentele
utilizate, după cum urmează.
"/dest/foo": rsync(8), GNU
cp(1), și scp(1)
"/dest/ruta/la/source/foo": GNU
tar(1), și cpio(1)
|
Indicație |
|---|---|
|
|
find(1) este utilizat pentru a selecta fișiere pentru
comenzile de arhivare și copiere (a se vedea Secțiune 10.1.3, „Expresii idiomatice pentru arhivă” și Secțiune 10.1.4, „Expresii idiomatice pentru copiere”) sau pentru xargs (1) (a
se vedea Secțiune 9.4.9, „Repetarea unei comenzi care parcurge fișierele”).
Aceasta poate fi îmbunătățită prin utilizarea argumentelor sale de comandă.
Sintaxa de bază a find(1) poate fi rezumată după cum
urmează.
Argumentele sale condiționale sunt evaluate de la stânga la dreapta.
Această evaluare se încheie odată ce rezultatul său este determinat.
„SAU logic” (specificat prin
„-o” între condiții) are prioritate mai mică decât
„ȘI logic” (specificat prin
„-a” sau nimic între condiții).
„NU logic” (specificat prin
„!” înaintea unei condiții) are prioritate mai mare decât
„ȘI logic”.
„-prune” returnează întotdeauna valoarea logică ADEVĂRAT și, dacă este vorba de un director,
căutarea fișierului este oprită dincolo de acest punct.
„-name” potrivește cu baza numelui fișierului cu
expresiile regulate shell (a se vedea Secțiune 1.5.6, „Facilitatea glob a shell-ului”), dar se
potrivește de asemenea cu „.” inițial cu metacaractere
precum „*” și „?”; (funcție nouă
POSIX).
„-regex” potrivește cu ruta completă în stilul emacs
BRE (a se vedea Secțiune 1.6.2, „Expresii regulate”) ca valoare implicită.
„-size” potrivește fișierul pe baza dimensiunii
fișierului (valoare precedată de „+” pentru mai mare,
precedată de „-” pentru mai mică)
„-newer” potrivește cu fișierul mai nou decât cel
specificat în argumentul său.
„-print0” returnează întotdeauna ADEVĂRAT logic și afișează numele complet al
fișierului (terminat cu caracterul
null) la ieșirea standard.
find(1) este adesea utilizat într-un stil idiomatic, după
cum urmează.
# find /path/to \
-xdev -regextype posix-extended \
-type f -regex ".*\.cpio|.*~" -prune -o \
-type d -regex ".*/\.git" -prune -o \
-type f -size +99M -prune -o \
-type f -newer /path/to/timestamp -print0
Aceasta înseamnă efectuarea următoarelor acțiuni.
Caută toate fișierele ce încep cu „/path/to”
Limitează global căutarea în sistemul de fișiere inițial și utilizează în schimb ERE (a se vedea Secțiune 1.6.2, „Expresii regulate”).
Exclude fișierele care corespund expresiei regulate
„.*\.cpio” sau „.*~” din căutare prin
oprirea procesării.
Exclude din căutare directoarele care corespund expresiei regulate
„.*/\.git” prin oprirea procesării.
Exclude fișierele mai mari de 99 megaocteți (unități de 1048576 octeți) din căutare prin oprirea procesării.
Afişează numele fişierelor care îndeplinesc condiţiile de căutare de mai sus
şi sunt mai recente decât „/path/to/timestamp”.
Vă rugăm să rețineți utilizarea idiomatică a „-prune -o”
pentru a exclude fișierele din exemplul de mai sus.
|
Notă |
|---|---|
|
Pentru sistemele non-Debian de tip Unix,
este posibil ca unele opțiuni să nu fie acceptate de
|
Atunci când alegeți suporturi de stocare a datelor pe calculator pentru arhivarea datelor importante, trebuie să fiți atenți la limitările acestora. Pentru copia de rezervă a datelor personale de mici dimensiuni, eu folosesc CD-R și DVD-R de la companii de renume și le păstrez într-un mediu răcoros, umbrit, uscat și curat; (suporturile de arhivare pe bandă par să fie populare pentru uz profesional.)
|
Notă |
|---|---|
|
Un seif rezistent la foc este destinat documentelor imprimate pe hârtie. Majoritatea suporturilor de stocare a datelor informatice au o toleranță la temperatură mai mică decât hârtia. De obicei, mă bazez pe mai multe copii criptate securizate, stocate în mai multe locații sigure. |
Durata de viață optimistă a suporturilor de arhivare observată pe internet (în principal din informațiile furnizate de producători).
mai mult de 100 de ani: hârtie fără acid cu cerneală
100 de ani: stocare optică (CD/DVD, CD/DVD-R)
30 de ani: stocare magnetică (bandă, dischetă)
20 de ani: stocare optică cu schimbare de stare (inscripționare-ștergere-reinscripționare -- CD-RW)
Acestea nu iau în calcul defecțiunile mecanice cauzate de manipulare, etc.
Numărul de cicluri de scriere optimist al mediilor de arhivare observat pe internet (în principal din informațiile furnizate de producători).
mai mult de 250.000 de cicluri: disc dur
mai mult de 10.000 de cicluri: memorie flash
1.000 de cicluri: CD/DVD-RW
1 cicluri: CD/DVD-R, hârtie
|
Atenție |
|---|---|
|
Cifrele referitoare la durata de stocare și ciclul de scriere prezentate aici nu trebuie utilizate pentru luarea de decizii privind stocarea datelor critice. Vă rugăm să consultați informațiile specifice despre produs furnizate de producător. |
|
Indicație |
|---|---|
|
Deoarece CD-urile/DVD-urile-R și hârtia au un singur ciclu de scriere, acestea previn în mod inerent pierderea accidentală a datelor prin suprascriere. Acesta este un avantaj! |
|
Indicație |
|---|---|
|
Dacă aveți nevoie de copii de rezervă rapide și frecvente pentru cantități mari de date, un disc dur pe un server la distanță conectat printr-o rețea rapidă poate fi singura opțiune realistă. |
Dispozitivele de stocare amovibile pot fi oricare dintre următoarele.
Aparat de fotografiat digital
Aparat de redare muzică digitală
Acestea pot fi conectate prin oricare dintre următoarele metode.
Mediile grafice de birou moderne, precum GNOME și KDE, pot monta automat
aceste dispozitive amovibile fără o intrare corespunzătoare în
„/etc/fstab”.
|
Indicație |
|---|---|
|
Dispozitivele montate automat pot avea opțiunea de montare
„ |
|
Indicație |
|---|---|
|
Montarea automată în mediul grafic de birou modern are loc numai atunci când
aceste dispozitive media amovibile nu sunt listate în
„ |
Punctul de montare în mediul grafic de birou modern este ales ca
„/media/nume-utilizator/etichetă-dispozitiv”,
care poate fi personalizat după cum urmează.
mlabel(1) pentru sistemul de fișiere FAT
genisoimage(1) cu opțiunea „-V” pentru
sistemul de fișiere ISO9660
tune2fs(1) cu opțiunea „-L” pentru
sistemul de fișiere ext2/ext3/ext4
|
Indicație |
|---|---|
|
Este posibil să fie necesar să se specifice alegerea codificării ca opțiune de montare (a se vedea Secțiune 8.1.3, „Codificarea numelor de fișiere”). |
|
Indicație |
|---|---|
|
Utilizarea meniului interfeței grafice pentru a dezactiva un sistem de
fișiere poate elimina nodul dispozitivului generat dinamic, cum ar fi
„ |
Când partajați date cu alte sisteme prin intermediul unui dispozitiv de stocare amovibil, trebuie să îl formatați cu un sistem de fișiere comun acceptat de ambele sisteme. Iată o listă cu opțiunile de sisteme de fișiere.
|
Notă |
|---|---|
|
Declarațiile referitoare la discul dur (HDD) se
aplică și altor dispozitive de stocare, cum ar fi SSD / unitate flash
USB / card de memorie / ... .
Înlocuiți numele dispozitivelor din exemple, cum ar fi
|
Tabel 10.3. Lista opțiunilor de sistem de fișiere pentru dispozitive de stocare amovibile cu scenarii tipice de utilizare
| numele sistemului de fișiere | scenariul de utilizare tipic |
|---|---|
| FAT12 | partajarea datelor între platforme pe dischetă (<32MiB) |
| FAT16 | partajarea datelor între platforme pe un dispozitiv precum un disc dur mic (<2Gio) |
| FAT32 | partajarea datelor între platforme pe un dispozitiv precum un disc dur de mare capacitate (<8Tio, compatibil cu versiuni mai noi decât MS Windows95 OSR2) |
| exFAT | partajarea datelor între platforme pe un dispozitiv precum un disc dur de mare capacitate (<512 TiB, compatibil cu WindowsXP, Mac OS X Snow Leopard 10.6.5 și cu nucleul Linux începând cu versiunea 5.4) |
| NTFS | partajarea datelor între platforme pe un dispozitiv precum un disc dur de mare capacitate (cu suport nativ în MS Windows NT și versiunile ulterioare, și cu suport în NTFS-3G prin intermediul FUSE în Linux) |
| ISO9660 | partajarea între platforme a datelor statice pe CD-R și DVD+/-R |
| UDF | scrierea incrementală a datelor pe CD-R și DVD+/-R (nou) |
| MINIX | stocare eficientă a datelor fișierelor Unix pe dischetă |
| ext2 | partajarea datelor de pe un dispozitiv precum discul dur cu sisteme Linux mai vechi |
| ext3 | partajarea datelor de pe un dispozitiv precum discul dur cu sisteme Linux mai vechi |
| ext4 | partajarea datelor pe un dispozitiv precum discul dur cu sistemele Linux actuale |
| btrfs | partajarea datelor pe dispozitive precum discul dur cu sistemele Linux actuale cu instantanee numai pentru citire |
|
Indicație |
|---|---|
|
Consultați Secțiune 9.9.1, „Criptarea discurilor amovibile cu dm-crypt/LUKS” pentru partajarea datelor între platforme utilizând criptarea la nivel de dispozitiv. |
Sistemul de fișiere FAT este acceptat de aproape toate sistemele de operare moderne și este foarte util pentru schimbul de date prin intermediul unor suporturi de stocare amovibile, precum discurile dure.
Atunci când formatați dispozitive precum discurile dure amovibile pentru partajarea datelor între platforme cu sistemul de fișiere FAT, următoarele opțiuni ar trebui să fie sigure.
Partiționați-le cu fdisk(8), cfdisk(8)
sau parted(8) (consultați Secțiune 9.6.2, „Configurarea partițiilor de disc”) într-o singură partiție primară
și marcați-o după cum urmează.
Tastați „6” pentru FAT16 pentru suporturi media mai mici de 2 Go.
Tastați „c” pentru FAT32 (LBA) pentru suporturi media mai mari.
Formatarea partiției primare cu mkfs.vfat(8) cu
următoarele.
Doar numele dispozitivului, de exemplu „/dev/sda1” pentru
FAT16
Opțiunea explicită și numele dispozitivului, de exemplu „-F 32
/dev/sda1” pentru FAT32
Atunci când utilizați sistemele de fișiere FAT sau ISO9660 pentru partajarea datelor, trebuie să luați în considerare următoarele aspecte de siguranță.
Arhivarea fișierelor într-un fișier arhivă utilizând mai întâi
tar(1) sau cpio(1) pentru a păstra
numele lung al fișierului, legătura simbolică, permisiunea originală a
fișierului Unix și informațiile despre proprietar.
Împărțirea fișierului arhivă în bucăți mai mici de 2 Gio cu comanda
split(1) pentru a-l proteja de limitarea dimensiunii
fișierului.
Criptarea fișierului arhivă pentru a proteja conținutul acestuia împotriva accesului neautorizat.
|
Notă |
|---|---|
|
Pentru sistemele de fișiere FAT, conform specificațiilor, dimensiunea maximă
a fișierului este |
|
Notă |
|---|---|
|
Microsoft însuși nu recomandă utilizarea FAT pentru unități sau partiții de peste 200 Mo. Microsoft subliniază deficiențele sale, cum ar fi utilizarea ineficientă a spațiului pe disc, în „Prezentare generală a sistemelor de fișiere FAT, HPFS și NTFS”. Desigur, în mod normal ar trebui să utilizăm sistemul de fișiere ext4 pentru Linux. |
|
Indicație |
|---|---|
|
Pentru mai multe informații despre sistemele de fișiere și accesarea acestora, citiți „Ghidul sistemelor de fișiere”. |
Când partajați date cu alte sisteme prin rețea, ar trebui să utilizați un serviciu comun. Iată câteva sfaturi.
Tabel 10.4. Lista serviciilor de rețea din care puteți alege, cu scenariul tipic de utilizare
| serviciul de rețea | descrierea scenariului tipic de utilizare |
|---|---|
| SMB/CIFS sistem de fișiere montat în rețea cu Samba | partajarea fișierelor prin „Rețea Microsoft Windows”, consultați
smb.conf(5) și Ghidul oficial Samba 3.x.x HOWTO și
ghidul de referință sau pachetul samba-doc |
| NFS sistem de fișiere montat în rețea cu nucleul Linux | partajarea fișierelor prin „Rețea Unix/Linux”, consultați
exports(5) și Linux
NFS-HOWTO |
| serviciul HTTP | partajarea fișierelor între serverul web/client |
| serviciul HTTPS | partajarea fișierelor între serverul web/client cu Secure Sockets Layer (SSL) criptat sau Transport Layer Security (TLS) |
| serviciul FTP | partajarea fișierelor între serverul/clientul FTP |
Deși aceste sisteme de fișiere montate în rețea și metodele de transfer de fișiere prin rețea sunt destul de convenabile pentru partajarea datelor, acestea pot fi nesigure. Conexiunea lor la rețea trebuie securizată prin următoarele măsuri.
Consultă de asemenea Secțiune 6.5, „Alte servere de aplicații de rețea” și Secțiune 6.6, „Alți clienți de aplicații de rețea”.
Știm cu toții că uneori calculatoarele se defechează sau că erorile umane pot provoca daune sistemului și datelor. Operațiile de copie de rezervă și recuperare sunt o parte esențială a administrării cu succes a sistemului. Toate modurile posibile de funcționare defectuoasă vă pot afecta într-o zi.
|
Indicație |
|---|---|
|
Mențineți sistemul de copiere de rezervă simplu și faceți copii de rezervă ale sistemului în mod frecvent. Este mai important să aveți date de rezervă decât să dispuneți de o metodă de copiere de rezervă performantă din punct de vedere tehnic. |
Există 3 factori cheie care determină politica actuală de copie de rezervă și recuperare.
Să știi ce să copiezi și ce să recuperezi.
Fișiere de date create direct de dvs.: date în „~/”
Fișiere de date create de aplicațiile utilizate de dvs.: date în
„/var/” (cu excepția „/var/cache/”,
„/var/run/” și „/var/tmp/”)
Fișiere de configurare a sistemului: date în „/etc/”
Programe locale: date în „/usr/local/” sau
„/opt/”
Informații privind instalarea sistemului: o notă în format text simplu privind etapele cheie (partiționare, …)
Set de date verificat: confirmat în prealabil prin operații experimentale de recuperare
Sarcina cron ca proces de utilizator: fișiere în directorul
„/var/spool/cron/crontabs” și repornirea
cron(8). Consultați Secțiune 9.4.14, „Programarea regulată a sarcinilor” pentru cron(8) și
crontab(1).
Sarcini programate systemd ca procese utilizator: fișiere în directorul
„~/.config/systemd/user”. Consultați
systemd.timer(5) și
systemd.service(5).
Sarcini de pornire automată ca procese ale utilizatorului: fișiere din
directorul „~/.config/autostart”. Consultați Specificații privind pornirea
automată a aplicațiilor de birou.
Să știi cum să faci copii de rezervă și să recuperezi datele.
Stocarea sigură a datelor: protecție împotriva suprascrierii și a defecțiunilor sistemului
Copiere de rezervă frecventă: copie de rezervă programată
Copie de rezervă redundantă: oglindirea datelor
Proces fără greșeli: copie de rezervă ușoară cu o singură comandă
Evaluarea riscurilor și a costurilor implicate.
Riscul de pierdere a datelor
Datele trebuie să se afle cel puțin pe partiții de disc diferite, de preferință pe discuri și mașini diferite, pentru a rezista la coruperea sistemului de fișiere. Datele importante sunt stocate cel mai bine pe un sistem de fișiere numai pentru citire. [4]
Riscul de încălcare a securității datelor
Date sensibile de identitate, cum ar fi
„/etc/ssh/ssh_host_*_key”,
„~/.gnupg/*”, „~/.ssh/*”,
„~/.local/share/keyrings/*”,
„/etc/passwd”, „/etc/shadow”,
„popularity-contest.conf”,
„/etc/ppp/pap-secrets” și
„/etc/exim4/passwd.client” trebuie să fie copiate ca
fișiere criptate. [5] (A se vedea Secțiune 9.9, „Sfaturi pentru criptarea datelor”.)
Nu încorporați niciodată parola de conectare la sistem sau fraza de decriptare în niciun script, chiar și pe un sistem de încredere; (a se vedea Secțiune 10.3.6, „Inel de chei pentru parole”).
Modul de defectare și posibilitatea apariției acestuia
Hardware-ul (în special HDD-ul) se va defecta
Sistemul de fișiere poate fi corupt, iar datele din acesta pot fi pierdute.
Sistemul de stocare la distanță nu este de încredere din punct de vedere al securității
Protecția prin parolă slabă poate fi compromisă cu ușurință
Sistemul de permisiuni pentru fișiere poate fi compromis
Resurse necesare pentru copie de rezervă: resurse umane, hardware, software, …
Copiere de rezervă automată programată cu sarcină de «cron» (cron job) sau cu sarcină programată de systemd (systemd timer job)
|
Indicație |
|---|---|
|
Puteți recupera datele de configurare debconf cu
„ |
|
Notă |
|---|---|
|
Nu faceți copii de rezervă pentru conținutul pseudo-sistemului de fișiere
găsit în |
|
Notă |
|---|---|
|
Este posibil să doriți să opriți anumiți demoni de aplicații, cum ar fi MTA (consultați Secțiune 6.2.4, „Agentul de transport al poștei electronice („Mail transport agent”: MTA)”), în timp ce faceți copii de rezervă ale datelor. |
Iată o listă selectivă a celor mai importante suite de instrumente de copiere de rezervă disponibile în sistemul Debian.
Tabel 10.5. Lista suitelor de instrumente de copiere de rezervă
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
bacula-common
|
V:6.4, I:7.4 | 2501 | Bacula: copiere de rezervă, recuperare și verificare în rețea - fișiere comune de asistență |
bacula-client
|
V:0.3, I:2.0 | 199 | Bacula: copiere de rezervă, recuperare și verificare în rețea - meta-pachet client |
bacula-console
|
V:0.7, I:2.2 | 112 | Bacula: copiere de rezervă, recuperare și verificare în rețea - consolă text |
bacula-server
|
I:0.66 | 199 | Bacula: copiere de rezervă, recuperare și verificare în rețea - meta-pachet server |
amanda-common
|
V:0.7, I:2.2 | 9851 | Amanda: „Advanced Maryland Automatic Network Disk Archiver” -- Arhivator automat avansat de discuri în rețea Maryland (biblioteci) |
amanda-client
|
V:0.7, I:2.2 | 1099 | Amanda: Arhivator automat avansat de discuri în rețea Maryland (client) |
amanda-server
|
V:0.12, I:0.25 | 1093 | Amanda: Arhivator automat avansat de discuri în rețea Maryland (server) |
backuppc
|
V:1.5, I:1.7 | 3088 | BackupPC X este un sistem performant, la nivel de întreprindere, pentru copierea de rezervă a calculatoarelor (pe disc). |
duplicity
|
V:6, I:51 | 2649 | copie de rezervă incrementală (la distanță) |
deja-dup
|
V:31, I:46 | 5232 | interfață grafică pentru duplicitate |
borgbackup
|
V:13, I:29 | 3478 | de duplicarea copiilor de rezervă (de la distanță) |
borgmatic
|
V:3.2, I:4.3 | 946 | asistent robotizat de copiere de rezervă |
rdiff-backup
|
V:2.4, I:7.0 | 1207 | copie de rezervă incrementală (la distanță) |
restic
|
V:5, I:11 | 24708 | copie de rezervă incrementală (la distanță) |
backupninja
|
V:2.3, I:2.7 | 360 | sistem de meta-copiere de rezervă ușor și extensibil |
slbackup
|
V:0.10, I:0.14 | 147 | copie de rezervă incrementală (la distanță) |
backup-manager
|
V:0.45, I:0.80 | 573 | instrument de copie de rezervă din linia de comandă |
backup2l
|
V:0.40, I:0.54 | 110 | instrument de copiere de rezervă/restaurare cu întreținere redusă pentru suporturi ce pot fi montate (pe bază de disc) |
Instrumentele de copie de rezervă au domenii de specializare specifice.
Mondo Rescue este un sistem de copiere de rezervă care facilitează restaurarea rapidă a întregului sistem de pe CD-uri/DVD-uri de rezervă etc., fără a fi necesar să se parcurgă procesele normale de instalare a sistemului.
Bacula, Amanda, și BackupPC sunt suite complete de instrumente de copiere de rezervă, axate pe copierea periodică de rezervă prin rețea.
Duplicity, și Borg sunt instrumente de copiere de rezervă mai simple pentru stațiile de lucru obișnuite.
Pentru o stație de lucru personală, instrumentele complete de copiere de rezervă concepute pentru mediul server pot să nu fie adecvate. În același timp, instrumentele existente de copiere de rezervă pentru stațiile de lucru pot avea unele deficiențe.
Iată câteva sfaturi pentru a facilita realizarea copiilor de rezervă cu eforturi minime din partea utilizatorului. Aceste tehnici pot fi utilizate cu orice instrumente de copiere de rezervă.
În scop demonstrativ, să presupunem că numele utilizatorului și al grupului
principal este penguin și să creăm un exemplu de script
de copiere de rezervă și
instantanee„/usr/local/bin/bkss.sh” după cum urmează:
#!/bin/sh -e
SRC="$1" # source data path
DSTFS="$2" # backup destination filesystem path
DSTSV="$3" # backup destination subvolume name
DSTSS="${DSTFS}/${DSTSV}-snapshot" # snapshot destination path
if [ "$(stat -f -c %T "$DSTFS")" != "btrfs" ]; then
echo "E: $DESTFS needs to be formatted to btrfs" >&2 ; exit 1
fi
MSGID=$(notify-send -p "bkup.sh $DSTSV" "in progress ...")
if [ ! -d "$DSTFS/$DSTSV" ]; then
btrfs subvolume create "$DSTFS/$DSTSV"
mkdir -p "$DSTSS"
fi
rsync -aHxS --delete --mkpath "${SRC}/" "${DSTFS}/${DSTSV}"
btrfs subvolume snapshot -r "${DSTFS}/${DSTSV}" ${DSTSS}/$(date -u --iso=min)
notify-send -r "$MSGID" "bkup.sh $DSTSV" "finished!"
Aici, doar instrumentul de bază rsync(1) este utilizat
pentru a facilita copierea de rezervă a sistemului, iar spațiul de stocare
este utilizat în mod eficient de Btrfs.
|
Indicație |
|---|---|
|
Pentru informație: autorul utilizează propriul script shell similar „bss: Btrfs Subvolume Snapshot Utility” pentru stația sa de lucru. |
Iată un exemplu pentru configurarea copierii de rezervă cu un singur clic în interfața grafică.
Pregătiți un dispozitiv de stocare USB care va fi utilizat pentru copia de rezervă.
Formatați un dispozitiv de stocare USB cu o singură partiție în btrfs, cu
numele de etichetă „BKUP”. Acesta poate fi criptat
(consultați Secțiune 9.9.1, „Criptarea discurilor amovibile cu dm-crypt/LUKS”).
Conectați-l în sistemul dvs. Sistemul grafic de birou ar trebui să îl
monteze automat ca „/media/penguin/BKUP”.
Executați «sudo chown penguin:penguin
/media/penguin/BKUP» pentru a-l face inscriptibil de către
utilizator.
Creați „~/.local/share/applications/BKUP.desktop” urmând
tehnicile descrise în Secțiune 9.4.10, „Pornirea unui program din interfața grafică” astfel:
[Desktop Entry] Name=bkss Comment=Backup and snapshot of ~/Documents Exec=/usr/local/bin/bkss.sh /home/penguin/Documents /media/penguin/BKUP Documents Type=Application
La fiecare clic în interfața grafică, datele dvs. sunt copiate din
„~/Documents” pe un dispozitiv de stocare USB și se
creează o instantanee numai pentru citire.
Iată un exemplu de configurare pentru copierea automată de rezervă declanșată de evenimentul de montare.
Pregătiți un dispozitiv de stocare USB care să fie utilizat pentru copie de rezervă, ca în Secțiune 10.2.3.1, „Copierea de rezervă în interfața grafică”.
Creați un fișier de unitate de serviciu systemd
„~/.config/systemd/user/back-BKUP.service” astfel:
[Unit] Description=USB Disk backup Requires=media-%u-BKUP.mount After=media-%u-BKUP.mount [Service] ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log [Install] WantedBy=media-%u-BKUP.mount
Activați această configurație a unității systemd cu următoarea comandă:
$ systemctl --user enable bkup-BKUP.service
Pentru fiecare eveniment de montare, datele dvs. sunt copiate din
„~/Documents” pe un dispozitiv de stocare USB și se
creează o instantanee numai pentru citire.
Aici, numele unităților de montare systemd pe care systemd le are în prezent
în memorie pot fi solicitate gestionarului de servicii al utilizatorului
care efectuează apelul cu «systemctl --user list-units
--type=mount».
Iată un exemplu de configurare pentru copierea automată de rezervă declanșată de evenimentul programatorului de sarcini.
Pregătiți un dispozitiv de stocare USB care să fie utilizat pentru copie de rezervă, ca în Secțiune 10.2.3.1, „Copierea de rezervă în interfața grafică”.
Creați un fișier de unitate de programare systemd
„~/.config/systemd/user/snap-Documents.timer” astfel:
[Unit] Description=Run btrfs subvolume snapshot on timer Documentation=man:btrfs(1) [Timer] OnStartupSec=30 OnUnitInactiveSec=900 [Install] WantedBy=timers.target
Creați un fișier de unitate de serviciu systemd
„~/.config/systemd/user/snap-Documents.service” astfel:
[Unit] Description=Run btrfs subvolume snapshot Documentation=man:btrfs(1) [Service] Type=oneshot Nice=15 ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents IOSchedulingClass=idle CPUSchedulingPolicy=idle StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log
Activați această configurație a unității systemd cu următoarea comandă:
$ systemctl --user enable snap-Documents.timer
Pentru fiecare eveniment programat, datele dvs. sunt copiate din
„~/Documents” pe un dispozitiv de stocare USB și se
creează o instantanee numai pentru citire.
Aici, numele unităților de utilizator ale programatorului systemd pe care
systemd le are în prezent în memorie pot fi solicitate gestionatorului de
servicii al utilizatorului care efectuează apelul cu «systemctl
--user list-units --type=timer».
Pentru sistemele grafice de birou moderne, această abordare systemd poate
oferi un control mai precis decât cele tradiționale Unix care utilizează
at(1), cron(8) sau
anacron(8).
Infrastructura de securitate a datelor este asigurată de combinația dintre instrumentul de criptare a datelor, instrumentul de rezumat al mesajelor și instrumentul de semnătură.
Tabel 10.6. Lista instrumentelor de infrastructură pentru securitatea datelor
| pachet | popcon(popularitate) | dimensiune | comandă | descriere |
|---|---|---|---|---|
gnupg
|
V:375, I:873 | 464 | gpg(1) |
GNU Privacy Guard - instrument de criptare și semnare OpenPGP |
gpgv
|
V:258, I:954 | 555 | gpgv(1) |
GNU Privacy Guard - instrument de verificare a semnăturilor OpenPGP |
sq
|
V:1, I:19 | 22408 | sq(1) |
Sequoia-PGP - instrument de criptare și semnare OpenPGP |
sqv
|
V:339, I:418 | 1813 | sqv(1) |
Sequoia-PGP - instrument de verificare a semnăturilor OpenPGP |
paperkey
|
V:2, I:13 | 58 | paperkey(1) |
extrage doar informațiile secrete din cheile secrete OpenPGP |
cryptsetup
|
V:35, I:81 | 465 | cryptsetup(8), … |
ustensile pentru dm-crypt criptarea dispozitivelor bloc care acceptă LUKS |
coreutils
|
V:897, I:1000 | 17994 | md5sum(1) |
calculează și verifică rezumatul mesajului MD5 |
coreutils
|
V:897, I:1000 | 17994 | sha1sum(1) |
calculează și verifică rezumatul mesajului SHA1 |
openssl
|
V:842, I:996 | 2503 | openssl(1ssl) |
calculează rezumatul mesajului cu „openssl dgst”
(OpenSSL) |
libsecret-tools
|
V:1.0, I:10.0 | 49 | secret-tool(1) |
stochează și recuperează parole (CLI) |
seahorse
|
V:82, I:274 | 7971 | seahorse(1) |
instrument de gestionare a cheilor (GNOME) |
Consultați Secțiune 9.9, „Sfaturi pentru criptarea datelor” cu dm-crypt și fscrypt, care implementează infrastructura de criptare automată a datelor prin intermediul modulelor nucleului Linux.
Iată comenzile GNU Privacy Guard pentru gestionarea cheilor de bază.
Tabel 10.7. Lista comenzilor GNU Privacy Guard pentru gestionarea cheilor
| comandă | descriere |
|---|---|
gpg --gen-key |
generează o cheie nouă |
gpg --gen-revoke ID-ul_meu_de-utilizator |
generează cheia de revocare pentru ID-ul_meu_de-utilizator |
gpg --edit-key ID_utilizator |
editează cheia în mod interactiv, „help” pentru ajutor |
gpg -o fișier --export |
exportă toate cheile publice în fișier |
gpg -o fișier --export-secret-keys |
exportă toate cheile private în fișier |
gpg --import fișier |
importă toate cheile din fișier |
gpg --send-keys ID_utilizator |
trimite cheia pentru ID_utilizator către serverul de chei |
gpg --recv-keys ID_utilizator |
primește cheia pentru ID_utilizator de la serverul de chei |
gpg --list-keys ID_utilizator |
listează cheile pentru ID_utilizator |
gpg --list-sigs ID_utilizator |
listează semnăturile pentru ID_utilizator |
gpg --check-sigs ID_utilizator |
verifică semnăturile pentru ID_utilizator |
gpg --fingerprint ID_utilizator |
verifică amprenta digitală pentru ID_utilizator |
gpg --refresh-keys |
actualizează inelul de chei local |
Iată semnificația codului de încredere.
Tabel 10.8. Lista semnificațiilor codului de încredere
| cod | descrierea încrederii |
|---|---|
- |
nu s-a atribuit nicio încredere proprietarului / nu s-a calculat încă |
e |
calcularea încrederii a eșuat |
q |
informații insuficiente pentru calcul |
n |
nu aveți încredere niciodată în această cheie |
m |
încredere marginală |
f |
încredere deplină |
u |
în cele din urmă, de încredere |
Următoarrea comandă generează cheia mea
„9563FC29932C409F1A77F9C1AB8A1522D8234C6A”.
$ gpg --gen-key
gpg (GnuPG) 2.4.7; Copyright (C) 2024 g10 Code GmbH
...
GnuPG needs to construct a user ID to identify your key.
Real name: Osamu Aoki
Email address: osamu@debian.org
You selected this USER-ID:
"Osamu Aoki <osamu@debian.org>"
Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
...
public and secret key created and signed.
pub ed25519 2026-02-14 [SC] [expires: 2029-02-13]
9563FC29932C409F1A77F9C1AB8A1522D8234C6A
uid Osamu Aoki <osamu@debian.org>
sub cv25519 2026-02-14 [E] [expires: 2029-02-13]
Următoarea comandă încarcă cheia mea
„9563FC29932C409F1A77F9C1AB8A1522D8234C6A” pe popularul
server de chei „hkp://keys.gnupg.net”.
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 9563FC29932C409F1A77F9C1AB8A1522D8234C6A
Un server de chei implicit bine configurat în
„~/.gnupg/gpg.conf” (sau vechea locație
„~/.gnupg/options”) conține următoarele.
keyserver hkp://keys.gnupg.net
Următoarea comandă obține cheile necunoscute de la serverul de chei.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\
cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
A existat o eroare în OpenPGP Public
Key Server (versiunea anterioară 0.9.6) care a corupt cheia cu mai
mult de 2 subchei. Pachetul mai nou gnupg (>1.2.1-2)
poate gestiona aceste subchei corupte. Consultați gpg(1)
la opțiunea „--repair-pks-subkey-bug”.
Utilizarea SHA-1 pentru algoritmul de rezumat a fost înlocuită. Dacă vechea cheie openPGP bazată pe RSA utilizează SHA-1 pentru algoritmul de rezumat, remediați problema utilizând FixKeyWithSha1.
|
Indicație |
|---|---|
|
Comenzile |
Iată câteva exemple de utilizare a comenzilor GNU Privacy Guard pe fișiere.
Tabel 10.9. Lista comenzilor GNU Privacy Guard pentru fișiere
| comandă | descriere |
|---|---|
gpg -a -s fișier |
semnează fișierul în armură ASCII ca fișier.asc |
gpg --armor --sign fișier |
, , |
gpg --clearsign fișier |
semnează în text clar mesajul |
gpg --clearsign fișier|mesaj foo@example.org |
trimite un mesaj semnat în text clar la foo@example.org |
gpg --clearsign --not-dash-escaped fișier.patch |
semnează în text clar fișierul.patch |
gpg --verify fișier |
verifică fișierul semnat în text clar |
gpg -o fișier.sig -b fișier |
creează o semnătură detașată |
gpg -o fișier.sig --detach-sign fișier |
, , |
gpg --verify fișier.sig fișier |
verifică fișierul cu fișierul.sig |
gpg -o fișier_criptat.gpg -r nume -e fișier |
criptare cu cheie publică destinată numelui din fișierul binar fișier_criptat.gpg |
gpg -o fișier_criptat.gpg --recipient nume --encrypt
fișier |
, , |
gpg -o fișier_criptat.asc -a -r name -e fișier |
criptare cu cheie publică destinată numelui din fișier către fișierul_criptat.asc cu armură ASCII |
gpg -o fișier_criptat.gpg -c fișier |
criptare simetrică din fișier în fișier_criptat.gpg |
gpg -o fișier_criptat.gpg --symmetric fișier |
, , |
gpg -o fișier_criptat.asc -a -c fișier |
criptare simetrică destinată numelui din fișier către fișierul cu armură ASCII, fișier_criptat.asc |
gpg -o fișier -d fișier_criptat.gpg -r nume |
decriptare |
gpg -o fișier --decrypt fișier_criptat.gpg |
, , |
Adăugați următoarele în „~/.muttrc” pentru a împiedica
pornirea automată a GnuPG, permițând totuși utilizarea acestuia prin
tastarea „S” în meniul index.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
Modulul gnupg vă permite să rulați GnuPG în mod
transparent pentru fișierele cu extensia „.gpg”,
„.asc” și „.pgp”.[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum(1) oferă utilitatea de a crea un fișier de rezumat
(digest) folosind metoda din rfc1321 și de a
verifica fiecare fișier cu ajutorul acestuia.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
|
Notă |
|---|---|
|
Calculul pentru suma MD5 solicită mai puțin procesorul decât cel pentru semnătura criptografică realizată de GNU Privacy Guard (GnuPG). De obicei, numai fișierul de rezumat (digest) de nivel superior este semnat criptografic pentru a asigura integritatea datelor. |
În sistemul GNOME, instrumentul cu interfață grafică
seahorse(1) gestionează parolele și le stochează în
siguranță în inelul de chei ~/.local/share/keyrings/*.
secret-tool(1) poate stoca parola în inelul de chei din
linia de comandă.
Să stocăm fraza de acces utilizată pentru imaginea discului criptat LUKS/dm-crypt
$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img Password: ********
Această parolă stocată poate fi recuperată și introdusă în alte programe, de
exemplu, cryptsetup(8).
$ secret-tool lookup LUKS my_disk.img | \ cryptsetup open disk.img disk_img --type luks --keyring - $ sudo mount /dev/mapper/disk_img /mnt
|
Indicație |
|---|---|
|
Ori de câte ori trebuie să furnizați o parolă într-un script, utilizați
|
Există multe instrumente de îmbinare/fuzionare pentru codul sursă. Următoarele comenzi mi-au atras atenția.
Tabel 10.10. Lista instrumentelor de îmbinare a codului sursă
| pachet | popcon(popularitate) | dimensiune | comandă | descriere |
|---|---|---|---|---|
patch
|
V:103, I:717 | 242 | patch(1) |
aplică un fișier diff la un fișier original |
vim
|
V:87, I:347 | 4089 | vimdiff(1) |
compară 2 fișiere unul lângă altul în vim |
imediff
|
V:0.03, I:0.29 | 348 | imediff(1) |
instrument interactiv pe ecran complet de îmbinare/fuzionare a 2/3 fișiere |
meld
|
V:6, I:25 | 3546 | meld(1) |
compară și fuzionează fișiere (GTK) |
wiggle
|
V:0.00, I:0.15 | 175 | wiggle(1) |
aplică corecțiile (patch) respinse |
diffutils
|
V:881, I:998 | 1768 | diff(1) |
compară fișiere linie cu linie |
diffutils
|
V:881, I:998 | 1768 | diff3(1) |
compară și fuzionează trei fișiere linie cu linie |
quilt
|
V:2, I:19 | 880 | quilt(1) |
gestionează serii de plasturi(corecții) |
wdiff
|
V:6, I:42 | 651 | wdiff(1) |
afișează diferențele de cuvinte între fișierele text |
diffstat
|
V:11, I:105 | 79 | diffstat(1) |
produce o histogramă a modificărilor prin diff |
patchutils
|
V:13, I:104 | 242 | combinediff(1) |
creează un plasture cumulativ din doi plasturi incrementali |
patchutils
|
V:13, I:104 | 242 | dehtmldiff(1) |
extrage un fișier diff dintr-o pagină HTML |
patchutils
|
V:13, I:104 | 242 | filterdiff(1) |
extrage sau exclude diferențele dintr-un fișier diff |
patchutils
|
V:13, I:104 | 242 | fixcvsdiff(1) |
corectează fișierele diff create de CVS pe care patch(1)
le interpretează greșit |
patchutils
|
V:13, I:104 | 242 | flipdiff(1) |
schimbă ordinea a două fișiere de corecții(plasturi) |
patchutils
|
V:13, I:104 | 242 | grepdiff(1) |
afișează fișierele modificate de un patch care corespunde unei expresii regulate |
patchutils
|
V:13, I:104 | 242 | interdiff(1) |
afișează diferențele dintre două fișiere diff unificate |
patchutils
|
V:13, I:104 | 242 | lsdiff(1) |
afișează fișierele modificate de un plasture |
patchutils
|
V:13, I:104 | 242 | recountdiff(1) |
recalculează numărările și decalajele într-un context unificat de diferențe |
patchutils
|
V:13, I:104 | 242 | rediff(1) |
corectează decalajele și numărările unui fișier diff editat manual |
patchutils
|
V:13, I:104 | 242 | splitdiff(1) |
separă plasturii(corecțiile) incrementale |
patchutils
|
V:13, I:104 | 242 | unwrapdiff(1) |
repară plasturii(corecțiile) în care cuvintele au fost împărțite pe mai multe rânduri |
dirdiff
|
V:0.2, I:1.4 | 167 | dirdiff(1) |
afișează diferențele și îmbină/fuzionează modificările între arbori de directoare |
docdiff
|
V:0.04, I:0.29 | 554 | docdiff(1) |
compară două fișiere cuvânt cu cuvânt / caracter cu caracter |
makepatch
|
V:0.03, I:0.19 | 99 | makepatch(1) |
generează fișiere .patch extinse |
makepatch
|
V:0.03, I:0.19 | 99 | applypatch(1) |
aplică fișiere .patch extinse |
Următoarele proceduri extrag diferențele dintre două fișiere sursă și
creează fișiere diff unificate „file.patch0” sau
„file.patch1”, în funcție de locația fișierului.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Fișierul diff (denumit alternativ fișier patch) este utilizat pentru a trimite o actualizare a programului. Partea destinatară aplică această actualizare unui alt fișier după cum urmează.
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
Dacă aveți două versiuni ale unui cod sursă, puteți efectua o îmbinare
bidirecțională în mod interactiv utilizând imediff(1)
după cum urmează.
$ imediff -o file.merged file.old file.new
Dacă aveți trei versiuni ale unui cod sursă, puteți efectua o îmbinare
interactivă în trei moduri utilizând imediff(1) după cum
urmează.
$ imediff -o file.merged file.yours file.base file.theirs
Git este instrumentul preferat în prezent pentru sistemul de control al versiunilor (VCS), deoarece Git poate face totul atât pentru gestionarea codului sursă local, cât și pentru cea de la distanță.
Debian furnizează servicii Git gratuite prin intermediul serviciului Debian Salsa. Documentația acestuia poate fi găsită la https://wiki.debian.org/Salsa .
Iată câteva pachete legate de Git.
Tabel 10.11. Lista pachetelor și comenzilor legate de git
| pachet | popcon(popularitate) | dimensiune | comandă | descriere |
|---|---|---|---|---|
git
|
V:387, I:602 | 50972 | git(7) |
Git, sistemul rapid, scalabil și distribuit de control al reviziilor |
gitk
|
V:4, I:29 | 2022 | gitk(1) |
navigator cu interfață grafică pentru depozitul Git, cu istoric |
qgit
|
V:0.3, I:2.1 | 1431 | qgit(1) |
navigator cu interfață grafică pentru depozitul Git, cu istoric |
git-cola
|
V:0.9, I:4.7 | 4902 | git-cola(1) |
navigator cu interfață grafică pentru depozitul Git, cu istoric |
tig
|
V:2, I:12 | 1243 | tig(1) |
navigator de depozite Git pentru consolă, cu istoric |
lazygit
|
V:0.8, I:2.8 | 24066 | lazygit(1) |
navigator de depozite Git pentru consolă, cu istoric |
git-gui
|
V:1, I:18 | 2525 | git-gui(1) |
interfață grafică pentru depozitul Git (fără istoric) |
git-email
|
V:1, I:11 | 1204 | git-send-email(1) |
trimite o colecție de plasturi(corecții) prin poșta electronică din Git |
git-buildpackage
|
V:1.3, I:7.8 | 2030 | git-buildpackage(1) |
automatizează împachetarea Debian cu Git |
dgit
|
V:0.2, I:1.1 | 718 | dgit(1) |
interoperabilitatea git cu arhiva Debian |
imediff
|
V:0.03, I:0.29 | 348 | git-ime(1) |
instrument interactiv de ajutor pentru divizarea modificărilor comise în depozitul git |
stgit
|
V:0.06, I:0.49 | 604 | stg(1) |
quilt peste git (Python) |
git-doc
|
I:12 | 14896 | N/D | documentația oficială pentru Git |
gitmagic
|
I:0.55 | 721 | N/D | „Git Magic”, ghid mai ușor de înțeles pentru Git |
Puteți specifica mai multe configurații globale în
„~/.gitconfig”, cum ar fi numele și adresa dvs. de poștă
electronică utilizate de Git, după cum urmează.
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
De asemenea, puteți personaliza comportamentul implicit al Git în felul următor.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Dacă sunteți prea obișnuit cu comenzile CVS sau Subversion, puteți crea mai multe alias de comenzi folosind următoarea comandă.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Puteți verifica configurația globală după cum urmează.
$ git config --global --list
Operarea cu Git implică mai multe date.
Arborele de lucru care conține fișierele destinate utilizatorilor și în care efectuați modificări.
Modificările care trebuie înregistrate trebuie selectate în mod explicit și
introduse în index. Acestea sunt comenzile git add și
git rm.
Indexul care conține fișierele stocate în etape.
Fișierele modificate într-o etapă vor fi înregistrate în depozitul local la
următoarea solicitare. Aceasta este comanda git commit.
Depozitul local care conține fișierele modificate.
Git înregistrează istoricul vinculat al datelor comise și le organizează ca ramuri în depozit.
Depozitul local poate trimite date către depozitul la distanță prin comanda
git push.
Depozitul local poate primi date din depozitul de la distanță prin comenzile
git fetch și git pull.
Comanda git pull execută comanda git
merge sau git rebase după comanda git
fetch.
Aici, git merge combină două ramuri separate ale
istoricului la final într-un singur punct. (Aceasta este opțiunea implicită
a git pull fără personalizare și poate fi utilă pentru
persoanele din amonte care publică ramuri către multe persoane.)
Aici, git rebase creează o singură ramură a istoricului
secvențial al ramurii la distanță unu, urmată de ramura locală unu. (Acesta
este un caz de personalizare pull.rebase true și poate fi
util pentru cei mai mulți dintre noi.)
Depozitul de la distanță care conține fișierele cu modificările comise.
Comunicarea cu depozitul de la distanță utilizează protocoale de comunicare securizate, precum SSH sau HTTPS.
Arborele de lucru este format din fișierele din afara directorului
.git/. Fișierele din directorul .git/
conțin indexul, datele din depozitul local și câteva fișiere text de
configurare pentru git.
Iată o prezentare generală a principalelor comenzi Git.
Tabel 10.12. Comenzile git principale
| Comanda git | funcție |
|---|---|
git init |
creează depozitul (local) |
git clone URL |
clonează depozitul de la distanță într-un depozit local cu arborele de lucru |
git pull origin main |
actualizează ramura locală main cu ajutorul depozitului
de la distanță origin |
git add . |
adaugă fișierul (fișierele) din arborele de lucru la index pentru fișierele preexistente numai în index |
git add -A . |
adaugă fișierul (fișierele) din arborele de lucru la index pentru toate fișierele, inclusiv cele eliminate |
git rm nume-fișier |
elimină fișierul (fișierele) din arborele de lucru și din index |
git commit |
comite modificările pregătite în index către depozitul local |
git commit -a |
adaugă toate modificările din arborele de lucru la index și le salvează în depozitul local (adaugă + salvează) |
git push -u origin branch_name |
actualizează depozitul de la distanță origin cu ramura
locală branch_name (invocare inițială) |
git push origin branch_name |
actualizează depozitul de la distanță origin cu ramura
locală branch_name (invocare ulterioară) |
git diff treeish1 treeish2 |
afișează diferența dintre modificarea-comisă treeish1 și modificarea-comisă treeish2 |
gitk |
afișează în interfața grafică arborele istoricului ramurilor din depozitul VCS |
Iată câteva sfaturi pentru Git.
Tabel 10.13. Sfaturi Git
| Linia de comandă Git | funcție |
|---|---|
gitk --all |
arată istoricul complet Git și operează asupra lui, cum ar fi reinițializarea HEAD la o altă modificare-comisă, selectarea plasturilor(corecțiilor), crearea de etichete și ramuri ... |
git stash |
obține arborele de lucru curat fără a pierde date |
git remote -v |
verifică configurarea pentru depozitul de la distanță |
git branch -vv |
verifică configurarea pentru ramură |
git status |
afișează starea arborelui de lucru |
git config -l |
listează configurările git |
git reset --hard HEAD; git clean -x -d -f |
anulează toate modificările din arborele de lucru și le curăță complet |
git rm --cached nume-fișier |
anulează indexul etapizat modificat de git add
nume-fișier |
git reflog |
obține jurnalul de referință (util pentru recuperarea modificărilor-comise din ramura eliminată) |
git branch new_branch_name HEAD@{6} |
creează o nouă ramură din informațiile jurnalului de referință |
git remote add new_remote URL |
adaugă un depozit la distanță new_remote indicat de URL |
git remote rename origin upstream |
redenumește numele depozitului de la distanță din origin
în upstream |
git branch -u upstream/branch_name |
configurează urmărirea la distanță pentru depozitul de la distanță
upstream și numele ramurii sale
branch_name. |
git remote set-url origin https://foo/bar.git |
modifică adresa URL a origin |
git remote set-url --push upstream DISABLED |
dezactivează push către upstream (Editează
.git/config pentru a reactiva) |
git remote update upstream |
preia actualizările tuturor ramurilor de la distanță din depozitul
upstream |
git fetch upstream foo:upstream-foo |
creează o ramură locală (posibil orfană) upstream-foo ca
copie a ramurii foo din depozitul
upstream |
git checkout -b topic_branch ; git push -u topic_branch
origin |
crează un nou topic_branch și îl introduce în
origin |
git branch -m oldname newname |
redenumește numele ramurii locale |
git push -d origin branch_to_be_removed |
elimină ramura de la distanță (metodă nouă) |
git push origin :branch_to_be_removed |
elimină ramura de la distanță (metodă veche) |
git checkout --orphan unconnected |
creați o nouă ramură neconectată |
git rebase -i origin/main |
reordonează/șterge/comprimă modificările-comise din
origin/main pentru a curăța istoricul ramurii |
git reset HEAD^; git commit --amend |
comprimă ultimele 2 modificări-comise într-una singură |
git checkout topic_branch ; git merge --squash topic_branch
|
comprimă întregul topic_branch într-o modificare-comisă |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
convertește o clonă superficială într-o clonă completă a tuturor ramurilor |
git ime |
împarte ultima modificare-comisă într-o serie de modificări-comise mai mici,
fișier cu fișier etc. (este necesar pachetul imediff) |
git repack -a -d; git prune |
reîmpachetează depozitul local într-un singur pachet (acest lucru poate limita șansele de recuperare a datelor pierdute din ramura ștersă etc.) |
|
Avertisment |
|---|---|
|
Nu utilizați șirul de etichete care conține spații, chiar dacă unele
instrumente, cum ar fi |
|
Atenție |
|---|---|
|
Dacă o ramură locală care a fost introdusă în depozitul de la distanță este
rebazată sau comprimată, introducerea acestei ramuri prezintă riscuri și
necesită opțiunea |
|
Atenție |
|---|---|
|
Invocarea unei subcomenzi |
|
Indicație |
|---|---|
|
Dacă există un fișier executabil |
Consultați următoarele.
pagina de manual: git(1)
(/usr/share/doc/git-doc/git.html)
Manualul utilizatorului git
(/usr/share/doc/git-doc/user-manual.html)
Un tutorial introductiv în
git (/usr/share/doc/git-doc/gittutorial.html)
Un tutorial introductiv în
git - partea a doua
(/usr/share/doc/git-doc/gittutorial-2.html)
GIT de zi cu zi cu aproximativ
20 de comenzi
(/usr/share/doc/git-doc/giteveryday.html)
Magia Git
(/usr/share/doc/gitmagic/html/index.html)
Sistemele de control al versiunilor (VCS) sunt uneori cunoscute sub denumirea de sisteme de control al reviziilor (RCS) sau sisteme de gestionare a configurației software (SCM).
Iată un rezumat al celorlalte sisteme de control al versiunilor (VCS) notabile, altele decât Git, din sistemul Debian.
Tabel 10.14. Lista altor instrumente pentru sistemul de control al versiunilor
| pachet | popcon(popularitate) | dimensiune | instrument | tipul de VCS | comentariu |
|---|---|---|---|---|---|
mercurial
|
V:3, I:26 | 2579 | Mercurial | distribut | DCVS scris în Python și un pic în C |
darcs
|
V:0.1, I:3.6 | 38856 | Darcs | distribut | DVCS cu algebră inteligentă a plasturilor/corecțiilor (lent) |
tla
|
V:0.04, I:0.76 | 1022 | GNU arch | distribut | DVCS în principal de Tom Lord (istoric) |
bzr
|
V:0.1, I:4.7 | 28 | GNU Bazaar | distribut | DVCS influențat de tla scris în Python (istoric) |
subversion
|
V:10, I:59 | 4849 | Subversion | la distanță | „CVS făcut corect”, noul standard VCS la distanță (istoric) |
cvs
|
V:3, I:27 | 4835 | CVS | la distanță | standardul anterior VCS la distanță (istoric) |
tkcvs
|
V:0.15, I:0.94 | 34 | CVS, … | la distanță | interfață grafică de afișare a arborelui depozitului VCS (CVS, Subversion, RCS) |
rcs
|
V:1.7, I:9.9 | 578 | RCS | local | "Unix SCCS bine făcut" (istoric) |
cssc
|
V:0.01, I:0.37 | 2044 | CSSC | local | clonă de Unix SCCS (istoric) |
[4] Un suport de stocare cu o singură scriere, cum ar fi CD/DVD-R, poate preveni accidentele de suprascriere. (Consultați Secțiune 9.8, „Datele binare” pentru a afla cum se scrie pe suportul de stocare din linia de comandă a shell-ului. Mediul grafic de birou GNOME vă oferă acces ușor prin meniu: „Locuri→Creator CD/DVD”.)
[5] Unele dintre aceste date nu pot fi regenerate introducând același șir de intrare în sistem.
[6] Dacă utilizați „~/.vimrc” în loc de
„~/.vim/vimrc”, faceți înlocuirea corespunzătoare.