Estou tentando fazer um arquivo tar de todos os arquivos no meu /var
diretório. Naturalmente, quero excluir os soquetes Unix de lá.
Então eu tento um comando que se parece com:
sudo find /var \! -type s -exec tar -rf ~/test/etc.tar {} \;
Mas isso gera a mensagem de erro repetida
tar format cannot archive socket:
Quando tento fazer uma cópia em vez de tar, recebo um erro semelhante:
cp: ./var/run/devd.pipe is a socket (not copied).
Alguém tem uma ideia porque find
não consegue excluir arquivos do tipo socket? É capaz de excluir, por exemplo, arquivos do tipo diretório.
Você terá que excluir diretórios também. Se não excluir os diretórios,
tar
obterá/var
(e outros diretórios) como argumento e procederá ao arquivamento destes com todo o conteúdo (soquetes ou não). Além disso, adicionará várias cópias de muitos dos arquivos devido ao mesmo motivo (/var
inclui/var/log/messages
e também/var/log
).Ou, se você quiser apenas arquivos regulares e links simbólicos:
Eu escolhi usar
-exec ... {} +
aqui em vez de-exec ... {} ';'
como provavelmente queremos chamartar
o menor número de vezes possÃvel com o maior número possÃvel de argumentos por vez.