Eu trabalho com pastas que contêm muitos arquivos, como 100.000 ou até 1.000.000 de arquivos por pasta. Quando tento mover o conteúdo de uma pasta para outra, meu computador sempre fica preso. Mesmo quando o processo parece concluído, não consigo ver o conteúdo de nenhuma pasta porque o nautilus parece completamente congelado e tenho que forçar meu computador a reiniciar. Notei que isso acontece também quando tento mover 10.000 arquivos.
Isso é um problema do meu computador ou é normal ao trabalhar com esses números?
Alguma maneira inteligente de realizar essa transferência de arquivos?
cp -R SRC/ DEST/
)gvfs-copy
(dogvfs-bin
pacote) pode ser mais rápida quecp
.Respostas:
Talvez considere usar um método puro de linha de comando para transferir arquivos de quantidades muito grandes, sem dúvida você descobrirá que o processo é substancialmente mais rápido do que usar uma GUI.
Existem muitas maneiras diferentes de fazer isso, mas o seguinte funcionou com rapidez, segurança e eficiência no meu sistema:
Alguma explicação para este comando:
<destination>
do meu exemplo. Obviamente, modifique isso para atender às suas próprias necessidades e deixar de fora os colchetes.Permutações infinitas são possíveis, mas isso deve funcionar bem e com muito mais eficiência do que a GUI. Uma permutação, por exemplo: se você quiser mover apenas arquivos pdf, poderá executar:
O uso de
xargs
abre muitas possibilidades, particularmente com a movimentação de um número tão grande de arquivos. Muitas, muitas possibilidades ....Problemas potenciais:
Há pelo menos duas armadilhas em potencial a serem ponderadas, graças aos comentários abaixo por esses pensamentos:
mv
ainda moverá os arquivos para lá! Tenha cuidado aqui ...-t
opção (--target-directory
) estiver ausente e a pasta de destino for realmente um arquivo, você moverá um arquivo e falhará no restante.mv
tem 2 usos: renomear fonte para destino ou mover fonte para diretório . Mais uma vez, tenha cuidado ...fonte
find . -maxdepth 1 -type f -exec mv -t test {} +
?-name...
pedaços estranhos, mas deixeixargs
no lugar.-t
sinalizador? Acho que todos os arquivos seriam "movidos" para um único arquivo chamadotest
, resultando na perda de todos os seus arquivos, exceto um.) Acho que prefiro umrsync
seguido por, Se tudo deu certo, arm
. No entanto, posso imaginar cenários em que essa verificação não possa ser automatizada.rsync
exemplo escrito como resposta?mv dir1/* dir2
, e apenas recorrerfind -exec
se houver algum problema ou se precisar evitar a correspondência de pastas com o seu glob. (Embora dependendo de suas convenções de nomenclatura, muitas vezes*.*
irá corresponder a maioria dos arquivos, mas não a maioria dos diretórios, já que é comum ter um.extension
em arquivos, e comum a não ter um.
em nomes de diretório)Eu tive uma experiência semelhante antes, é normal quando se lida com um grande número de arquivos. Eu estava tendo uma grande coleção de folhas de dados em PDF (peças eletrônicas).
As ferramentas da GUI verificam alguns detalhes do arquivo e metadados (ícone / miniatura, tamanho, ...); nesse caso, será um grande negócio. Mesmo no Icon View e sem miniaturas, eles congelam, pois a maioria deles não foi projetada para esse caso extremo. A ferramenta GUI tenta carregar ícones de apresentação para todos os arquivos / pastas no diretório, mesmo esses itens não são visíveis para o usuário na parte da tela atual. A classificação também faz parte do problema e não há como evitá-lo.
locate
para pesquisa rápida em vez defind
.Para operação de movimentação, use
mv
no terminal (as ferramentas da GUI são lentas porque tentam atualizar a exibição periodicamente).Se estiver na mesma partição, o comando alterará apenas os ponteiros no índice do sistema de arquivos. Caso contrário, será uma operação dupla (copiar e excluir). Isso vai ser caro.
Há apenas um caso em que posso ajudar: se você estiver copiando esses arquivos várias vezes e eles não forem atualizados. Como fiz quando compartilho minha coleção com os amigos, cada vez que tento copiar, leva uma década. (Isso é mais útil apenas com arquivos de tamanho pequeno)
fonte
Se você estiver procurando por uma solução que ofereça os benefícios das operações da linha de comando com o sentimento e a flexibilidade da GUI combinados, recomendo
mc
( comandante da meia-noite ).É um gerenciador de arquivos visual baseado em ncurses - você tem uma exibição em dois painéis nos seus arquivos e um menu disponível. É possível o uso do mouse, mesmo sobre ssh. Você pode navegar pelo seu fs, inspecionar arquivos com o visualizador de arquivos, filtrar de acordo com os critérios imediatamente e executar as operações de copiar ou mover na linha de comando.
É um clone do programa Norton commander do DOS, popular em meados dos anos oitenta. Funciona bem sempre que a GUI começa a se tornar não confiável para mim e ideal para o seu propósito.
fonte
Encontrei problemas semelhantes - estava testando minha configuração de RAID e, ao fazer grandes transferências (por exemplo, mais de 100.000 arquivos e 1-2 TB de dados de uma só vez), parece que as transferências começam com bastante rapidez - digamos ~ 200MB / s, rapidamente diminua para um nível razoável de ~ 90-120 MB / s (possivelmente após consumir algum armazenamento em cache flash nas unidades). Depois de 20 a 30 minutos, a operação começa gradualmente a cair para um platô muito mais baixo ~ 30 a 40 MB / s, pior ao lidar com arquivos pequenos - levando uma operação de 4-5 horas para mais perto de 15 horas.
Passei algum tempo tentando diagnosticar - por exemplo, possíveis falhas na unidade. Apesar de tentar ferramentas diferentes - linha de comando, nautilus, não consegui manter uma taxa de transferência decente para operações de cópia muito grandes.
O que funcionou melhor para mim foi usar o comandante da meia-noite e, sempre que a cópia ficava lenta, pausava a operação até que a luz do disco rígido se apagasse depois que todas as operações pendentes eram apagadas - normalmente um minuto mais ou menos - e desinteressava o MC novamente e voltaria a um ritmo decente por mais 20 a 30 minutos. Bastante irritante embora.
fonte