Como posso excluir manualmente backups antigos para liberar espaço para o Time Machine?

224

Uso um Time Capsule para backup e agora quero que a unidade faça backup de dados de um Mac extra. Mas a unidade está cheia de backups antigos do Mac 1. Simplesmente, não há espaço suficiente disponível para o backup do Mac 2.

Recebo esta mensagem de erro ao executar o backup do Time Machine:

O Time Machine não pôde concluir o backup. Esse backup é muito grande para o disco de backup. O backup requer 28,68 GB, mas apenas 626,2 MB estão disponíveis.

O Time Machine precisa de espaço de trabalho no disco de backup, além do espaço necessário para armazenar backups. Abra as preferências do Time Machine para selecionar um disco de backup maior ou diminua o backup excluindo arquivos.

Sei que o próprio Time Machine pode remover backups antigos quando precisar de mais espaço. Mas, nesse caso, ele não remove nenhum backup do Mac 1 para liberar espaço para o Mac 2.

A questão é: como faço manualmente?

Jesper Rønn-Jensen
fonte
3
Dado o quão baratos são os discos externos, eu ficaria tentado a comprar um e usá-lo em sua máquina extra. Prefiro os elementos: amazon.com/Western-Digital-Elements-External-WDBAAU0010HBK-NESN/…
james.garriss
2
@ james.garriss bom ponto :) No entanto, eu ainda tenho que trocar discos na minha cápsula do tempo :)
Jesper Rønn-Jensen
11
Alguém sabe se existe uma maneira (sem escrever um script) de pedir à TM para manter apenas 1 backup por mês para backup com idade superior a 1 ano?
Gamov
2
Você não pode criar 2 partições diferentes no seu disco TM e escolher uma partição diferente para cada mac?
Pierre Watelet 27/05

Respostas:

235

Cuidado com o sudo e certifique-se de escolher os arquivos corretos do Mac, pois não há desfazer ou confirmar o seguinte comando:

sudo tmutil delete /Volumes/drive_name/Backups.backupdb/old_mac_name

O comando sudo precisa da sua senha (e não ecoará na tela, digite-a e faça uma pausa para ter certeza de que está namorando os arquivos corretos antes de pressionar enter). Se você quiser estar mais seguro, poderá escolher um instantâneo para excluir primeiro, para garantir que o comando funcione conforme o planejado. Isso é bom, pois pode levar horas para limpar alguns conjuntos de backup maiores e você deseja deixar o Mac confiante de que está excluindo o armazenamento de informações correto.

Você pode usar a tmutilferramenta para excluir backups um por um.

sudo tmutil delete /Volumes/drive_name/Backups.backupdb/mac_name/YYYY-MM-DD-hhmmss

Desde que tmutilfoi introduzido com o Lion, isso não funcionará em versões anteriores do sistema operacional.

Se você deseja obter o diretório atual de backups (pode haver vários destinos definidos e apenas um será "atual")

sudo tmutil machinedirectory
bmike
fonte
4
Funcionou como um encanto. Eu tinha backups antigos enormes e desconectados do conjunto de máquinas do tempo original devido a alterações no disco rígido. Não consegui excluí-los com o sudo rm (que é maluco), mas isso funcionou. Obrigado!
David Pisoni
2
@drfrogsplat sim, mas ao trabalhar com backups antigos é comum o mac original estar morto. No meu caso, estou tentando liberar espaço na minha unidade de backup para que eu possa usá-lo para fazer backup de um novo mac.
amigos estão dizendo
5
@square_eyes Não é assim que a exclusão de arquivos com links físicos funciona. Digamos que haja 100 intervalos com o mesmo arquivo. O arquivo existe no disco uma vez, mas a contagem de links é 100. Quando você exclui um, a entrada do diretório desaparece onde você excluiu e a contagem de links agora é 99. Somente quando a contagem de links chega a 0 é que o próprio arquivo é excluído. Todas as outras exclusões apenas removem uma entrada de diretório.
bmike
5
Não é necessário excluir os backups um por um. Você pode digitar sudo tmutil delete e arrastar todos os backups que deseja excluir para a janela Terminal. @drfrogsplat a página de manual menciona que este comando pode excluir backups criados por uma máquina diferente.
pointum
2
@pointum está correto. Além disso, se você quiser permanecer no terminal, poderá usar curingas como: 'sudo tmutil delete 2015- *' Pode ser um processo lento, especialmente com discos giratórios, portanto, a exclusão de vários arquivos é fundamental para a sanidade e a eficiência.
Matt Dressel
81

A maneira mais fácil é:

  1. Digite a máquina do tempo (no Mac cujo backup você deseja excluir)
  2. Vá para o ponto no tempo que deseja excluir
  3. Selecione o ícone que se parece com uma roda dentada no localizador e escolha 'Excluir backup' (em Mavericks: clique com o botão direito na janela do localizador e escolha 'Excluir backup')

Isso garante que o catálogo de backup permaneça preciso e a integridade dos seus dados permaneça intacta.

Dudeas
fonte
3
O @drfrogsplat está muito correto que o uso da GUI fornecida pela Apple é a melhor maneira (funciona em todas as versões) para excluir um backup e é menos propenso a erros, pois há vários comentários visuais (se você observar atentamente) e uma verificação antes de entrar sua senha para ter certeza de que a exclusão é permanente.
Bmike
11
Eu não vejo um item de backup de exclusão em mavericks no menu cog
brainray
@brainray eu postei resposta para mavericks
Inder Kumar Rathore
11
Exceto quando se faz um parcial excluir (por qualquer motivo) esquece o backup parcial está lá para que você possa não só então excluí-lo comtmutil delete
Jeroen Wiert Pluimers
11
Isso não funciona se você tiver o problema "Aguardando ...". apple.stackexchange.com/questions/207787/… A espera nem sempre funciona.
Almo
39

Para Mavericks / Yosemite

  1. Entrar na máquina do tempo
  2. Selecione o backup
  3. Clique com o botão direito do mouse no backup (na janela do localizador)
  4. Selecione 'Excluir backup'

Ele pedirá a senha e você estará pronto

insira a descrição da imagem aqui

Inder Kumar Rathore
fonte
Clique com o botão direito do mouse no backup: onde?
brainray
Você será mostrado uma janela do Finder, clique direito no meio da janela e você será mostrado uma lista de opções
Inder Kumar Rathore
13
Vale ressaltar que o Time Machine não executará as exclusões e não solicitará sua senha até você sair do Time Machine. E o procedimento para sair do Time Machine depois de selecionar arquivos e pastas para exclusão também não é óbvio: você deve clicar cancelno canto inferior esquerdo. (Aparentemente, a coisa que você está "cancelamento" é a restauração de arquivos; exclusões são, aparentemente, não considerada cancelada quando você faz isso.)
mhucka
3
Isso também funcionou para mim de outra máquina. Meu MBP antigo ficou frito, o meu novo possui diferentes nomes e partições do disco rígido, etc. Finalmente, ele preencheu meu disco da TM e não quero excluir todos os backups da minha máquina antiga. Então, segure Option, clique na máquina do tempo na barra de menus e em "Procurar outros discos de backup". Consegui acessar o primeiro backup antigo conectando uma unidade com o mesmo nome. De lá, eu poderia passar para a estrutura antiga da unidade e usar esta dica para excluir alguns backups realmente antigos.
Mark
Ou clique na pasta do dispositivo raiz na barra lateral (para que a partição antiga e a estrutura da unidade apareçam). No meu caso "Dispositivos -> Macbook Pro"
Mark
18

Esse script encontrará automaticamente o backup mais antigo da TM para o seu computador, informará qual é o backup mais antigo e mais recente e fornecerá uma solicitação para excluir o backup mais antigo. Você deve inserir Ye digitar sua senha de administrador para excluí-la.

script bash:

COMPUTER_NAME=$(scutil --get ComputerName)
NBACKUPS=$(tmutil listbackups | grep "$COMPUTER_NAME" | wc -l)
OLDEST_BACKUP=$(tmutil listbackups | grep "$COMPUTER_NAME" | head -n1)
LATEST_BACKUP=$(tmutil latestbackup)
echo Latest backup: $LATEST_BACKUP

if [[ -n "$LATEST_BACKUP" && "$LATEST_BACKUP" != "$OLDEST_BACKUP" ]]; then
     echo -n "$NBACKUPS backups. Delete oldest: ${OLDEST_BACKUP##*/} [y/N]? "
     read answer
     case $answer in
         y*)
             echo Running: sudo tmutil delete "$OLDEST_BACKUP"
             sudo time tmutil delete "$OLDEST_BACKUP"
             ;;
         *)
             echo No change
             ;;
     esac
 else
     echo "No backup available for deletion"
 fi
user36971
fonte
Em resumo, esse script encontrará automaticamente o backup mais antigo da TM para o seu computador, informará qual é o backup mais antigo e mais recente e fornecerá uma solicitação para excluir o backup mais antigo. Você deve inserir Ye digitar sua senha de administrador para excluí-la.
Hengjie
3
Observe que isso não reduzirá automaticamente o tamanho dos seus arquivos de backup esparsos. Você vai ter que entrar e executarsudo hdiutil compact /path/to/disk-image
Hengjie
14

Eu tenho me perguntado exatamente isso, e as respostas aqui certamente ajudaram. No entanto, falta um aspecto que pode ser um novo "detalhe" de implementação que não existia quando essa pergunta foi respondida.

tmutil deletede fato exclui os backups, mas na verdade não recupera o espaço que ocupava, pelo menos não de maneira garantida. Passei cerca de 2 dias inteiros excluindo backups de mais de 2 anos atrás, o que de acordo com a mensagem final de conclusão era de aprox. 400 GB de dados. Eu vi a indicação do espaço de backup livre subir correspondentemente uma vez , mas após o próximo backup, reduzi novamente para apenas 7% do espaço disponível (858Gb usado em vez de cerca de 450Gb). Isso realmente me frustrou.

A resposta para esse mistério é dada aqui: http://blog.hawkimedia.com/2012/08/reclaiming-a-timemachine-volumes-disk-space/ Em suma, você precisa compactar o pacote esparso que realmente contém o backup se estiver hospedado em um disco em rede ou em um disco não formatado no HFS +. Eu não tenho backups de TM que não estão hospedados em um pacote esparso, portanto, não posso verificar se o uso tmutil deleteé gratuito para eles. É bem possível que o fato de não ocorrer no Time Capsule possa ser simplesmente uma peculiaridade do protocolo de pacotes esparsos. O comando para executar depois sudo tmutil deleteé sudo hdiutil compact /Volumes/YourTimeMachineDisk/YourBackupName.sparsebundle. No meu caso, que relatou

Starting to compact…
Reclaiming free space…
...................................................................................................................................
Finishing compaction…
Reclaimed 403.2 GB out of 583.5 GB possible.

A boa notícia é que esse comando levou apenas uma fração do tempo que o tmutil levou, gastando muito menos tempo pesquisando no disco e usando menos RAM (na verdade, ele foi concluído no tempo que levou para escrever essa resposta).

RJVB
fonte
Estou excluindo backups agora sem um pacote esparso e o espaço parece estar liberado sem fazer uma etapa extra.
Almo 21/11
12

Se o Time Machine estiver realmente apenas fazendo backup das diferenças, a exclusão na ordem inversa não é o que você deseja. Além disso, considerando que cada exclusão pode levar algum tempo, é bom ter um script que exclua o próximo quando o atual for concluído.

Seguindo o exemplo de script do user36971 acima, escrevi um que excluirá todos os backups do especificado e anterior:

#!/bin/bash

if [ -z "$1" ]
then
    echo "must specify backup id: YYYY-MM-DD-HHMMSS"
    exit 1
fi

FOUND_BACKUP=0;
BACKUPS=""
while read line; do
    if [[ "${line}" == *$1* ]]
    then
        FOUND_BACKUP=1;
    fi

    if [ "${FOUND_BACKUP}" == "1" ]
    then
        BACKUPS+="${line}"$'\n'
    fi
done < <(/usr/bin/tmutil listbackups | tail -r)

if [ "${FOUND_BACKUP}" == "0" ]
then
    exit 1
fi

printf '%s' "$BACKUPS"

echo -n "Delete above backups? [y/N]? "
read answer
case $answer in
    y*)
        while read line; do
            if [ -n "${line}" ]
            then
                echo Running: /usr/bin/sudo /usr/bin/tmutil delete "${line}"
                /usr/bin/sudo time /usr/bin/tmutil delete "${line}"
            fi
        done < <(echo "${BACKUPS}")
        ;;
    *)
        echo No change
        ;;
esac

Você notar que eu não incluem a verificação de nome do computador no meu script, então se você está compartilhando uma unidade de backup com vários computadores, você pode precisar adicionar uma verificação adicional.

Toland H
fonte
11
O TM faz backup apenas do delta a cada execução, mas mantém uma cópia completa por execução no disco de backup. Para arquivos não alterados entre as execuções (isso significa a maioria deles), apenas uma nova entrada de diretório é adicionada. Isso pode significar que, se você tiver apenas pequenos deltas entre as execuções, poderá ser necessário excluir muitos backups antes de observar um aumento significativo no espaço livre.
nohillside
2
A ordem em que você exclui os backups não faz diferença. De fato, se você usar um curinga com tmutil deletepara excluir todos os backups de um determinado ano, ele os excluirá do mais antigo para o mais novo. E btw, usando um curinga é muito mais fácil do que usar um script para a maioria dos casos :)
mluisbrown
Eu recomendaria adicionar printf '% s' "$ BACKUPS" antes da linha de backups de exclusão para dar um melhor feedback
petr
2
Eu posso excluir vários backups sem usar o while, como: sudo tmutil delete 2016-06-12-184217 2016-06-19-080529 2016-06-26-092218
yuxuan
-3

basta abrir um terminal,

#sudo tmutil disablelocal

isso deve liberar espaço sem excluir os backups da TM

Brian K
fonte
3
Isso desativará os instantâneos locais do Time Machine de uma unidade interna - e não o que o OP está perguntando.
Scot
2
Sim - isso só libera espaço no volume de inicialização do Mac - não no destino. Útil, mas precisa estar em uma pergunta diferente da IMO.
Bmike
-3

Aqui está passo a passo o que eu fiz para excluir meu backup antigo

  1. Disco do Time Machine aberto
  2. Localize e abra a pasta Backups.backupdb
  3. Vá para ver por data e escolha a mais antiga na parte superior
  4. Selecione o backup que você deseja excluir
  5. Teminal aberto e digite sudo rm -rvf
  6. Arraste e solte as pastas antigas que deseja excluir na janela do terminal
  7. Digite sua senha de usuário no prompt

Vá tomar um café ou assistir a um filme. Quando o processo estiver concluído, talvez seja necessário repeti-lo novamente para algumas pastas que não desejam excluir.

Quando todas as suas pastas antigas desaparecerem, o Time Machine precisará atualizar seu banco de dados. Aqui está uma maneira de forçar o Time Machine a atualizar.

  1. Entre no Time Machine e vá para o backup mais antigo que ainda está listado
  2. Selecione-o e clique na pequena engrenagem e, em seguida, escolha Excluir backup
  3. Digite sua senha e aguarde alguns minutos
  4. Saia da interface do Time Machine e volte novamente. Agora você deve ter seu Time Machine listando o backup correto.
Maher
fonte
14
Não faça isso. O Time Machine usa um sistema de vinculação complexo. Você pode interromper seus backups. Veja pondini.org/TM/Home.html
Harv
2
Depois de ler http://pondini.org/TM/Works.html , não vejo uma razão para excluir os backups antigos usando sudo rm -rvfo Time Machine. O rmcomando é a alternativa da linha de comando para a sugestão de excluir do Finder na parte inferior http://pondini.org/TM/12.html
Pro Backup