Copie centenas de milhares de arquivos Mac para NAS

7

Estou tentando transferir minha biblioteca do Aperture para o NAS. Contém algumas centenas de milhares de arquivos (bem pequenos).

Depois que o OS X termina de copiar os arquivos grandes, o tempo estimado da operação de cópia passa de 2 horas para 4 a 5 dias (e aumenta).

Eu sei que uma solução poderia ser tar-los e copiar o tarball, mas o problema é que a biblioteca que eu quero copiar é de cerca de 80GB e tenho apenas 10GB no meu Mac.

Alguma idéia de como copiá-los em tais condições?

OgreSwamp
fonte

Respostas:

7

O problema provavelmente é que você está trabalhando com muitos arquivos pequenos e a maioria das ferramentas de cópia tem uma sobrecarga por arquivo. É possível tarar os arquivos, enviar os dados para o seu destino e descompactar o arquivo na outra extremidade, sem nunca criar um arquivo tar no sistema.

tar cf - "~/Pictures/Aperture Library" | (cd "/Volumes/NAS/" && tar xf -)

A desvantagem disso é que você não terá nenhum tipo de medidor de progresso, mas deve ser significativamente mais rápido do que uma cópia mais convencional.

evilsoup
fonte
Awesome, pensei que é possível criar um pipe com tar.
OgreSwamp
4
Você poderia canalizar pv para obter uma indicação do que está acontecendo.
slhck
5

Você pode usar o rsync ferramenta de linha de comando para fazer uma sincronização unidirecional de seus arquivos. O caminho rsync Obras facilita a interrupção do processo se você não tiver paciência para isso - você pode facilmente retomá-lo mais tarde. Somente os arquivos que ainda serão transferidos serão copiados.

Você precisa abrir Terminal.app e, em seguida, ligue rsync igual a:

rsync -avh --progress "~/Pictures/Aperture Library" "/Volumes/NAS/"

Aqui, o primeiro caminho está apontando para sua biblioteca, que por padrão deve estar sob As fotos . Se não tiver certeza, você pode arrastar e soltar a biblioteca para a linha de comando do terminal e ela preencherá o caminho automaticamente para você. O mesmo vale para o caminho do seu NAS.

o -a opção ativa o modo de arquivo, que define alguns padrões, incluindo cópia recursiva. -v tornará o comando mais detalhado. -h ativa os tamanhos de arquivos legíveis por humanos.

O Rsync mostrará um medidor de progresso. Se você quiser cancelar o processo, pressione Ctrl C . Você pode chamar o comando novamente para ter rsync continuar.

slhck
fonte
Obrigado. Mas até onde eu sei, a única vantagem será que eu possa continuar rsync mais tarde. Mas eu não estou disposto a esperar 4 dias para copiar 80GB.
OgreSwamp
Pode haver uma solução para "tar" para rede, não para o meu SSD com 10GB restantes. Se eu posso copiar pasta como um arquivo - ele será copiado em algumas horas.
OgreSwamp
Eu acho que a sobrecarga ao usar o Finder é maior. Além disso, o cálculo pode ser bastante desligado. A solução do evilsoup é boa.
slhck
O problema são pequenos arquivos. Eu tentei rsync e ainda gasta 1 segundo para copiar cerca de 10-20 arquivos (mesmo se seu tamanho é de cerca de 1K). Isso realmente diminuiu o processo de cópia. Espero que o tubo de alcatrão vai ajudar a cpu-lo (não há indicador de progresso, mas parece que ele copia mais rápido (já verifiquei o que foi copiado no NAS)
OgreSwamp
Além atrasado para isso, mas o que parecia ter me ajudado está usando o -W opção que copia o arquivo inteiro de uma vez (eu também tive a questão de ter muitos arquivos menores)
Jann
0

se o dispositivo externo suporta shell ssh completo, você pode fazer:

tar cf - /your/dir|ssh -C 'tar xf - -C /directory/where/you/unpack'

não é recomendado usar a opção -c para tar porque você tem muitos arquivos. imprimi-lo causar degradação de velocidade. flag -C para ssh é necessário para a compressão on the fly na rede. Um pequeno pedaço de dados faz com que pequenos dados sejam criptografados / descriptografados, o que aumenta a velocidade. mas se ainda for lento, você pode alterar o chiper crypt de 3des para twofish ou se for possível 1des. o último não é seguro, mas é o mais rápido.

Caso contrário, você pode usar o rsync, mas o rsync deve ser instalado no dispositivo externo. veja o homem. O rsync pode transportar dados pelo servidor rsync ou pelo ssh.

Znik
fonte