Mais uma questão vem à minha mente, onde cat
vs. cp
faz uma diferença significativa:
Por definição, cat expandirá arquivos esparsos, preenchendo as lacunas com bytes zero "reais", enquanto pelo menos o cp pode ser informado para preservar os buracos.
Arquivos esparsos são arquivos em que as sequências de zero bytes foram substituídas por metadados para preservar o espaço. Você pode testar criando um com dd e duplicá-lo com as ferramentas de sua escolha.
-
Crie um arquivo esparso (mudando para / tmp antecipadamente para evitar problemas - veja nota final):
15> cd /tmp 16> dd if=/dev/null of=sparsetest bs=512b seek=5 0+0 records in 0+0 records out 0 bytes (0 B) copied, 5.9256e-05 s, 0.0 kB/s
-
dimensione - não deve ocupar nenhum espaço.
17> du -sh sparsetest 0 sparsetest
-
copie-o com cp e verifique o tamanho
18> cp sparsetest sparsecp 19> du -sh sparsecp 0 sparsecp
-
agora copie-o com o gato e verifique o tamanho
20> cat sparsetest > sparsecat 21> du -sh sparsecat 1.3M sparsecat
-
experimente suas ferramentas preferidas para verificar o comportamento delas
-
não se esqueça de limpar.
Nota final de cautela: Experimentos como esses têm a chance inerente de aumentar sua fama com seu administrador de sistema local, se você os estiver fazendo em um sistema de arquivos que faz parte de seu plano de backup, ou crítico para o bem-estar do sistema. Dependendo de sua escolha de ferramenta para backup, ele pode acabar precisando de mais mídias de fita do que jamais considerou possível fazer backup de um arquivo de 0 byte que é expandido para terabytes de zeros.
Outros arquivos que não podem ser copiados nem com cat nem com cp incluem arquivos especiais de dispositivos, etc. Depende da sua implementação da ferramenta de cópia, se for capaz de duplicar o nó do dispositivo, ou se, em vez disso, copia o seu conteúdo de forma alegre.