mv arquivos de uma pasta para outra 40GB de cada vez

1

Eu tenho uma pasta /x/ com muitas subpastas e sub-arquivos. Eu preciso mover tudo em /x/ para /y/ , mas eu preciso fazer 40GB de cada vez. Eu estava fazendo mv /x/a* e, no dia seguinte, mv /x/b* , mas às vezes isso pode significar que muitos arquivos foram movidos ou muito pouco. Eu preciso de algo mais previsível. Eu gostaria de executar mv /x/* , mas de alguma forma limitá-lo a 40 GB do total de arquivos sendo movidos. Quais são minhas opções? Não que seja necessário, mas vou colocar isso em .sh script e usando um cron.

Obrigado =)

Editar: marquei a melhor resposta, mas não funciona no meu caso. Estou usando o ACD_CLI para fazer upload de meus backups e outros arquivos no Amazon Cloud Drive. O que eu fiz foi sobre o problema para trás. Meu problema era como faço upload de grandes quantidades de arquivos sem saturar minha largura de banda durante o dia. Eu trabalho em casa para reuniões no skype e quais não. A resposta foi ligar o QOS no meu roteador. Agora posso fazer o upload 24 horas por dia, sete dias por semana, e meu tráfego no Skype e outros precedentes sobre o envio de meu arquivo. Foi uma ótima solução marcada abaixo e sei que isso ajudará outras pessoas no futuro.

    
por Levi 10.04.2017 / 02:02

1 resposta

3

Crie um arquivo tar compactado de todos os arquivos que você precisa mover, divida o arquivo tar em pedaços de 40Gb e mova-os um de cada vez. Quando terminar, coloque os arquivos de volta em um arquivo tar grande e descompacte-o.

Um exemplo:

  1. crie um arquivo

    tar -zcvf file.tar.gz /directory/*
    
    • c criar
    • z compress
    • v verbose
    • f usa um arquivo como destino
  2. divida-os

        split -b 40M file.tar.gz
    

    (por padrão) ele criará arquivos começando com xaa, xab, xac de aproximadamente 40Mb cada.

  3. Mova-os para o novo local.

  4. Recrie o arquivo

     cat x* > file.tar.gz
    
  5. e descompacte ...

    tar xvfz file.tar.gz .
    
por Rinzwind 10.04.2017 / 09:11