Jak mogę ręcznie usunąć stare kopie zapasowe, aby zwolnić miejsce dla Time Machine?

223

Używam Time Capsule do tworzenia kopii zapasowych i teraz chcę, aby dysk tworzył kopię zapasową danych z dodatkowego komputera Mac. Ale dysk jest wypełniony starymi kopiami zapasowymi z komputera Mac 1. Po prostu nie ma wystarczającej ilości miejsca na kopię zapasową dla komputera Mac 2.

Podczas uruchamiania kopii zapasowej Time Machine pojawia się ten komunikat o błędzie:

Time Machine nie może ukończyć tworzenia kopii zapasowej. Ta kopia zapasowa jest za duża dla dysku z kopią zapasową. Kopia zapasowa wymaga 28,68 GB, ale dostępnych jest tylko 626,2 MB.

Time Machine potrzebuje miejsca do pracy na dysku z kopią zapasową, oprócz miejsca wymaganego do przechowywania kopii zapasowych. Otwórz preferencje Time Machine, aby wybrać większy dysk kopii zapasowej lub zmniejszyć kopię zapasową, wykluczając pliki.

Wiem, że Time Machine może usuwać stare kopie zapasowe, gdy potrzebuje więcej miejsca. Ale w tym przypadku nie usuwa żadnych kopii zapasowych komputera Mac 1, aby zwolnić miejsce dla komputera Mac 2.

Pytanie brzmi, jak to zrobić ręcznie?

Jesper Rønn-Jensen
źródło
3
Biorąc pod uwagę, jak tanie są dyski zewnętrzne, skusiłbym się na zakup jednego z nich i użycie go jako dodatkowej maszyny. Wolę elementy: amazon.com/Western-Digital-Elements-External-WDBAAU0010HBK-NESN/…
james.garriss
2
@ james.garriss good point :) Jednak nadal muszę wymieniać dyski w mojej kapsule czasu :)
Jesper Rønn-Jensen
1
Czy ktoś wie, czy istnieje sposób (bez pisania skryptu), aby poprosić TM o zachowanie tylko 1 kopii zapasowej w miesiącu dla kopii zapasowej starszej niż 1 rok?
gamov
2
Czy nie możesz utworzyć 2 różnych partycji na dysku TM i wybrać inną partycję dla każdego komputera Mac?
Pierre Watelet

Odpowiedzi:

235

Uważaj na sudo i upewnij się, że wybierasz prawidłowe pliki Maca, ponieważ nie ma cofnięcia ani potwierdzenia następującego polecenia:

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

Polecenie sudo wymaga hasła (i nie będzie wyświetlane na ekranie, więc po prostu wpisz je i wstrzymaj, aby upewnić się, że randkujesz właściwe pliki przed naciśnięciem klawisza Enter). Jeśli chcesz być bezpieczniejszy, możesz najpierw wybrać jedną migawkę do usunięcia, aby upewnić się, że polecenie działa zgodnie z przeznaczeniem. Jest to miłe, ponieważ wyczyszczenie niektórych większych zestawów kopii zapasowych może zająć wiele godzin, a chcesz pozostawić komputer Mac przekonany, że usuwa odpowiedni magazyn informacji.

Możesz użyć tego tmutilnarzędzia, aby usuwać kopie zapasowe jeden po drugim.

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

Od czasu tmutilwprowadzenia z Lionem nie będzie działać na wcześniejszych wersjach systemu operacyjnego.

Jeśli chcesz uzyskać bieżący katalog kopii zapasowych (można zdefiniować wiele miejsc docelowych i tylko jeden będzie „bieżący”)

sudo tmutil machinedirectory
bmike
źródło
4
Działa jak urok. Miałem stare kopie zapasowe, które były ogromne i odłączone od oryginalnego zestawu wehikułów czasu z powodu zmian dysku twardego. Nie mogłem ich usunąć za pomocą sudo rm (który jest zwariowany), ale to załatwiło sprawę. Dzięki!
David Pisoni,
2
@drfrogsplat tak, ale podczas pracy ze starymi kopiami zapasowymi typowy komputer Mac jest martwy. W moim przypadku próbuję zwolnić miejsce na dysku z kopią zapasową, aby użyć go do utworzenia kopii zapasowej nowego komputera Mac.
Abhi Beckert,
5
@square_eyes Nie tak działa usuwanie twardych plików połączonych. Powiedzmy, że istnieje 100 interwałów z tym samym plikiem. Plik istnieje raz na dysku, ale liczba linków wynosi 100. Po usunięciu jeden wpis katalogu znika w miejscu, w którym został usunięty, a liczba linków wynosi teraz 99. Tylko wtedy, gdy liczba linków wynosi 0, sam plik zostanie usunięty. Wszystkie pozostałe usuwa po prostu usuń wpis z katalogu.
bmike
5
Nie ma potrzeby usuwania kopii zapasowych jedna po drugiej. Możesz wpisać, sudo tmutil delete a następnie przeciągnąć wszystkie kopie zapasowe, które chcesz usunąć, do okna Terminal. @drfrogsplat strona podręcznika wspomina, że ​​to polecenie może usuwać kopie zapasowe utworzone na innym komputerze.
punkt
2
Punkt @ jest poprawny. Dodatkowo, jeśli chcesz pozostać w terminalu, możesz użyć symboli wieloznacznych, takich jak: „sudo tmutil delete 2015- *” Może to być powolny proces, szczególnie w przypadku obracania dysków, więc usunięcie wielu plików ma kluczowe znaczenie dla zdrowia psychicznego i wydajności.
Matt Dressel
81

Najprostszym sposobem jest:

  1. Wprowadź wehikuł czasu (na komputerze Mac, którego kopię zapasową chcesz usunąć)
  2. Przejdź do punktu w czasie, który chcesz usunąć
  3. Wybierz ikonę, która wygląda jak trybik w wyszukiwarce i wybierz „Usuń kopię zapasową” (w Mavericks: Kliknij prawym przyciskiem myszy w oknie wyszukiwarki i wybierz „Usuń kopię zapasową”)

Dzięki temu katalog kopii zapasowych pozostaje dokładny, a integralność danych pozostaje nienaruszona.

Dudeas
źródło
3
@drfrogsplat ma bardzo rację, że użycie GUI udostępnionego przez Apple jest najlepszym sposobem (działa na wszystkich wersjach) do usunięcia kopii zapasowej i jest mniej podatne na błędy, ponieważ istnieje wiele wizualnych informacji zwrotnych (jeśli przyjrzysz się uważnie) i sprawdzenie przed wejściem twoje hasło, aby mieć pewność, że usunięcie jest trwałe.
bmike
1
Nie widzę usuwanego elementu zapasowego u indywidualistów w menu
ząb
@brainray napisałem odpowiedź dla indywidualistów
Inder Kumar Rathore
1
Z wyjątkiem sytuacji, gdy dokonuje częściowego usunięcia (z dowolnego powodu), zapomina o częściowej kopii zapasowej, więc nie można jej tylko usunąć za pomocątmutil delete
Jeroen Wiert Pluimers
1
To nie działa, jeśli masz problem z „Czekaniem ...”. apple.stackexchange.com/questions/207787/… Oczekiwanie nie zawsze działa.
Almo
39

Dla Mavericks / Yosemite

  1. Wejdź do wehikułu czasu
  2. Wybierz kopię zapasową
  3. Kliknij kopię zapasową prawym przyciskiem myszy (w oknie wyszukiwarki)
  4. Wybierz „Usuń kopię zapasową”

Zostaniesz zapytany o hasło i gotowe

wprowadź opis zdjęcia tutaj

Inder Kumar Rathore
źródło
Kliknij kopię zapasową prawym przyciskiem myszy: gdzie?
brainray
Zostanie wyświetlone okno wyszukiwarki, kliknij prawym przyciskiem myszy na środku okna, a wyświetli się lista opcji
Inder Kumar Rathore
13
Warto zauważyć, że Time Machine nie wykona usuwania i nie poprosi o hasło, dopóki nie wyjdziesz z Time Machine. Procedura wyjścia z Time Machine po wybraniu plików i folderów do usunięcia również nie jest oczywista: musisz kliknąć cancelw lewym dolnym rogu. (Najwyraźniej rzeczą, którą „anulujesz”, jest przywracanie plików; skasowania najwyraźniej nie są uważane za anulowane.)
mhucka
3
Działa to również dla mnie z innej maszyny. Mój stary MBP został usmażony, mój nowy ma różne nazwy dysków twardych i partycje itp. Wreszcie zapełnił się mój dysk TM i nie chcę usuwać wszystkich kopii zapasowych mojego starego komputera. Trzymasz więc opcję, kliknij wehikuł czasu na pasku menu i „Przeglądaj inne dyski z kopiami zapasowymi”. Udało mi się dostać do pierwszej starej kopii zapasowej, podłączając dysk o tej samej nazwie. Stamtąd mogłem przejść do starej struktury dysku i użyć tej wskazówki, aby usunąć niektóre naprawdę stare kopie zapasowe.
Mark
Lub po prostu kliknij folder urządzenia głównego na pasku bocznym (aby wyświetlić starą partycję i strukturę napędu). W moim przypadku „Urządzenia -> Macbook Pro”
Mark
18

Ten skrypt automatycznie znajdzie najstarszą kopię zapasową TM dla twojego komputera, podpowie, która jest najstarsza i najnowsza kopia zapasowa oraz wyświetli monit o usunięcie najstarszej kopii zapasowej. Musisz wprowadzić Yi wprowadzić hasło administratora, aby je usunąć.

skrypt 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
użytkownik36971
źródło
Podsumowując, ten skrypt automatycznie znajdzie najstarszą kopię zapasową TM dla twojego komputera, powie ci, która jest najstarsza i najnowsza kopia zapasowa oraz wyświetli monit o usunięcie najstarszej kopii zapasowej. Musisz wprowadzić Yi wprowadzić hasło administratora, aby je usunąć.
Hengjie
3
Uwaga: nie spowoduje to automatycznego zmniejszenia rozmiaru plików kopii zapasowych sparsebundle. Musisz wejść i uciecsudo hdiutil compact /path/to/disk-image
Hengjie,
14

Zadałem sobie to pytanie, a odpowiedzi tutaj z pewnością pomogły. Brakuje jednak aspektu, który może być nowym „szczegółem” implementacji, który nie istniał po udzieleniu odpowiedzi na to pytanie.

tmutil deletefaktycznie usuwa kopie zapasowe, ale tak naprawdę nie odzyskuje zajmowanego miejsca, a przynajmniej nie w żaden gwarantowany sposób. Spędziłem około 2 całe dni, usuwając kopie zapasowe sprzed> 2 lat, co według ostatecznego komunikatu o ukończeniu wynosiło ok. 400 GB danych. Widziałem, że wskazanie wolnego miejsca na kopię zapasową wzrosło odpowiednio raz , ale po następnej kopii znów spadłem do zaledwie 7% dostępnego miejsca (wykorzystano 858 Gb zamiast około 450 Gb). Naprawdę mnie to powstrzymało.

Odpowiedź na tę tajemnicę znajduje się tutaj: http://blog.hawkimedia.com/2012/08/reclaiming-a-timemachine-volumes-disk-space/ Krótko mówiąc, musisz skompaktować rzadki pakiet, który faktycznie zawiera kopię zapasową jeśli jest przechowywany na dysku sieciowym lub na dysku, który nie jest sformatowany w HFS +. Nie mam kopii zapasowych TM, które nie są hostowane w rzadkim pakiecie, więc nie mogę sprawdzić, czy korzystanie z nich tmutil deletepowoduje odzyskanie za darmo na tych. Może to zrobić, a fakt, że nie ma go na Time Capsule, może po prostu być osobliwością rzadkiego protokołu pakietu. Polecenie do wykonania po sudo tmutil deleteto sudo hdiutil compact /Volumes/YourTimeMachineDisk/YourBackupName.sparsebundle. W moim przypadku to zgłosiło

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

Dobrą wiadomością jest to, że polecenie to zajęło tylko ułamek czasu tmutil, poświęcając znacznie mniej czasu na szukanie na dysku i zużywając mniej pamięci RAM (w rzeczywistości zostało wykonane w czasie, w którym napisałem tę odpowiedź).

RJVB
źródło
Usuwam teraz kopie zapasowe bez pakietu rzadkiego, a przestrzeń wydaje się zwolniona bez robienia dodatkowego kroku.
Almo
12

Jeśli Time Machine tak naprawdę tworzy kopię zapasową różnic, usuwanie w odwrotnej kolejności nie jest tym, czego chcesz. Dodatkowo, biorąc pod uwagę, że każde usunięcie może zająć trochę czasu, dobrze byłoby mieć skrypt, który usunie następny po zakończeniu bieżącego.

Zgodnie z powyższym przykładowym skryptem użytkownika 36971 napisałem taki, który usunie wszystkie kopie zapasowe z określonego i wcześniejszego:

#!/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

Czy pamiętać, że nie obejmują sprawdzenie nazwy komputera w moim skrypcie, więc jeśli jesteś dzielenie jeden dysk kopii zapasowej z wielu komputerów, być może trzeba dodać dodatkowy czek.

Toland H.
źródło
1
TM tworzy kopię zapasową delty tylko przy każdym uruchomieniu, ale zachowuje pełną kopię dla każdego uruchomienia na dysku z kopią zapasową. W przypadku plików, które nie są zmieniane między uruchomieniami (oznacza to większość z nich), dodawany jest tylko nowy wpis katalogu. Może to oznaczać, że jeśli masz tylko małe delty między uruchomieniami, być może będziesz musiał usunąć wiele kopii zapasowych, zanim zauważysz znaczny wzrost wolnej przestrzeni.
nohillside
2
Kolejność usuwania kopii zapasowych nie ma znaczenia. Rzeczywiście, jeśli użyjesz symbolu wieloznacznego z, tmutil deleteaby usunąć wszystkie kopie zapasowe na dany rok, usuniesz je od najstarszej do najnowszej. A przy okazji, używanie
znaku
Polecam dodanie printf '% s' „$ BACKUPS” przed linią usuwania kopii zapasowych, aby uzyskać lepszą opinię
petr
2
Mogę usunąć wiele kopii zapasowych bez korzystania z nich, na przykład: sudo tmutil delete 2016-06-12-184217 2016-06-19-080529 2016-06-26-092218
yuxuan
-3

po prostu otwórz terminal,

#sudo tmutil disablelocal

powinno to zwolnić miejsce bez usuwania kopii zapasowych TM

Brian K.
źródło
3
Spowoduje to wyłączenie lokalnych migawek Wehikułu Czasu z dysku wewnętrznego - nie o to pyta OP.
Szkot
2
Tak - zwalnia to tylko miejsce w woluminie rozruchowym komputera Mac - nie w miejscu docelowym. Przydatne, ale trzeba zadać inne pytanie IMO.
bmike
-3

Oto krok po kroku, co zrobiłem, aby usunąć moją starą kopię zapasową

  1. Open Time Machine Disk
  2. Znajdź i otwórz folder Backups.backupdb
  3. Przejdź do widoku według daty i wybierz najstarszy na górze
  4. Wybierz kopię zapasową, którą chcesz usunąć
  5. Otwórz Teminal i wpisz sudo rm -rvf
  6. Przeciągnij i upuść stare foldery, które chcesz usunąć, w oknie terminala
  7. Po wyświetleniu monitu wprowadź hasło użytkownika

Idź napić się kawy lub obejrzyj film. Po zakończeniu procesu może być konieczne powtórzenie go w przypadku folderów, których nie chcesz usunąć.

Kiedy wszystkie stare foldery znikną, Time Machine musi zaktualizować swoją bazę danych. Oto sposób zmuszenia Time Machine do aktualizacji.

  1. Wejdź do Time Machine i przejdź do najstarszej kopii zapasowej, która jest nadal na liście
  2. Wybierz i kliknij mały sprzęt, a następnie wybierz Usuń kopię zapasową
  3. Wprowadź hasło i poczekaj kilka minut
  4. Wyjdź z interfejsu Time Machine i wróć ponownie. Teraz powinieneś mieć swój Time Machine z listą prawidłowej kopii zapasowej.
Maher
źródło
14
Nie rób tego. Time Machine korzysta ze złożonego systemu łączenia. Możesz przerwać tworzenie kopii zapasowych. Zobacz pondini.org/TM/Home.html
Harv
2
Po przeczytaniu http://pondini.org/TM/Works.html Nie widzę powodu, dla którego usunięcie starych kopii zapasowych sudo rm -rvfspowoduje uszkodzenie Time Machine. rmPolecenia jest alternatywą dla wiersza polecenia z sugestią, aby usunąć z Findera na dole http://pondini.org/TM/12.html
Backup Pro