Laborator 03 - Lucrul cu fișiere (partea a 2-a)

Pregătirea laboratorului

Pentru pregătirea suportului de laborator, rulați următoarele comenzi în ordine:

student@uso:~$ cd ~
student@uso:~$ wget http://elf.cs.pub.ro/uso/res/labs/lab3/lab3.zip
--2021-10-18 22:44:01--  http://elf.cs.pub.ro/uso/res/labs/lab3/lab3.zip
Resolving elf.cs.pub.ro (elf.cs.pub.ro)... 141.85.227.116
Connecting to elf.cs.pub.ro (elf.cs.pub.ro)|141.85.227.116|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14908126 (14M) [application/zip]
Saving to: ‘lab3.zip’
 
lab3.zip                                           100%[===============================================================================================================>]  14,22M  7,61MB/s    in 1,9s    
 
2021-10-18 22:44:03 (7,61 MB/s) - ‘lab3.zip’ saved [14908126/14908126]
 
student@uso:~$ unzip lab3.zip
Archive:  lab3.zip
   creating: archive/
  inflating: archive/inregistrare_lab03.mp4  
  inflating: archive/inregistrare_lab01.mp4  
  inflating: archive/inregistrare_lab04.mp4  
  inflating: archive/inregistrare_lab02.mp4  
   creating: redirection/
  inflating: redirection/RL          
  inflating: redirection/USO         
  inflating: redirection/EGC   
 
# Când vi se cere parola pentru student, scrieți: student și apăsați enter.
# Nu va apărea pe ecran nimic în timp ce tastați.
 
student@uso:~$ sudo apt update
[sudo] password for student:
 
student@uso:~$ sudo apt -y install vlc

Redirectări

Până acum am dat comenzi în terminal și am urmărit outputul (rezultatul) lor. Outputul (rezultatul) este afișat în terminal. Dacă voiam să salvăm outputul undeva (de obicei într-un fișier) trebuia să copiem outputul, să creăm un fișier nou sau să folosim unul deja existent, să îl deschidem, să lipim textul în el și să salvăm modificările. Trecerea prin toți acești pași durează și devenim ineficienți în lucrul în terminal.

Interpretorul de comenzi (shellul) are opțiunea de a direcționa afișarea rezultatului direct într-un fișier.

Rezultatul unei comenzi este format din două fluxuri de informații: informații de ieșire (standard output, stdout) și de eroare (standard error, stderr). Avem opțiunea de a direcționa (redirecta) doar ieșirea, doar eroarea sau ambele fluxuri într-un fișier.

Redirectări simple

Mergem în directorul ~/redirection rulând comanda cd ~/redirection. Acolo avem mai multe fișiere, câte unul pentru fiecare materie. Afișăm fișierele folosind comanda ls:

student@uso:~$ cd ~/redirection
student@uso:~/redirection$ ls -lh
total 6.1M
-rw-r--r-- 1 student student 1.1M Aug 19 11:55 EGC
-rw-r--r-- 1 student student 2.1M Aug 19 11:55 RL
-rw-r--r-- 1 student student 3.1M Aug 19 11:55 USO

Salvăm outputul comenzii ls -lh de mai sus folosind caracterul >, astfel:

student@uso:~/redirection$ ls -lh > lista_materii
student@uso:~/redirection$ ls
EGC lista_materii RL USO

Observăm că acțiunea de mai sus a făcut două lucruri: a creat fișierul lista_materii și a introdus în conținutul fișierului rezultatul comenzii ls -lh.

Caracterul > așteaptă un șir de caractere după el care este numele fișierului în care vrem să scriem outputul. Șirul este, de fapt, calea către un fișier. Șirul lista_materii este calea relativă până la fișierul lista_materii care se află în directorul curent /home/student.

Fișierul lista_materii nu exista. Prin direcționarea outputului am creat fișierul lista_materii.

Vizualizăm conținutul fișierului lista_materii folosind comanda cat:

student@uso:~/redirection$ cat lista_materii
total 6.1M
-rw-r--r-- 1 student student 1.1M Aug 19 11:55 EGC
-rw-r--r-- 1 student student 224K Aug 19 12:00 lista_materii
-rw-r--r-- 1 student student 2.1M Aug 19 11:55 RL
-rw-r--r-- 1 student student 3.1M Aug 19 11:55 USO

Odată direcționat într-un fișier, fluxul de informații nu mai apare la ecran.

Ștergem fișierul lista_materii folosind comanda rm lista_materii Îl vom crea din nou în următoarele momente.

Folosirea caracterului > suprascrie conținutul fișierului:

student@uso:~/redirection$ mkdir -p comenzi/mkdir
student@uso:~/redirection$ cd comenzi/mkdir
student@uso:~/redirection/comenzi/mkdir$ cat lista_materii
cat: lista_materii: No such file or directory
student@uso:~/redirection/comenzi/mkdir$ ls -l /usr/ > lista_materii
student@uso:~/redirection/comenzi/mkdir$ cat lista_materii
total 72
drwxr-xr-x   2 root root  61440 Sep  9 14:07 bin
drwxr-xr-x   2 root root   4096 Aug 31  2015 games
drwxr-xr-x  34 root root  16384 Sep  9 14:06 include
drwxr-xr-x  74 root root   4096 Sep  9 14:07 lib
drwxr-xr-x   3 root root   4096 Nov 21  2015 lib32
drwxr-xr-x   2 root root   4096 Nov 21  2015 libexec
drwxr-xr-x   3 root root  12288 Nov 21  2015 libx32
drwxrwsr-x  10 root root   4096 Nov 21  2015 local
drwxr-xr-x   2 root root  12288 Sep  9 14:07 sbin
drwxr-xr-x 137 root root  12288 Sep  9 14:07 share
drwxr-xr-x   2 root root   4096 Aug 31  2015 src
student@uso:~/redirection/comenzi/mkdir$ echo "cats" > lista_materii
student@uso:~/redirection/comenzi/mkdir$ cat lista_materii
cats
student@uso:~/redirection/comenzi/mkdir$ cd ../../
student@uso:~/redirection$ rm -r comenzi/  

Fișierul lista_materii nu era creat inițial. În urma comenzii ls -l /usr/ > lista_materii, fișierul lista_materii a fost creat și populat cu ieșirea comenzii ls -l /usr/. Comanda echo "cats" > lista_materii suprascrie conținutul inițial al fișierului, înlocuindu-l cu rezultatul comenzii echo "cats".

Exerciții - redirectări simple
  • Folosiți tree pentru a afișa ierarhia de fișiere pornind de la /home/student;
  • Folosiți tree pentru afișarea aceleiași ierarhii, dar de data asta direcționați-o în fișierul ierarhie_student;
  • Inspectați fișierul pentru a demonstra corectitudinea operației.

Redirectări prin anexare

Putem direcționa rezultatul comenzii, fără a suprascrie fișierul. Facem acest lucru folosim caracterele >> folosind fișierul creat anterior lista_materii:

student@uso:~/redirection$ ls >> lista_materii
student@uso:~/redirection$ ls
EGC lista_materii RL USO
student@uso:~/redirection$ cat lista_materii
total 6.1M
-rw-r--r-- 1 student student 1.1M Aug 19 11:55 EGC
-rw-r--r-- 1 student student 209K Aug 19 12:00 lista_materii
-rw-r--r-- 1 student student 2.1M Aug 19 11:55 RL
-rw-r--r-- 1 student student 3.1M Aug 19 11:55 USO
EGC
lista_materii
RL
USO

Acum avem în fișierul lista_materii, pe lângă conținutul vechi, și outputul comenzii ls.

Exerciții - direcționări prin anexare
  1. Folosiți tree pentru a afișa ierarhia de fișiere pornind de la /tmp;
    • Folosiți tree pentru a afișa aceeași ierarhie, dar de data asta direcționați-o prin anexare la fișierul ierarhie_student creat anterior;
    • Afisați conținutul fișierului ierarhie_student folosind comanda cat.
  2. Folosiți tree pentru a afișa ierarhia de fișiere pornind de la /usr;
    • Repetați comanda anterioara, dar de data asta direcționați-o fără anexare la fișierul ierarhie_student folosit anterior;
    • Afisați conținutul fișierului ierarhie_student folosind comanda cat. Mai exista conținutul inițial al fișierului?

Redirectări de eroare

Atunci când direcționăm ieșirea unei comenzi folosind > sau >>, ne referim doar la ieșirea standard, nu și la erori.

Folosim caracterele 2> pentru a direcționa ieșirea de eroare către un fișier:

student@uso:~/redirection$ ls
EGC lista_materii RL USO
student@uso:~/redirection$ cat lista_materie
cat: lista_materie: No such file or directory

Am vrut să afișăm conținutul fișierului lista_materie, însă acest fișier nu există. Am primit informația No such file or directory, și aceasta este afișată sub formă de eroare.

Direcționăm conținutul fișierului SO2 în fișierul materii:

student@uso:~/redirection$ cat SO2 > materii
cat: SO2: No such file or directory

Vedem că dacă folosim direcționarea simplă >, eroarea tot este afișată.

Deși comanda cat eșuează, direcționarea este făcută. Fișierul materii a fost creat și este gol.

student@uso:~/redirection$ cat SO2 2> materii
student@uso:~/redirection$ cat materii
cat: SO2: No such file or directory

Observăm că nu am primit eroare la prima comandă unde am încercat să afișăm conținutul unui fișier inexistent. Informațiile de eroare au fost direcționate în fișier.

Redirectările de eroare și ieșire pot fi folosite simultan folosind caracterele specifice > pentru ieșire și 2> pentru eroare. Putem folosi sintaxa comanda > fișier_ieșire 2> fișier_erori pentru a face acest lucru.

student@uso:~/redirection$ cat USO SO2
USO is the b3st!
USO Rullz
cat: SO2: No such file or directory

În exemplul de mai sus încercăm să afișăm conținutul fișierelor USO și SO2, dar cu fișierul SO2 neexistent. Liniile USO is the b3st! și USO Rullz sunt conținutul fișierelului USO. Comanda cat ne-a arătat conținutul celor 2 fișiere. Tot comanda cat a încercat să afișeze conținutul fișierului SO2, însă el nu există și a afișat eroarea No such file or directory.

În continuare vom face o separare a fluxurilor: direcționăm ieșirea în fișierul continut_materii și erorile în fișierul erori_comenzi. Ca să redirectăm și outputul și erorile de la o comandă folosim și > și 2> ca mai jos:

student@uso:~/redirection$ cat USO SO2 > continut_materii 2> erori_comenzi
student@uso:~/redirection$ cat continut_materii
USO is the b3st!
USO Rullz
student@uso:~/redirection$ cat erori_comenzi
cat: SO2: No such file or directory

Observăm cum după executarea primei comenzi, la ecran nu mai apare nimic; atât ieșirea standard cât și erorile au fost direcționate în fișiere. În continuare am verificat conținutul acestor fișiere pentru a demonstra corectitudinea operației.

Exerciții
  • Redirectați (simplu) conținutul fișierului de la calea /etc/passwd într-un fișier cu numele utilizatori_si_grupuri.
  • Redirectați (simplu) fișierul de la calea /etc/group în același fișier.
  • Repetați cele două operații de redirectare de mai sus folosind redirectare cu anexare.
  • Redirectați conținutul fișierului de la calea /etc/shadow în fișierul parole și afișați conținutul fișierului. HINT: Puteți folosi sudo!

Arhive

Sunt situații în care vrem să trimitem/stocăm o ierarhie de fișiere. Pentru a ușura acest lucru, folosim arhive. Arhivele sunt o concatenare a unei ierarhii de fișiere și directoare într-un singur fișier.

Există două motive pentru care am vrea să folosim arhive:

  1. Să avem o ierarhie de fișiere și directoare într-un singur fișier - Arhivare. De exemplu, vrem să trimitem pe mail o ierarhie de directoare cu laboratoarele și resursele materiei USO.
  2. Ne dorim ca fișierele să ocupe mai puțin spațiu - Compresie.

Comprimarea este o arhivare mai specială pentru că micșorează dimensiunea fișierului rezultat. Rezultatul este similar: agregarea într-un singur fișier.

În acest capitol vom folosi arhive de tipul zip și tar. Vom folosi tar pentru arhivare și zip pentru arhivare comprimată.

Arhivare - tar

Crearea arhivelor

Arhivele sunt utile atunci când vrem să trimitem pe mail sau să încărcăm pe un site o ierarhie de fișiere și directoare. Pe scurt, atunci când vrem să agregăm totul într-un singur fișier. Acesta poate fi transmis foarte ușor și ulterior dezarhivat.

Creăm o arhivă cu fișierele inregistrare_lab01.mp4, inregistrare_lab02.mp4, inregistrare_lab03.mp4 numită inregistrari.tar folosind utilitarul tar:

student@uso:~$ cd ~/archive
student@uso:~/archive$ ls -lh
total 15M
-rw-r--r-- 1 student student 6.8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2.5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4.8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
student@uso:~/archive$ tar cvf inregistrari.tar inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 19M
-rw-r--r-- 1 student student 14M  oct 13 23:39 inregistrari.tar
-rw-r--r-- 1 student student 6.8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2.5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4.8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4

Observăm cum după comanda de creare a arhivei tar am verificat corectitudinea operației. Avem acum în directorul curent arhiva inregistrari.tar.

Având trei fișiere pe care vrem să le arhivăm, folosim utilitarul tar împreună cu parametrii următori:

  • c: creează arhiva;
  • v: afișează detalii despre operație (verbose);
  • f: folosește arhiva dată ca parametru (în cazul de față, numele ei).

Arhiva nou creată ocupă 14 MB. Fișierele ce compun arhiva ocupă 6.8MB, 2.5MB respectiv 4.8MB.

Fișierul de tipul tar nou creat nu ocupă mai puțin spațiu; din contră, ocupă mai mult spațiu din cauza metadatelor1) fișierului.

Verificăm tipul fișierului folosind utilitarul file.

student@uso:~/archive$ file inregistrari.tar
inregistrari.tar: POSIX tar archive (GNU)

Fișierul inregistrari.tar este o arhivă de tip tar.

Exerciții - creare arhive
    • Creați 3 fișiere noi care să aibă pe rând numele, prenumele și anul vostru de naștere.
    • Creați o arhivă de tipul tar care să conțină cele trei fișiere și care să aibă numele personal_data.tar.
    • Verificați corectitudinea operațiilor.
    • Afișați dimensiunea arhivei.
    • Verificați că fișierul nou creat este o arhivă tar.
    • Creați o arhivă a fișierelor din interiorul directorului /usr/include/net/ cu numele net.tar. HINT: Folosiți sudo!
    • Verificați corectitudinea operației.
    • Afișați dimensiunea arhivei.
    • Verificați că fișierul nou creat este o arhivă tar.
Afișarea conținutului arhivelor

Pentru ușurința de stocare și transmitere, un coleg ne-a transmis toate inregistrarile laboratoarelor filmate de el, într-o arhivă. Noi vrem să vedem conținutul acestei arhive. Putem să vedem ce fișiere conține, fără a o deschide.

Facem acest lucru folosind utilitarul tar:

student@uso:~/archive$ tar tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4

Pentru a vizualiza arhiva fără dezarhivare am folosit opțiunea t. Folosim opțiunea f pentru a specifica ce arhivă vrem să afișăm.

Exercițiu - afișarea conținutului unei arhive
  • Afișați conținutul arhivelor create la exercițiul anterior personal_data.tar și net.tar fără dezarhivare.
Extragerea fișierelor din arhive

Dezarhivarea este procesul opus al arhivării. Avem deja o arhivă de tip tar și vrem să extragem ierarhia din ea.

În momentul în care dezarhivăm un fișier de tip tar, fișierele din cadrul arhivei vor fi create în directorul curent (dacă nu se specifică altfel). Cu alte cuvinte, ierarhia de fișiere pe care am arhivat-o se păstrează, iar în momentul dezarhivării aceasta va arăta la fel ca înainte de arhivare. Pentru a vedea mai clar efectul operației de dezarhivare, ștergem fișierele inregistrare_lab01.mp4, inregistrare_lab02.mp4, inregistrare_lab03.mp4, adică fișierele care se află în arhiva inregistrari.tar.

student@uso:~/archive$ rm inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
student@uso:~/archive$ ls
inregistrari.tar
inregistrare_lab04.mp4

Am verificat că fișierele nu mai există.

În continuare extragem fișierele din arhivă folosind tar:

student@uso:~/archive$ tar xvf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 29M
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4

Pentru dezarhivare am folosit următorii parametrii ai utiliitarului tar:

  • x: extrage arhiva (extract);
  • v: afișează detalii despre operație (verbose);
  • f: folosește arhiva dată ca parametru (în cazul de față, numele ei).
Extragerea arhivelor la o cale specifică

Avem următorul scenariu: am descărcat în ~/archive de la un prieten o arhivă cu inregistrarile video ale laboratoarelor. Vrem să le dezarhivăm în directorul ~/archive/dezarhivare/tar.

Creăm un director dezarhivare/tar și extragem arhiva acolo folosind tar:

student@uso:~/archive$ ls -l
total 28808
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student  7032579 oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student  2528132 oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student  4979963 oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student   399418 oct 11 02:23 inregistrare_lab04.mp4
student@uso:~/archive$ mkdir -p dezarhivare/tar
student@uso:~/archive$ tree
.
|-- dezarhivare
|   ``-- tar
|-- inregistrare_lab01.mp4
|-- inregistrare_lab02.mp4
|-- inregistrare_lab03.mp4
|-- inregistrare_lab04.mp4
``-- inregistrari.tar
 
2 directories, 5 files
student@uso:~/archive$ tar xvf inregistrari.tar --directory dezarhivare/tar/
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ tree
.
|-- dezarhivare
|   ``-- tar
|       |-- inregistrare_lab01.mp4
|       |-- inregistrare_lab02.mp4
|       ``-- inregistrare_lab03.mp4
|-- inregistrare_lab01.mp4
|-- inregistrare_lab02.mp4
|-- inregistrare_lab03.mp4
|-- inregistrare_lab04.mp4
``-- inregistrari.tar
 
2 directories, 8 files

Observăm că după crearea directoarelor și după extragerea arhivelor am verificat corectitudinea operațiilor.

După cum observăm în exemplu de mai sus, pentru a extrage fișierele către o anumită cale, folosim opțiunea --directory (- - d i r e c t o r y):

Putem extrage un singur fișier fără să fim obligați să dezarhivăm tot, folosind comanda tar xvf astfel:

student@uso:~/archive$ rm inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
student@uso:~/archive$ ls
dezarhivare  inregistrari.tar inregistrare_lab04.mp4
student@uso:~/archive$ tar xvf inregistrari.tar inregistrare_lab01.mp4
inregistrare_lab01.mp4
student@uso:~/archive$ ls -l
total 14344
drwxr-xr-x 3 student student    4096  oct 11 12:15 dezarhivare
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student  7032579 oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student   399418 oct 11 02:23 inregistrare_lab04.mp4

Am extras doar fișierul inregistrare_lab01.mp4 din arhiva inregistrari.tar.

Obervăm cum după comenzile de ștergere și dezarhivare am verificat corectitudinea operațiilor. Este extrem de util acest lucru.

Am pus ca ultim parametru numele fișierului (inregistrare_lab01.mp4).

Exerciții - extragerea (dezarhivarea) unei arhive
    • Creați un director cu numele personal și în acest director încă unul cu numele documente ca în ierarhia de mai sus.
    • Extrageți arhiva personal_data.tar în directorul personal/documente/.
    • Extrageți doar fișierul nume în directorul curent.
    • Verificați corectitudinea operațiilor afișând conținutul arhivei și directoarelor după dezarhivare.
    • Extrageți arhiva net.tar în directorul /tmp/.
    • Verificați corectitudinea operațiilor afișând conținutul arhivei și directorului după dezarhivare.
Adăugarea de noi fișiere la arhive

Adăugăm un nou fișier la arhivă folosind comanda tar, astfel:

student@uso:~/archive$ tar -tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ tar rvf inregistrari.tar inregistrare_lab04.mp4
inregistrare_lab04.mp4
student@uso:~/archive$ tar tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
inregistrare_lab04.mp4

În primă fază am verificat că inregistrare_lab04.mp4 nu există în arhivă. În continuare am adăugat inregistrare_lab04.mp4 la arhivă folosind opțiunea r.

Observăm cum după comanda de adăugare de fișier la arhivă, am verificat corectitudinea operației.

Exerciții - adăugare de noi fișiere
  • Creați un fișier UPB. Verificați operația afișând conținutul directorului părinte.
  • Adăugați textul Make UPB Great Again! în interiorul fișierului. Verificați operația afișând conținutul fișierului.
  • Adăugați-l la arhiva personal_data.tar, ca în exemplul de mai sus. Verificați operația afișând conținutul arhivei.
Comprimare tar.gz

Am văzut mai sus că pentru a pune o ierarhie de fișiere într-unul singur, folosim tar. Pentru a reduce dimensiunea arhivei folosim utilitarul tar astfel:

student@uso:~/archive$ tar xvf inregistrari.tar inregistrare_lab02.mp4 inregistrare_lab03.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ tar -czvf inregistrari.tar.gz inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -l
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-rw-r-- 1 student student 14516779 oct 14 00:00 inregistrari.tar.gz
...

Am folosit următorii parametrii:

  • c: creează arhiva;
  • z: pentru arhivare gzip;
  • v: afișează detalii despre operație (verbose);
  • f: folosește arhiva dată ca parametru (în cazul de față, numele ei).

Observăm că dimensiunea arhivei comprimate inregistrari.tar.gz a scăzut față de arhiva originală inregistrari.tar.

Comprimare - zip

Acțiunea de comprimare este compusă din doi pași: arhivare și reducerea dimensiunii (comprimare). Utilitarul zip face ambii pași simultan.

În continuare folosim utilitarul zip pentru arhivare și comprimare. Arhivarea este similară cu cea prezentată în subsecțiunea arhiva_tar, unde am folosit utilitarul tar.

Crearea arhivelor

Putem crea o arhivă folosind utilitarul zip, astfel:

student@uso:~/archive$ zip inregistrari.zip inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
  adding: inregistrare_lab01.mp4 (deflated 0%)
  adding: inregistrare_lab02.mp4 (deflated 0%)
  adding: inregistrare_lab03.mp4 (deflated 0%)
student@uso:~/archive$ ls -lh
total 56M
drwxr-xr-x 3 student student 4.0K oct 11 12:15 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:00 inregistrari.tar.gz
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip

Sintaxa este în felul următor: zip numele_arhivă.zip ierarhia_de_fișiere Observăm cum după comanda de creare a arhivei zip am verificat corectitudinea operației.

Parametrul -h de la comanda ls -lh transformă dimensiunea fișierului în format human-readable, adică folosește K pentru KiloOcteți, M pentru MegaOcteți, G pentru GigaOcteți. La prima vedere, folosind comanda ls -lh observăm că fișierul de tipul zip nou creat nu ocupă mai puțin spațiu decât suma dimensiunilor celor trei fișiere. Motivul este că în sistemul de fișiere a apărut un nou fișier ce conține arhiva nou creată și sistemul de fișiere stochează informații despre acest fișier. Exemplu de informații stocate: dimensiune, data creare, permisiuni, utilizatorul deținător.

Observăm că dimensiunea arhivei tar este aceeași cu aceea a arhivei zip. De fapt, dacă ne uităm în detaliu, vom vedea că nu este așa.

Mai sus afișarea dimensiunii este în format human-readable adică în MegaBytes (MegaOcteți). Afișăm dimensiunea în octeți:

student@uso:~/archive$ ls -l
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-rw-r-- 1 student student 14517242 oct 14 00:11 inregistrari.zip
...

Arhiva tar are 14551040 octeți, iar arhiva zip are 14517242. Observăm o mică diferență între cele două, varianta zip fiind mai mică.

Pentru o mai bună înțelegere a comenzii de creare a arhivelor, inspectați manualul: man zip.

Exerciții - creare arhive
    • Creați 3 fișiere noi care să aibă pe rând numele orașulului natal, țării natale și liceului absolvit. Verificați crearea fișierelor afișând conținutul directorului părinte.
    • Creați o arhivă de tipul zip care să conțină cele trei fișiere și care să aibă numele personal_data.zip. Verificați conținutul arhivei.
    • Afișați dimensiunea arhivei.
    • Creați o arhivă de tipul zip a fișierelor din interiorul directorului /usr/include/net/ cu numele net.zip.
    • Comparați dimensiunea arhivei zip cu cea tar de la exercițiu precendent.
Afișarea conținutului arhivelor

Putem vizualiza conținutul arhivei astfel:

student@uso:~/archive$ zip -sf inregistrari.zip
Archive contains:
  inregistrare_lab01.mp4
  inregistrare_lab02.mp4
  inregistrare_lab03.mp4

Pentru a vizualiza arhiva fără dezarhivare folosim opțiunea -sf (prescurtare de la show-files).

Exerciții - afișarea conținutului unei arhivei
  • Acest exercițiu folosește arhiva creată la exercițiu anterior.
  • Afișați conținutul arhivelor personal_data.zip și net.zip fără dezarhivare.
Dezarhivarea arhivelor

În momentul în care dezarhivăm un fișier de tip zip, fișierele din cadrul arhivei vor fi create în directorul curent (dacă nu se specifică altfel). Cu alte cuvinte, ierarhia de fișiere pe care am arhivat-o se păstrează, iar în momentul dezarhivării aceasta va arăta la fel ca înainte de arhivare. Pentru a vedea mai clar efectul operației de dezarhivare, ștergem fișierele inregistrare_lab01.mp4, inregistrare_lab02.mp4, inregistrare_lab03.mp4, adică fișierele care se află în arhiva inregistrari.zip.

student@uso:~/archive$ ls -l
total 57168
drwxr-xr-x 3 student student    4096 oct 11 12:15 dezarhivare
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-rw-r-- 1 student student 14164824 oct 13 23:39 inregistari.tar.gz
-rw-r--r-- 1 student student  7032579 oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student  2528132 oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student  4979963 oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student   399418 oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student 14517242 oct 14 00:11 inregistrari.zip
student@uso:~/archive$ rm inregistrare_lab01.mp4 inregistrare_lab02.mp4  inregistrare_lab03.mp4
student@uso:~/archive$ ls -l
total 34828
drwxr-xr-x 3 student student    4096 oct 11 12:15 dezarhivare
-rw-r--r-- 1 student student 7340032 oct 11 12:35 inregistrare_lab04.mp4
-rw-r--r-- 1 student student 9441280 oct 11 17:56 inregistrari.tar
-rw-r--r-- 1 student student 9406659 oct 11 17:56 inregistrari.tar.gz
-rw-r--r-- 1 student student 9439072 oct 11 18:02 inregistrari.zip

Pentru a dezarhiva o arhivă folosim utilitarul unzip. Puteți observa că am șters fișierele existente înainte de extragere.

student@uso:~/archive$ unzip inregistrari.zip
Archive:  inregistrari.zip
  inflating: inregistrare_lab01.mp4
  inflating: inregistrare_lab02.mp4
  inflating: inregistrare_lab03.mp4
student@uso:~/archive$ ls -l
total 57168
drwxr-xr-x 3 student student    4096 oct 11 12:15 dezarhivare
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-rw-r-- 1 student student 14164824 oct 13 23:39 inregistari.tar.gz
-rw-r--r-- 1 student student  7032579 oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student  2528132 oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student  4979963 oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student   399418 oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student 14517242 oct 14 00:11 inregistrari.zip

Observăm cum după operațiile de ștergere și dezarhivare, verificăm corectitudinea operațiilor.

Putem extrage fișierele către o anumită cale:

student@uso:~/archive$ mkdir dezarhivare/zip
student@uso:~/archive$ unzip inregistrari.zip -d dezarhivare/zip/
Archive:  inregistrari.zip
  inflating: dezarhivare/zip/inregistrare_lab01.mp4
  inflating: dezarhivare/zip/inregistrare_lab02.mp4
  inflating: dezarhivare/zip/inregistrare_lab03.mp4
student@uso:~/archive$ tree
.
|-- dezarhivare
|   |-- tar
|       |-- inregistrare_lab01.mp4
|       |-- inregistrare_lab02.mp4
|       ``-- inregistrare_lab03.mp4
|   ``-- zip
|       |-- inregistrare_lab01.mp4
|       |-- inregistrare_lab02.mp4
|       ``-- inregistrare_lab03.mp4
|-- inregistrare_lab01.mp4
|-- inregistrare_lab02.mp4
|-- inregistrare_lab03.mp4
|-- inregistrare_lab04.mp4
|-- inregistrari.tar
|-- inregistrari.tar.gz
``-- inregistrari.zip
 
3 directories, 13 files

Observăm că după crearea directoarelor și după extragerea arhivelor am verificat corectitudinea operațiilor.

Am folosit comanda unzip -d destinație pentru a extrage o arhivă zip la calea destinație.

Putem dezarhiva un singur fișier/director din toată arhiva:

student@uso:~/archive$ rm inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 48M
drwxr-xr-x 4 student student 4.0K oct 11 18:05 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip
student@uso:~/archive$ unzip inregistrari.zip inregistrare_lab03.mp4
Archive:  inregistrari.zip
inflating: inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
drwxr-xr-x 4 student student 4.0K oct 11 18:05 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip

Obervăm cum după comenzile de ștergere și dezarhivare s-a verificat corectitudinea operațiilor.

Puteți observa că am extras un singur fișier punând ca ultim parametru numele fișierului.

Exerciții - dezarhivarea unei arhive
    • Creați un director cu numele zip în directorul dezarhivare ca în ierarhia de mai sus. Verificați crearea afișând conținutul directorului dezarhivare.
    • Dezarhivați arhiva personal_data.zip în directorul dezarhivare/zip/. Verificați operația de dezarhivare afișând conținutul directorului.
    • Dezarhivați doar fișierul oraș natal în directorul curent. Verificați operația afișând conținutul directorului curent.
    • Creați directorul my_net în directorul dezarhivare ca în ierarhia de mai sus. Verificați crearea afișând conținutul directorului dezarhivare.
    • Dezarhivați arhiva net.zip în directorul creat anterior my_net. Verificați operația de dezarhivare afișând conținutul directorului.
Adăugarea de noi fișiere la arhive

Putem adăuga un nou fișier la arhivă folosind comanda zip -u:

student@uso:~/archive$ zip -u inregistrari.zip inregistrare_lab04.mp4
  adding: inregistrare_lab04.mp4 (deflated 0%)
student@uso:~/archive$ zip -sf inregistrari.zip
Archive contains:
  inregistrare_lab01.mp4
  inregistrare_lab02.mp4
  inregistrare_lab03.mp4
  inregistrare_lab04.mp4
Total 4 entries (16777216 bytes)

Observăm cum după comanda de adăugare de fișier la arhivă, am verificat corectitudinea operației folosind comanda zip -sf.

În exemplul de mai sus am adăugat inregistrare_lab04.mp4 la arhivă.

Exerciții - adăugarea unui fișier în arhivă
  • Creați un fișier UPB cu conținutul “Make UPB Great Again!”.
  • Verificați conținutul arhivei personal_data.zip.
  • Adăugați fișierul UPB în arhivă.
  • Verificați adăugarea fișierului la arhivă fără dezarhivare.
  • Dezarhivați arhiva în directorul personal_data_zip.

Este bine de știut că în urma realizării unei operații trebuie verificată executarea acesteia.

Extra - Sistemul de fișiere

Căutarea fișierelor în sistemul de fișiere

Se poate întâmpla să vrem să aflăm dacă într-o ierarhie de fișiere găsim un anumit fișier și, dacă există, vrem să aflăm unde se află. Spre exemplu, serviciul ssh folosește un fișier de configurare numit ssh_config, dar nu mai ținem minte calea exactă până la acel fișier.

Linux ne oferă două utilitare, locate și find, care pot fi de ajutor în situația descrisă mai sus.

Folosirea utilitarului find

În mod obișnuit, numele fișierelor de configurare pentru servicii se termină în extensia conf. Găsim toate fișierele de configurare ale serviciului ssh de pe sistem folosind comanda find:

student@uso:~$ mkdir comenzi
student@uso:~$ cd comenzi/
student@uso:~/comenzi$ sudo find / -iname "*ssh*conf"
/usr/share/upstart/sessions/ssh-agent.conf
/usr/lib/tmpfiles.d/sshd.conf
/etc/init/ssh.conf

Am căutat în calea / (root) orice fișier ce conține ssh și se termină cu conf. Am folosit comanda sudo pentru că suntem un utilizator neprivilegiat și nu putem căuta în directorul (root).

Utilitarul find caută în ierarhia de fișiere care începe de la calea dată ca parametru în jos. În cazul nostru, de la / (root) în jos, adică în tot sistemul de fișiere.

Mai multe informații și exemple de utilizări vom vedea în capitolul Interfața în linia de comandă.

Folosirea utilitarului locate

Atunci când vrem să căutăm într-o ierarhie mare de fișiere, utilitarul find nu este cea mai bună soluție deoarece este încet.

Utilitarul locate ne poate ajuta în astfel de situații.

Acesta funcționează în 2 pași:

  • Crearea și actualizarea unei baze de date folosind comanda updatedb. Aceasta conține intrări cu toate fișierele din sistem și locatia acestora.
  • Căutarea folosind locate. Această căutare se reduce la interogarea bazei de date create anterior cu updatedb.

Performanța utilitarului este foarte bună, superioară lui find. Partea negativă este că la fiecare căutare trebuie folosit utilitarul updatedb.

Încercăm să căutăm fișiere ce conțin ssh și se termină cu conf în sistemul de fișiere folosind locate:

student@uso:~/comenzi$ sudo updatedb
student@uso:~/comenzi$ locate "*ssh*conf"
/etc/init/ssh.conf
/usr/lib/tmpfiles.d/sshd.conf
/usr/share/upstart/sessions/ssh-agent.conf

Actualizăm baza de date folosind updatedb și apoi căutăm fișierul de configurare cu utilitarul locate. Răspunsul comenzii este instant.

Acum ne dorim să găsim toate arhivele de tip tar de pe stația noastră. Vom folosi iar utilitarul locate alături de șirul de caractere *.tar.

student@uso:~$ locate *.tar
/home/student/inregistrari.tar
/home/student/usr_bin.tar

Acesta este un presupus output al utilitarului locate. Au fost găsite arhivele înregistrări.tar și usr_bin.tar pe care le aveam în sistemul de fișiere de la secțiunea anterioară.

Găsim mai multe informații și exemple în capitolul Interfață în linia de comandă.

Variabila de mediu PATH

Până acum am învățat câteva comenzi utile: ls, cd, find, locate.

Utilitarele sunt de fapt programe (executabile) care se află undeva în sistemul de fișiere.

Shell-ul știe să ruleze utilitarele din orice loc în care ne aflăm (din ierarhia de fișiere). Se întâmplă acest lucru pentru că shell-ul are o listă de câteva directoare în care se uită după utilitarele pe care le folosim. Spre exemplu, atunci când rulăm utilitarul ls, el caută programul ls în lista pe care o are, îl găsește și îl rulează.

Această listă se găsește în variabila de mediu2) PATH.

Afișarea variabilei PATH din sistem

Afișăm valoarea variabilei de mediu PATH a sistemului folosind utilitarul echo.

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games

Variabila PATH are patru căi din sistem, despărțite de caracterul :. Astfel, sistemul verifică dacă utilitarul este prezent în calea /usr/local/bin. Dacă nu-l găsește, merge la următoarea calea /usr/bin. Se caută utilitarul la toate căile disponibile. Dacă nu-l găsește va apărea în shell-ul curent un mesaj de eroare.

Un utilitar poate fi la mai multe căi din PATH, dar va fi executat utilitarul din cea mai din stânga cale (prima, dacă nu a doua, etc.).

Căutarea utilitarelor în sistemul de fișiere

Există cazuri când vrem să găsim locația exactă a unui utilitar: vrem să aflăm ce permisiuni are, cine îl deține sau ce dimensiune are.

Folosirea utilitarului which

Acest utilitar identifică calea programelor din sistem.

Căutăm calea la care se află utilitarul ls folosind comanda which:

student@uso:~$ which ls
/bin/ls
student@uso:~$ which pwd
/bin/pwd
student@uso:~$ which man
/usr/bin/man 

which folosește variabila de mediu PATH pentru a găsi utilitarul cerut și va afișa rezultatele în ordinea directoarelor din PATH.

Aflăm mai multe detalii despre utilitarul which în capitolul Interfața în linia de comandă

Exerciții
  • Redenumiți utilitarul pwd în pwd_backup. Puteți să mai executați comanda pwd? Dar pwd_backup?

Sumar - Cheatsheet

Redirectări simple

student@uso:~$ cd ~/redirection
student@uso:~/redirection$ ls -lh
total 6.1M
-rw-r--r-- 1 student student 1.1M Aug 19 11:55 EGC
-rw-r--r-- 1 student student 2.1M Aug 19 11:55 RL
-rw-r--r-- 1 student student 3.1M Aug 19 11:55 USO
Redirectări prin anexare
student@uso:~/redirection$ ls >> lista_materii
student@uso:~/redirection$ ls
EGC lista_materii RL USO
student@uso:~/redirection$ cat lista_materii
total 6.1M
-rw-r--r-- 1 student student 1.1M Aug 19 11:55 EGC
-rw-r--r-- 1 student student 209K Aug 19 12:00 lista_materii
-rw-r--r-- 1 student student 2.1M Aug 19 11:55 RL
-rw-r--r-- 1 student student 3.1M Aug 19 11:55 USO
EGC
lista_materii
RL
USO
Redirectări de eroare
student@uso:~/redirection$ ls
EGC lista_materii RL USO
student@uso:~/redirection$ cat lista_materie
cat: lista_materie: No such file or directory
student@uso:~/redirection$ cat SO2 2> materii
student@uso:~/redirection$ cat materii
cat: SO2: No such file or directory

Crearea arhivelor - tar

student@uso:~$ cd ~/archive
student@uso:~/archive$ ls -lh
total 15M
-rw-r--r-- 1 student student 6.8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2.5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4.8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
student@uso:~/archive$ tar cvf inregistrari.tar inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 19M
-rw-r--r-- 1 student student 14M  oct 13 23:39 inregistrari.tar
-rw-r--r-- 1 student student 6.8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2.5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4.8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
Afișarea conținutului arhivelor - tar
student@uso:~/archive$ tar tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
Extragerea fișierelor din arhive - tar
student@uso:~/archive$ tar xvf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 29M
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
Extragerea arhivelor la o cale specifică - tar
student@uso:~/archive$ ls -l
total 28808
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student  7032579 oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student  2528132 oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student  4979963 oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student   399418 oct 11 02:23 inregistrare_lab04.mp4
student@uso:~/archive$ mkdir -p dezarhivare/tar
student@uso:~/archive$ tree
.
|-- dezarhivare
|   ``-- tar
|-- inregistrare_lab01.mp4
|-- inregistrare_lab02.mp4
|-- inregistrare_lab03.mp4
|-- inregistrare_lab04.mp4
``-- inregistrari.tar
 
2 directories, 5 files
student@uso:~/archive$ tar xvf inregistrari.tar --directory dezarhivare/tar/
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
Adăugarea de noi fișiere la arhive
student@uso:~/archive$ tar -tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ tar rvf inregistrari.tar inregistrare_lab04.mp4
inregistrare_lab04.mp4
student@uso:~/archive$ tar tf inregistrari.tar
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
inregistrare_lab04.mp4
Comprimare tar.gz
student@uso:~/archive$ tar -czvf inregistrari.tar.gz inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
inregistrare_lab01.mp4
inregistrare_lab02.mp4
inregistrare_lab03.mp4
student@uso:~/archive$ ls -l
-rw-rw-r-- 1 student student 14551040 oct 13 23:39 inregistari.tar
-rw-rw-r-- 1 student student 14516779 oct 14 00:00 inregistrari.tar.gz

Crearea arhivelor - zip

student@uso:~/archive$ zip inregistrari.zip inregistrare_lab01.mp4 inregistrare_lab02.mp4 inregistrare_lab03.mp4
  adding: inregistrare_lab01.mp4 (deflated 0%)
  adding: inregistrare_lab02.mp4 (deflated 0%)
  adding: inregistrare_lab03.mp4 (deflated 0%)
student@uso:~/archive$ ls -lh
total 56M
drwxr-xr-x 3 student student 4.0K oct 11 12:15 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:00 inregistrari.tar.gz
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip
Afișarea conținutului arhivelor - zip
student@uso:~/archive$ zip -sf inregistrari.zip
Archive contains:
  inregistrare_lab01.mp4
  inregistrare_lab02.mp4
  inregistrare_lab03.mp4
Dezarhivarea arhivelor - zip
student@uso:~/archive$ rm inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
total 48M
drwxr-xr-x 4 student student 4.0K oct 11 18:05 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip
student@uso:~/archive$ unzip inregistrari.zip inregistrare_lab03.mp4
Archive:  inregistrari.zip
inflating: inregistrare_lab03.mp4
student@uso:~/archive$ ls -lh
drwxr-xr-x 4 student student 4.0K oct 11 18:05 dezarhivare
-rw-rw-r-- 1 student student  14M oct 13 23:39 inregistari.tar
-rw-r--r-- 1 student student 6,8M oct 11 02:23 inregistrare_lab01.mp4
-rw-r--r-- 1 student student 2,5M oct 11 02:23 inregistrare_lab02.mp4
-rw-r--r-- 1 student student 4,8M oct 11 02:23 inregistrare_lab03.mp4
-rw-r--r-- 1 student student 391K oct 11 02:23 inregistrare_lab04.mp4
-rw-rw-r-- 1 student student  14M oct 14 00:11 inregistrari.zip
Adăugarea de noi fișiere la arhive - zip
student@uso:~/archive$ zip -u inregistrari.zip inregistrare_lab04.mp4
  adding: inregistrare_lab04.mp4 (deflated 0%)
student@uso:~/archive$ zip -sf inregistrari.zip
Archive contains:
  inregistrare_lab01.mp4
  inregistrare_lab02.mp4
  inregistrare_lab03.mp4
  inregistrare_lab04.mp4
Total 4 entries (16777216 bytes)

Cuprins

1) Metadatele sunt modalitatea sistemului de fișiere de a reține informații despre acesta: data creării, dimensiunea, utilizatorul ce deține fișierul, etc.
2) Variabilele de mediu sunt variabile care descriu mediul în care sunt executate programele. Ele sunt folosite de aplicații pentru a răspunde la întrebări cum ar fi: Care este numele calculatorului pe care sunt instalată? Care este numele contului de utilizator care mă execută? Care este folderul meu de lucru? Unde se află fișierele temporare pe calculator?
uso/laboratoare/laborator-03.txt · Last modified: 2022/10/18 15:39 by iustina.caramida
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0