copie todos os arquivos em uma partição para uma pasta em outra partição e atualize os links simbólicos

2

Eu tenho duas partições:

  • /dev/sda está montado como /
  • /dev/sdb está montado ias /stuff

Eu quero copiar tudo de / para /stuff/backup , mas também quero que os links simbólicos sejam atualizados para / em /stuff/backup .

Por exemplo, se eu tenho um link simbólico assim:

/path/to/some/link -> /path/to/the/real/file

Depois do backup, ele deve ficar assim:

/stuff/backup/path/to/some/link -> /stuff/backup/path/to/the/real/file

Eu pesquisei um pouco, mas não consigo descobrir isso.

    
por IMTheNachoMan 15.07.2017 / 06:12

1 resposta

3

A partir da discussão, IMO, tar é a melhor ferramenta, pois preservará os links. Eu também sugiro fazer isso de um CD ao vivo. Você montaria sua partição raiz do ubuntu e gravaria nela.

Se você estiver fazendo backup de um banco de dados, use as ferramentas de banco de dados, ou seja, mysqldump

De um sistema em execução (não ao vivo usb):

OBSERVAÇÃO: revise estas exclusões antes de executar este comando, veja abaixo para detalhes.

As exclusões mínimas seriam /proc /tmp /mnt /dev e /sys Os outros são opcionais, mas reduzirão significativamente o tamanho do seu backup

cd / # THIS CD IS IMPORTANT THE FOLLOWING LONG COMMAND IS RUN FROM /
tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \ 
--exclude=/media \ 
--exclude=/var/log \
--exclude=/var/cache/apt/archives \
--exclude=/usr/src/linux-headers* \ 
--exclude=/home/*/.gvfs \
--exclude=/home/*/.cache \ 
--exclude=/home/*/.local/share/Trash /

Isso comprimirá o arquivo, é totalmente portátil e está localizado em /backup.tar.gz

O que as opções significam: de link

  

tar - é o comando que cria o arquivo. Ele é modificado por cada   carta imediatamente seguinte, cada um é explicado abaixo.

     

c - crie um novo arquivo de backup.

     

v - modo verboso, o tar irá imprimir o que está fazendo na tela.

     

p - preserva as permissões dos arquivos colocados no arquivo para   restauração depois.

     

z - compacta o arquivo de backup com 'gzip' para diminuí-lo.

     

f - especifica onde armazenar o backup, backup.tar.gz é   o nome do arquivo usado neste exemplo. Ele será armazenado na corrente   diretório de trabalho, aquele que você definiu quando usou o comando cd.

O \ apenas continue o comando na próxima linha e eu adicionei-os para maior clareza.

O --exclude deve ser evidente, mas exclui esses diretórios.

Você pode usar a opção --one-file-system em vez de todas as exclusões para / proc, / sys, / mnt, / media, / run e / dev, no entanto, se você tiver um / boot separado ou / home (ou outro partição) você precisa adicioná-lo ao arquivo.

Você pode excluir diretórios dos quais não precisa, ou seja, não ter edições. /usr/share ou similar.

Para ver o conteúdo, veja Como posso visualizar o conteúdo do arquivo tar.gz sem extrair da linha de comando?

Você pode ver o conteúdo do arquivo com vim / gvim e listar diferenças com zdiff

EDITAR : A partir dos comentários "Ele mostra a meio caminho mostrando: / lib / plymouth / themes / / lib / plymouth / themes / ubuntu-text / tar: /: arquivo alterado à medida que lemos depois de 10 minutos em um SSD mini-PCIe (canal Sata II). Isso levará algum tempo para ajustar "

Isso acontece porque o sistema de arquivos está em uso, portanto, se houver alterações gravadas no disco durante o tar, você obterá esses tipos de mensagens. Esse tipo de problema pode ser evitado excluindo o máximo possível o arquivo tar e / ou executando o tar de um CD / USB ativo

Além disso, a partir dos comentários, outros candidatos à exclusão são:

~ / .cache # Esses arquivos são completamente desnecessários e, na verdade, você pode recuperar a qualquer momento o espaço em disco, excluindo este diretório.

/ usr / src / linux-headers * # Novamente, uma grande quantidade de dados que você não precisa.

~ / .local / share / Trash # Revise e exclua a lixeira ou exclua este diretório

/ media # Terá, por exemplo, parções do Windows

/ var / run / user / $ USER / ... que é um link simbólico para / run, portanto, --exclude = / run também. #Isso terá dispositivos removíveis, como flash driver e dispositivos Android, portanto, provavelmente, podem ser excluídos.

    
por Panther 16.07.2017 / 18:42