Kiedy używam cp --attributes-only

10

Robię trochę badań na temat podstawowych poleceń Uniksa i próbuję uzyskać przykład, gdy chcę użyć następującej opcji --attributes-onlywiersza polecenia dla poleceniacp

tutaj jest ze cpstrony man

--attributes-only
              don't copy the file data, just the attributes
Zapytaj i naucz się
źródło

Odpowiedzi:

12

Załóżmy, że masz plik, file1o którym wiesz, że powinien mieć identyczne atrybuty file2(wiesz, że file2ma poprawne atrybuty).

$ stat file{1,2}
  File: 'file1'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 1fh/31d Inode: 2326956     Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/   chris)   Gid: ( 1000/   chris)
Access: 2013-12-24 09:53:20.248720441 +0800
Modify: 2013-12-24 09:53:20.248720441 +0800
Change: 2013-12-24 09:53:31.011984772 +0800
 Birth: -
  File: 'file2'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 1fh/31d Inode: 2326957     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   chris)   Gid: ( 1000/   chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:53:21.045382001 +0800
 Birth: -

Jednym ze sposobów upewnienia się, że pasują do siebie, jest przejście i sprawdzenie file2i ręczne zastosowanie atrybutów:

$ chmod 644 file1

Jest to jednak kłopotliwe w automatyzacji i pisaniu skryptów. Łatwiej byłoby uzyskać atrybuty file2i zastosować je file1programowo.

$ cp --attributes-only --preserve file2 file1
$ stat file1
  File: 'file1'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 1fh/31d Inode: 2326956     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   chris)   Gid: ( 1000/   chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:57:06.320604649 +0800
 Birth: -

--attributes-onlysam nic nie robi; należy to połączyć z innymi flagami zachowania atrybutów. Od info cp:

--attributes-only
     Copy only the specified attributes of the source file to the
     destination.  If the destination already exists, do not alter its
     contents.  See the `--preserve' option for controlling which
     attributes to copy.

--preservejest używany powyżej, co jest udokumentowane jako równoważne z --preserve=mode,ownership,timestamps. Wewnętrznie możesz to traktować jako „nie kopiuj danych” zamiast „kopiuj tylko atrybuty”, dlatego musisz to przekazać --preserveniezależnie.

Chris Down
źródło
0

Jeśli masz smartfona, możesz wybrać muzykę z komputera, gdy jesteś daleko:

$ cp -rn --attributes-only ~/Music smartphone/Music

Gdy będziesz daleko od komputera, usuń katalogi, które chcesz skopiować w przyszłości.

$ cp -rn ~/Music smartphone/Music

Otrzymasz wybraną muzykę i puste pliki.

step.artur87
źródło