Eu uso o rsnapshot para backups, que gera uma série de pastas contendo arquivos com o mesmo nome. Alguns dos arquivos estão com vínculo físico, enquanto outros são separados. Por exemplo, hourly.1/file1
e hourly.2/file1
pode estar fortemente vinculado ao mesmo arquivo, enquanto hourly.1/file2
e hourly.2/file2
são arquivos totalmente separados.
Quero encontrar a quantidade de espaço usada pela pasta, hourly.2
ignorando todos os arquivos que são links físicos para arquivos hourly.1
. Portanto, no exemplo acima, eu gostaria de obter o tamanho do arquivo2, mas ignore o arquivo1.
Estou usando o bash no linux e quero fazer isso na linha de comando da maneira mais simples possível, para que não haja grandes soluções gráficas ou outras soluções apenas para o sistema operacional.
fonte
hourly2
, seu comando executará a resposta errada.hourly.2
. Se eles forem copiados para lá, eles não terão links extras e meu comando funcionará. Se eles estiverem vinculados, obviamente falhará. Estou assumindo que novos arquivos de backup são copiados.Se você deseja especificamente o tamanho dos arquivos presentes abaixo,
hourly.2
mas não abaixohourly.1
, é possível obtê-lo um pouco indiretamente comdu
. Sedu
processar o mesmo arquivo mais de uma vez (mesmo sob nomes diferentes, por exemplo, links físicos), ele só conta o arquivo na primeira vez. Então, o que osdu hourly.1 hourly.2
relatórios têm parahourly.2
o tamanho que você está procurando. Portanto:(Funciona em qualquer sistema POSIX e na maioria das outras variantes do Unix. Supõe que o nome do diretório
hourly.1
não contenha nenhuma nova linha.)fonte
Como o @Gilles diz, como
du
conta apenas o primeiro de todos os hardlinks apontando para o mesmo inode encontrado, você pode fornecer diretórios seguidos:Ou seja, qualquer arquivo em 'hourly.2' que faça referência a um inode (também conhecido como arquivo "real") já mencionado em 'hourly.1', não será contado.
fonte
$ du -hcs dirA dirB
Incrivelmente compilações de BusyBox
find
vem sem-printf
suporte. Aqui está uma modificação na resposta do @ grebneke :fonte
Mais simples
Exemplo
fonte