Como armazenar uma pasta grande em um único arquivo sem compactação

11

Eu quero pegar uma pasta de 78GB e armazená-la em um único arquivo (para carregar em um serviço de nuvem), como se eu estivesse compactando-a em um arquivo, mas não quero nenhuma compactação (não tenho que muito tempo de CPU disponível). Existe alguma maneira que eu possa realizar isso, talvez um comando de terminal que eu não conheça?

    
por Chris M. 18.04.2015 / 22:27

2 respostas

19

Use tar : tar -cf my_big_folder.tar /my/big/folder

Restaurar o arquivo com tar -xf my_big_folder.tar -C /

-C mudará para o diretório raiz para restaurar seu arquivo, pois o arquivo criado acima contém caminhos absolutos.

EDIT : Devido ao tamanho relativamente grande do arquivo, seria melhor enviá-lo diretamente para o local final, usando SSH ou um ponto de montagem do recurso / pasta do cloud. . Por exemplo, como Cole Johnson sugere :

tar -cf /network/mount/point/my_big_folder.tar /my/big/folder

ou

tar -c /my/big/folder | ssh example.com "cat > my_big_folder.tar"

EDITAR : como O Blacklight Shining também sugere , se você quiser evitar caminhos absolutos, você pode mudar para o pai da pasta grande e tar a partir dali:

tar -cf /network/mount/point/my_big_folder.tar \
    -C /my/big/folder/location the_big_folder

ou

tar -cC /my/big/folder/location the_big_folder | \
ssh example.com "cat > my_big_folder.tar"

Reflexões pessoais

Incluir caminhos relativos ou absolutos é uma questão de preferência pessoal.

Existem casos em que caminhos absolutos são óbvios, por ex. para uma restauração em uma situação de recuperação de desastre. Para projetos locais ou coleções, é comum arquivar uma árvore de diretórios do pai da pasta desejada, para evitar a confusão do diretório atual, caso o arquivo seja acidentalmente descompactado no local. Se big_folder estiver em algum lugar no fundo de uma hierarquia padrão * NIX , pode fazer algum sentido começar arquivando a primeira pasta não padrão em que big_folder se desvia e sua árvore de diretórios de lá.

Finalmente - indo pedante aqui - tar membros do arquivo são sempre relativos desde a) eles podem ser restaurados em qualquer diretório e b) tar remove o principal / ao criar um arquivo. Eu pessoalmente costumo usar sempre -C ao descompactar um arquivo.

    
por 18.04.2015 / 22:33
2

Alternativa: cpio

(cd /my/big/folder && find . -depth -print0 | cpio -0o > myfolder.cpio)

Descompactando para o diretório atual:

cpio -id < myfolder.cpio

Advertências:

  • Se usar find /my/big/folder em vez de cd , o arquivo conterá caminhos completos e a extração tentará segui-los;
  • Arquivos grandes (> 2 GB) podem ser um problema;
por 19.04.2015 / 12:05