Pelo menos 3 coisas diferentes podem explicar por que você transferiu mais dados do que poderia ter sido armazenado no STB:
-
Arquivos esparsos : os arquivos sempre parecem conter uma seqüência contínua de bytes desde o início do tempo até o comprimento atual do arquivo. Mas você pode criar um arquivo (geralmente binário) e gravar somente em determinados intervalos de byte. Nesse caso, os buracos vazios entre esses intervalos de bytes (que nunca foram gravados) parecem conter bytes de valores 0 quando lidos. Os sistemas de arquivos geralmente percebem quando o software cria esses "furos" e não os armazena no disco. Dessa forma, você pode criar um arquivo de byte de 1000000, escrever um único byte na posição 999999 e observar que o arquivo tem quase um megabyte de tamanho, mas consome apenas um único bloco de espaço em disco.
Certos tipos de banco de dados ou arquivos de índice podem ser geralmente esparsos, se o formato do arquivo exigir que certas partes do arquivo estejam em determinados byte offsets, mas nem tudo esteja preenchido.
As copiadoras de arquivos não podem dizer que um arquivo estava esparso no local de início, portanto, apenas leem todo o arquivo como um fluxo de bytes da fonte e gravam o mesmo fluxo de bytes no destino. Como cada byte do arquivo é gravado no destino, o sistema de arquivos do destino não cria um arquivo esparso.
Se você suspeitar que arquivos esparsos no conjunto de dados estão causando um aumento no tamanho, experimente a opção
--sparse
para rsync . Ele oportunisticamente criará arquivos esparsos no destino sempre que houver grandes execuções de bytes de valores 0 na origem. (Ele não pode dizer se o arquivo de origem era realmente esparso, apenas potencialmente disperso, mas isso torna o destino escasso de qualquer maneira.)Seu STB provavelmente contém um banco de dados interno de algum tipo que pode ser implementado com um ou mais arquivos esparsos. Procure por arquivos muito grandes no sistema de arquivos de origem, em arquivos específicos que são maiores do que a quantidade de armazenamento no STB. Aqueles têm como escassos.
-
Coisas montadas em mais de um lugar . Sistemas embarcados como STBs frequentemente têm um layout de sistema de arquivos estranho devido ao fato de que eles podem ter uma mistura de partições somente leitura e leitura-gravação que fazem parte da distribuição de software e dos dados do usuário, respectivamente, diferentes tipos de sistemas projetados para uso em flash bruto (não dispositivos de bloco), partições de bootloader, sistemas de arquivos montados em união que permitem implementação muito fácil de recursos de redefinição de fábrica, ramdisks para sobreviver à perda de energia sem corrupção do sistema de arquivos, etc ... Como resultado, o mesmo conteúdo pode aparecer montado em vários locais independentes diferentes (por exemplo, na forma original de fábrica, como uma montagem de união, ligar montagens para outros fins ...)
Para quebrar essa porca, o comando
df
pode ser útil, embora alguns fabricantes de sistemas incorporados façam coisas que são estranhas o suficiente para que não fique claro o que está acontecendo na saídadf
. Mas você deve pelo menos ser capaz de ver quais sistemas de arquivos existem e quão cheios eles são. -
Links físicos : o FTP não reconhece links físicos, portanto, se você pedir para copiar dois links para o mesmo arquivo, ele copiará o arquivo duas vezes e ocupará o dobro do espaço disponível. o lado do destino. Se o arquivo tiver mais de dois links, multiplique-o de acordo.
Para ajudar, tente a opção
--hard-links
do rsync.
Observe que, em dois dos três casos, recomendei que você use o rsync para copiar os arquivos. Isso só é possível se você tiver acesso shell ao STB e o rsync estiver instalado (ou você puder instalá-lo) ou se o STB oferecer rsync como um protocolo de transferência de arquivos (um STB provavelmente não oferece, mas alguns dispositivos NAS vendidos para casa use do).
Se você puder usá-lo, o rsync é uma ótima maneira de copiar grandes quantidades de dados de um sistema para outro. Não só tem opções para resolver dois dos três problemas mencionados acima (ou talvez todos os 3? Olhe para --one-file-system
), mas é muito útil para resumir uma cópia interrompida.