Quando uso cp --attributes-only

10

Fazendo um estudo sobre comandos básicos do Unix e tentando obter um exemplo quando quero usar a seguinte opção de linha --attributes-onlyde comando para comandocp

aqui é da cppágina de manual

--attributes-only
              don't copy the file data, just the attributes
Peça e aprenda
fonte

Respostas:

12

Digamos que você tenha um arquivo, file1que você saiba que deve ter atributos idênticos file2(você sabe que file2possui os atributos corretos).

$ 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: -

Uma maneira de garantir que eles correspondam é verificar file2e aplicar manualmente os atributos:

$ chmod 644 file1

No entanto, isso é complicado de automatizar e criar scripts. Seria mais fácil obter os atributos file2e aplicá-los file1programaticamente.

$ 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-onlynão faz nada por si só; ele precisa ser combinado com outros sinalizadores de preservação de atributo. De 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.

--preserveé usado acima, documentado como sendo equivalente a --preserve=mode,ownership,timestamps. Internamente, você pode pensar nisso como "não copie dados" em vez de "apenas copiar atributos", e é por isso que você precisa passar --preserveindependentemente.

Chris Down
fonte
0

Se você possui um smartphone, pode escolher músicas no PC, quando estiver longe dele:

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

Quando você estiver longe do PC, exclua os diretórios e deseje copiar no futuro.

$ cp -rn ~/Music smartphone/Music

Você recebe músicas escolhidas e arquivos vazios.

step.artur87
fonte