Kopiranje atributa datoteka

Ponekad trebamo napraviti kopiju datoteke, ali ne samo njenog sadržaja, već treba sačuvati sve atribute, poput vlasništva i pripadnosti određenoj grupi. To se uvijek može napraviti ručno služeći se naredbama "chown", "chmod" i "touch".


Kod naredbi chown i chmod, opcija je "--reference", koja određuje datoteku čiji će se atributi prekopirati. Pogledajmo:

# cp dat.txt kopija.txt
# ls -l dat.txt kopija.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:23 dat.txt
-rw-r-xr-- 1 root root 174148 Mar 31 23:25 kopija.txt
# chown --reference dat.txt kopija.txt
# ls -l dat.txt kopija.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:23 dat.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:25 kopija.txt

Vidimo da je naredba "cp" uspjela iskopirati mod datoteke, ali ne vlasništvo i grupu, što smo popravili s parametrom "--reference" kod poziva naredbe "chown".

Moguće je navesti više datoteka na koje ćemo primjeniti atribute jedne određene datoteke:

# ls -l kopija*
-rw-r-xr-- 1 root  root  174148 Mar 31 23:41 kopija2.txt
-rw-r-xr-- 1 root  root  174148 Mar 31 23:41 kopija3.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:25 kopija.txt
# chown --reference dat.txt kopija*
# ls -l kopija*
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:41 kopija2.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:41 kopija3.txt
-rw-r-xr-- 1 korisnik korisnik 174148 Mar 31 23:25 kopija.txt

Vidimo da su sve tri datoteke poprimile vlasništvo datoteke dat.txt. No, što je s vremenima kreiranja i modificiranja? Pogledajmo sto kaže naredba "stat":

# stat kopija3.txt
  File: `kopija3.txt'
  Size: 174148          Blocks: 352        IO Block: 4096   regular file
Device: 801h/2049d      Inode: 716771      Links: 1
Access: (0654/-rw-r-xr--)  Uid: ( 1008/   korisnik)   Gid: ( 1024/   korisnik)
Access: 2016-03-31 23:41:47.000000000 +0200
Modify: 2016-03-31 23:41:47.000000000 +0200
Change: 2016-03-31 23:42:07.000000000 +0200
 Birth: -

Datoteka kopija3.txt ima MTIME 23:41 i CTIME 23:42, a nakpon primjene naredbe "touch --reference" ima sljedeće podatke:

# touch --reference dat.txt kopija3.txt
# stat kopija3.txt
  File: `kopija3.txt'
  Size: 174148          Blocks: 352        IO Block: 4096   regular file
Device: 801h/2049d      Inode: 716771      Links: 1
Access: (0654/-rw-r-xr--)  Uid: ( 1008/   korisnik)   Gid: ( 1024/   korisnik)
Access: 2016-03-31 23:25:16.000000000 +0200
Modify: 2016-03-31 23:23:58.000000000 +0200
Change: 2016-03-31 23:44:03.000000000 +0200
 Birth: -

Vrijeme se "vratilo unatrag", po uzoru na originalnu datoteku dat.txt:

# stat dat.txt
  File: `dat.txt'
  Size: 174148          Blocks: 352        IO Block: 4096   regular file
Device: 801h/2049d      Inode: 716718      Links: 1
Access: (0654/-rw-r-xr--)  Uid: ( 1008/   korisnik)   Gid: ( 1024/  korisnik)
Access: 2016-03-31 23:25:16.000000000 +0200
Modify: 2016-03-31 23:23:58.000000000 +0200
Change: 2016-03-31 23:24:39.000000000 +0200
 Birth: -

Sva ova referenciranja nisu potrebna ukoliko se sjetite da već prilikom kopiranja datoteka upotrijebite parametar "-p", odnosno "--preserve" kod naredbi "cp" i "mv". Što ovo znači? Ukoliko ukljkučite "--preserve", po "defaultu" će biti prekopirani atributi o vlasništvu, modu i vremenu kreiranja. Ovo vrijedi i za rekurzivno kopiranje. Tako možete prekopirati cijeli direktorij s parametrima "-pr" i svi će atributi biti sačuvani:

# cp -pr /dir1 /dir2

Slični se rezultati mogu dobiti i naredbom rsync, ali to već jedna "druga priča".

Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)