Existe uma boa ferramenta de cópia de arquivos?

8

O diálogo de cópia está preso a 0 segundos do lado esquerdo ...

Sempre que tento copiar arquivos grandes para meu pendrive USB (em qualquer formato), ele sempre é interrompido no último momento. Termina após um longo tempo .

Eu procurei Pergunte ao Ubuntu para postagens semelhantes e tenho muitas , mas nenhuma deles têm boas soluções.

Então ... Existe alguma ferramenta de cópia alternativa como Teracopy no Windows?

Ou há alguma correção que eu possa fazer?

    
por Severus Tux 06.02.2016 / 16:36

6 respostas

6

Você não deve se preocupar muito com isso.
Talvez o pendrive USB seja de "qualidade inferior". A saída do diálogo referente ao horário é enganosa.

Outras ferramentas de cópia podem ter um comportamento de saída diferente,
mas eles não melhoram a velocidade de gravação da unidade USB.
O mais importante de tudo é que, finalmente, a ação de cópia é bem-sucedida.

O que você pode fazer é otimizar os agendadores de entrada / saída de discos.

Instale gksu (quando você ainda não o fez) para editar arquivos com gedit como root:

sudo apt-get install gksu  

Agora otimize a prioridade de todos os processos em execução para vários tipos de discos:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules

Cole as seguintes linhas neste arquivo vazio e salve o arquivo depois:

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

As alterações feitas são efetivadas após o reinício do sistema operacional.

Além disso, uma solução de cópia alternativa está disponível nos repositórios do Ubuntu:

sudo apt-get install dirdiff  

Agora, inicie a ferramenta em um terminal para comparar ou copiar arquivos e pastas:

dirdiff

dirdiff é uma GUI para diff e pode lidar com até cinco árvores. Ele exibe uma janela principal com uma lista de arquivos que são diferentes entre as árvores, com quadrados coloridos para indicar as idades relativas das versões. Um menu permite exibir as diferenças entre duas versões em outra janela. Outro menu permite copiar arquivos e pastas de uma árvore para outra.

Resumo: O mais relevante de tudo é a qualidade do disco USB e seus recursos de velocidade de gravação!

    
por cl-netbox 06.02.2016 / 16:56
8

A razão pela qual você vê a cópia acontecendo da maneira que você faz é que as gravações na unidade USB são assíncronas .

Quando você copia um arquivo, copia-o para o buffer da unidade USB, que está na RAM do seu computador. A primeira parte da cópia é muito rápida porque está indo apenas para o buffer. Os dados são liberados do buffer para a unidade USB a uma taxa muito mais lenta. Uma vez preenchido o buffer, ele precisa esperar que alguns dados sejam liberados para o disco antes que ele possa colocar mais no buffer, de modo que a cópia diminua a velocidade, efetivamente até a velocidade da unidade USB. Depois que todo o arquivo foi colocado no buffer, parece que o arquivo foi copiado. No entanto, nem todos os dados foram liberados do buffer para o próprio disco USB. Alguns programas de cópia apenas retornam e deixam que a descarga continue em segundo plano. Alguns esperarão até que todos os dados tenham sido liberados, e é por isso que permanecerão em 100% por algum tempo.

Você pode alternar o disco para o modo síncrono, o que significa que todos os dados são imediatamente gravados na unidade USB sem usar o buffer. Isso dará a impressão de uma transferência de dados mais suave, mas pode, na verdade, resultar em uma redução geral da velocidade.

Se você montar manualmente o disco a partir da linha de comando, poderá adicionar -o sync .

Se você montá-lo usando fstab, poderá adicionar a opção sync .

Se você confiar no Ubuntu para montá-lo quando acessá-lo na GUI, poderá modificar as opções de montagem a partir da linha de comando, uma vez que ele esteja montado:

sudo mount -o remount -o sync /media/yourname/diskname
    
por Majenko 07.02.2016 / 15:26
2

O problema é que o arquivo é lido e armazenado na memória completamente antes de ser completamente gravado na unidade de destino.

Isso não significa responder exatamente a pergunta, mas uma solução alternativa poderia estar usando pv da linha de comando no caso de arquivos grandes:

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

Sempre que alguém precisar copiar um arquivo grande:

pv /path/to/big_file >/media/username/usb/big_file

Deve-se notar que isso sofre de um problema de buffer indesejado similar quando usado em um tubo; se esse for o caso, uma correção é limitar a taxa de transferência a algo ligeiramente acima da velocidade de gravação da unidade de destino:

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
    
por kos 06.02.2016 / 20:12
1

Existem várias alternativas. Você poderia usar a abordagem de linha de comando:

cp *source* *target*

onde source é o arquivo que você deseja copiar e destino é o arquivo ou pasta para o qual você deseja copiar. Outras opções podem ser encontradas no link

    
por Elder Geek 06.02.2016 / 16:57
0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

Isso lerá seu arquivo if , gravará no arquivo of em blocos de 64 MiB e aguardará até que cada pedaço seja gravado antes de iniciar o próximo. O utilitário que você está usando é mais provável apenas lendo o arquivo na memória e, em seguida, enviando-o para o disco (e não há como dizer quantos bytes de cada vez está fazendo isso). O cache de gravação pode estar no próprio dongle usb embora ... Então a velocidade de 60 MiB por segundo que você está obtendo é a taxa de transferência através da conexão USB para o cache interno do dongle. Mas isso não é provável a menos que seja um dongle USB3. USB2 não tem throughput suficiente para lidar com 60MiB por segundo.

    
por Dmitry Rubanovich 07.02.2016 / 01:12
0

Não há necessidade de todos os itens acima. Simplesmente abra uma janela de terminal quando a transferência estiver mostrando 0% à esquerda e digite sync . Nas páginas man, o comando sync libera os buffers do sistema de arquivos, mas é claro que apenas liberará aqueles para os quais você possui os direitos. Se você quiser liberá-los, digite sudo sync

    
por Scooby-2 10.02.2016 / 22:27

Tags