Criando tar dos arquivos dentro do intervalo de datas específico

1

Estou com problemas para obter meus dados da minha hospedagem compartilhada.  Eu tenho aproximadamente 20 GB de pasta que contém cerca de 40.000 imagens.  Eu tentei arquivar essa pasta dividindo arquivos:

tar -cvpj 'home/public_html/images/'/ | split -d -b 100m - images.tar.bz2.

Ele está funcionando bem, mas o problema é que o processo demora muito e acho que meu provedor de hospedagem está eliminando o processo no meio do processo de arquivamento.

Então, eu não pude usar arquivos arquivados, porque quando eu tento extraí-lo é dar mensagem corrompida, quando eu executo novamente este comando ele tenta arquivar novamente todos os arquivos e sobrescrevendo os arquivos anteriormente arquivados.

E agora eu decidi arquivá-lo por sua data, por exemplo, cada arquivo contém apenas os arquivos que são enviados em um mês. Infelizmente, eu tentei alguns comandos, mas não consegui encontrar um caminho.

Eu encontrei a pergunta: Como você só arquivos tar em um diretório com base em um nome de arquivo específico? mas eu preciso com intervalo de datas específico.  Como posso arquivar / compactar e filtrar arquivos por seu padrão de data? Ou existem outras maneiras de obter meus arquivos de lá? Eu tentei usar o cPanel, mas ele pulou essa pasta.

    
por Jama 08.03.2013 / 21:16

1 resposta

6

Acho que eu faria isso usando find e depois passaria essa entrada para o tar. Usando seu exemplo, vamos supor que você queira arquivos entre 60 e 90 dias de idade.

find /home/public_html/images -type f -daystart -mtime -90 -and -mtime +60 -print0 | xargs -0 tar -Ajf images_60-90.tar.bz2

Isso listará todos os arquivos que foram modificados pela última vez há mais de 60 dias e há menos de 90 dias e os colocará no tarball chamado images_60-90.tar.bz2 . Meu uso de -print0 e xargs é principalmente para proteger-se de arquivos com espaços nos nomes, e no caso de haver tantos arquivos que eles ultrapassam o comprimento máximo da linha de comando (que pode ser encontrado executando o comando% código%). Eu não testei esse comando, e não sei o que acontece se você usar a opção append quando o arquivo não existir, então você pode ter que fazer mais ajustes.

Se, no entanto, você souber que não há espaços em nenhum nome de arquivo, e haverá menos arquivos que o valor de ARG_MAX, você pode simplesmente usar um pouco seu comando.

find /home/public_html/images -type f -daystart -mtime -90 -and -mtime +60 tar -cjf images_60-90.tar.bz2

    
por 08.03.2013 / 21:42