Quero copiar os atributos (propriedade, grupo, ACL, atributos estendidos etc.) de um diretório para outro, mas não o conteúdo do diretório.
Isso não funciona:
cp -v --attributes-only A B
cp: omitting directory `A'
Nota: Não precisa ser cp
.
filesystems
backup
file-copy
xattr
Grzegorz Wierzowiecki
fonte
fonte
-r
, por isso está ignorando diretórios. Mas acho que você deseja copiar apenas os atributos, não o conteúdo? Só consigo pensar em hacks feios. Observe também queinstall
pode preservar os contextos do SELinux.Respostas:
Após várias tentativas e erros na linha de comando, acho que encontrei a resposta. Mas não é uma
cp
resposta relacionada.rsync -ptgo -A -X -d --no-recursive --exclude=* first-dir/ second-dir
Isto faz:
Para referência
fonte
USAGE
seção darsync(1)
página de manual.rsync -a -AX --include='*/' --exclude='*'
. Eu não testei.fonte
--no-recursive
. O problema com esta resposta é que ele não executa ACLs ou XATTRs.-r
- recursivo-f
- força-p
- preservar atributos: modo, propriedade, timestampsfonte
Eu não entendo porque parece funcionar para outras pessoas, mas o método rsync falha para mim no FreeBSD com ZFS. Nada acontece. No entanto, o método de Jean-François Dockes funciona. (consulte: https://www.lesbonscomptes.com/pxattr/ ) Diretório de origem = A e diretório de destino = B, da pergunta original.
(edite a primeira linha de tmp.EAs para alterar o diretório A para B, s / A / B /)
fonte
pyxattr
eu tentei isso também. Era uma espécie de noz difícil de quebrar. Supostamente o gnu cp funciona para isso, mas eu não consigo. Atributos estendidos merecem melhor que isso. Além disso, o pxattr funciona pelo menos no linux, osx e bsd.onde dst_dir - é um diretório de destino. Ou:
onde dst_dir - é um diretório que contém o diretório de destino ou um diretório de destino inexistente.
Na página de manual do rsync:
fonte
Você precisa do "-r" para copiar um diretório.
fonte
-r
implica cópia de todos os subdiretórios e arquivos neles ... Não quero copiar a árvore inteira ... Quero copiar atributos para apenas um e apenas um diretório - sem afetar o conteúdo.