Как вручную удалить старые резервные копии, чтобы освободить место для Time Machine?

224

Я использую Time Capsule для резервного копирования, и теперь я хочу, чтобы диск резервировал данные с дополнительного Mac. Но диск заполнен старыми резервными копиями с Mac 1. Просто недостаточно места для резервного копирования для Mac 2.

Я получаю это сообщение об ошибке при запуске резервного копирования Time Machine:

Time Machine не может завершить резервное копирование. Эта резервная копия слишком велика для резервного диска. Для резервного копирования требуется 28,68 ГБ, но доступно только 626,2 МБ.

Time Machine требуется рабочее место на диске для резервного копирования, а также пространство, необходимое для хранения резервных копий. Откройте настройки Time Machine, чтобы выбрать больший резервный диск или сделать резервную копию меньше, исключив файлы.

Я знаю, что сама Time Machine способна удалять старые резервные копии, когда ей нужно больше места. Но в этом случае он не удаляет резервные копии Mac 1, чтобы освободить место для Mac 2.

Вопрос, как мне сделать это вручную?

Джеспер Ренн-Йенсен
источник
3
Учитывая, насколько дешевые внешние накопители, я бы соблазнился купить один и использовать его для вашей дополнительной машины. Я предпочитаю Элементы: amazon.com/Western-Digital-Elements-External-WDBAAU0010HBK-NESN/…
james.garriss
2
@ james.garriss хороший момент :) Однако мне все еще нужно поменять местами накопители в моей временной капсуле :)
Джеспер Ренн-Дженсен
1
Кто-нибудь знает, есть ли способ (без написания сценария) попросить TM хранить только 1 резервную копию в месяц для резервной копии старше 1 года?
Гамов
2
Разве вы не можете создать 2 разных раздела на диске TM и выбрать разные разделы для каждого Mac?
Пьер Уатле

Ответы:

235

Будьте осторожны с sudo и убедитесь, что вы выбрали правильные файлы Mac, так как нет отмены или подтверждения следующей команды:

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

Команде sudo нужен ваш пароль (и он не будет отображаться на экране, поэтому просто наберите его и сделайте паузу, чтобы убедиться, что вы встречаетесь с правильными файлами, прежде чем нажимать ввод). Если вы хотите быть более безопасным, вы можете сначала выбрать один снимок для удаления, чтобы убедиться, что команда работает так, как задумано. Это хорошо, поскольку для очистки некоторых больших наборов резервных копий может потребоваться несколько часов, и вы хотите, чтобы Mac был уверен, что он удаляет правильное хранилище информации.

Вы можете использовать tmutilинструмент для удаления резервных копий одну за другой.

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

Так как tmutilбыл представлен с Lion, это не будет работать на более ранних версиях ОС.

Если вы хотите получить текущий каталог резервных копий (может быть определено несколько мест назначения, и только один будет «текущим»)

sudo tmutil machinedirectory
bmike
источник
4
Работал как шарм. У меня были старые резервные копии, которые были огромными и были отключены от первоначального набора машины времени из-за смены жесткого диска. Я не мог удалить их с помощью sudo rm (что странно), но это помогло. Спасибо!
Дэвид Пизони
2
@drfrogsplat Да, но при работе со старыми резервными копиями исходный mac обычно не работает. В моем случае я пытаюсь освободить место на диске для резервного копирования, чтобы использовать его для резервного копирования нового компьютера Mac.
Абхи Беккерт
5
@square_eyes Это не так, как удаление жестко связанных файлов. Допустим, есть 100 интервалов с одним файлом. Файл существует на диске один раз, но счетчик ссылок равен 100. Когда вы его удаляете, эта запись каталога исчезает с того места, где вы ее удалили, и счетчик ссылок теперь равен 99. Только когда количество ссылок становится равным 0, сам файл удаляется. Все остальные удаляет просто удалить запись каталога.
bmike
5
Нет необходимости удалять резервные копии по одной. Вы можете ввести, sudo tmutil delete а затем перетащить все резервные копии, которые вы хотите удалить, в окно терминала. @drfrogsplat на странице человека упоминает эту команду можно удалить резервные копии , созданные с помощью другой машины.
Pointum
2
@pointum правильный. Кроме того, если вы хотите остаться в терминале, вы можете использовать подстановочные знаки, например, так: 'sudo tmutil delete 2015- *' Это может быть медленный процесс, особенно с вращающимися дисками, поэтому удаление нескольких файлов имеет решающее значение для работоспособности и эффективности.
Мэтт Дрессел
81

Самый простой способ:

  1. Введите время машины (на Mac, резервную копию которого вы хотите удалить)
  2. Перейти к моменту времени, который вы хотите удалить
  3. Выберите значок, похожий на шестеренку в искателе, и выберите «Удалить резервную копию» (в Mavericks: щелкните правой кнопкой мыши в окне поиска и выберите «Удалить резервную копию»)

Это гарантирует, что каталог резервного копирования остается точным, а целостность ваших данных остается неизменной.

Dudeas
источник
3
@drfrogsplat совершенно верно, что использование графического интерфейса, предоставленного Apple, является лучшим способом (работает на всех версиях) для удаления резервной копии и менее подвержено ошибкам, поскольку существует несколько визуальных отзывов (если вы внимательно посмотрите) и проверка перед вводом. Ваш пароль, чтобы убедиться, что вы знаете, удаление является постоянным.
bmike
1
Я не вижу пункт удаления резервной копии на mavericks в меню cog
brainray
@brainray Я разместил ответ для индивидуалистов
Индер Кумар Раторе
1
За исключением случаев, когда он выполняет частичное удаление (по какой-либо причине), он забывает о частичном резервном копировании, поэтому вы не можете затем удалить его только с помощьюtmutil delete
Jeroen Wiert Pluimers
1
Это не работает, если у вас есть проблема "Ожидание ...". apple.stackexchange.com/questions/207787/… Ожидание не всегда работает.
Almo
39

Для Маверикс / Йосемити

  1. Введите машину времени
  2. Выберите резервную копию
  3. Нажмите правой кнопкой мыши на резервную копию (в окне поиска)
  4. Выберите «Удалить резервную копию»

Он спросит пароль и все готово

введите описание изображения здесь

Индер Кумар Раторе
источник
Нажмите правой кнопкой мыши на резервную копию: где?
brainray
Вы увидите правый щелчок в окне поиска в середине окна, и вам будет показан список опций
Inder Kumar Rathore
13
Стоит отметить, что Time Machine не будет выполнять удаления и не будет запрашивать ваш пароль, пока вы не выйдете из Time Machine. И процедура выхода из Time Machine после выбора файлов и папок для удаления также неочевидна: нужно нажать cancelв левом нижнем углу. (Очевидно, что вы «отменяете» это восстановление файлов; удаления, по-видимому, не считаются отмененными, когда вы делаете это.)
mhucka
3
Это также работало для меня с другой машины. Мой старый MBP перегорел, мой новый имеет разные имена и разделы жесткого диска и т. Д. Наконец, он заполнил мой диск TM, и я не хочу удалять все резервные копии моей старой машины. Таким образом, вы держите Option, нажмите на машину времени в строке меню и «Обзор других резервных дисков». Я смог добраться до первой старой резервной копии, подключив диск с тем же именем. Оттуда я могу перейти к старой структуре дисков и использовать этот совет, чтобы удалить некоторые действительно старые резервные копии.
Марка
Или просто щелкните корневую папку устройства на боковой панели (чтобы отобразился старый раздел и структура диска). В моем случае «Устройства -> Macbook Pro»
Марк
18

Этот скрипт автоматически найдет самую старую резервную копию TM для вашего компьютера, сообщит вам, какая самая старая и самая новая резервная копия, и предложит вам удалить самую старую резервную копию. Вы должны ввести Yи ввести свой пароль администратора, чтобы удалить его.

скрипт 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
источник
Таким образом, этот сценарий автоматически найдет самую старую резервную копию TM для вашего компьютера, сообщит вам, какая самая старая и самая новая резервная копия, и предложит вам удалить самую старую резервную копию. Вы должны ввести Yи ввести свой пароль администратора, чтобы удалить его.
Hengjie
3
Обратите внимание, что это не приведет к автоматическому уменьшению размера ваших резервных копий sparsebundle. Вы должны будете войти и бежатьsudo hdiutil compact /path/to/disk-image
Hengjie
14

Я задавал себе этот вопрос, и ответы здесь, безусловно, помогли. Однако, есть недостаток, который может быть новой «деталью» реализации, которой не было, когда на этот вопрос был дан ответ.

tmutil deleteдействительно удаляет резервные копии, но на самом деле не освобождает занимаемое ими пространство, по крайней мере, не гарантированным образом. Я потратил около 2 дней на удаление резервных копий более 2 лет назад, что, согласно сообщению об окончательном завершении, составило ок. 400 Гб данных. Я действительно видел, как индикатор свободного места на резервной копии увеличивался соответственно один раз , но после следующей резервной копии я снова сократился до всего лишь 7% доступного пространства (858 ГБ используется вместо 450 ГБ). Это действительно поставило меня в тупик.

Ответ на эту загадку дан здесь: http://blog.hawkimedia.com/2012/08/reclaiming-a-timemachine-volumes-disk-space/ Короче говоря, вы должны сжать разреженный комплект, который фактически содержит резервную копию если он размещен на сетевом диске или на диске, который не отформатирован в HFS +. У меня нет резервных копий TM, которые не размещены в разреженном пакете, поэтому я не могу проверить, tmutil deleteдействительно ли их использование освобождает их. Это вполне может быть, и тот факт, что это не относится к Time Capsule, может быть просто особенностью протокола разреженных пакетов. Команда для выполнения после того, как sudo tmutil deleteэто sudo hdiutil compact /Volumes/YourTimeMachineDisk/YourBackupName.sparsebundle. В моем случае, что сообщается

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

Хорошей новостью является то, что эта команда заняла лишь небольшую часть времени, затраченного tmutil, затрачивая гораздо меньше времени на поиск на диске и используя меньше оперативной памяти (фактически она была выполнена за то время, которое потребовалось мне для написания этого ответа).

RJVB
источник
Я удаляю резервные копии сейчас без разреженного пакета, и пространство, кажется, освобождается, не делая дополнительного шага.
Almo
12

Если Time Machine действительно только резервирует различия, удаление в обратном порядке - это не то, что вам нужно. Плюс, учитывая, что каждое удаление может занять некоторое время, было бы неплохо иметь скрипт, который удалит следующий после завершения текущего.

Следуя приведенному выше примеру сценария user36971 , я написал сценарий , который удалит все резервные копии из указанной и более ранней:

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

Как отметить я не включил проверку имени компьютера в моем сценарии, так что если вы передаете один резервный диск с несколькими компьютерами, возможно , потребуется добавить дополнительную проверку.

Толанд Н
источник
1
TM только создает резервные копии дельты при каждом запуске, но сохраняет полную копию при запуске на резервном диске. Для файлов, не изменяемых между запусками (это означает, что большинство из них), просто добавляется новая запись каталога. Это может означать, что если между запусками у вас только небольшие дельты, вам, возможно, придется удалить много резервных копий, прежде чем вы заметите значительное увеличение свободного места.
nohillside
2
Порядок удаления резервных копий не имеет значения. В самом деле, если вы используете подстановочный знак с tmutil deleteдля удаления всех резервных копий за определенный год, они будут удалены от самых старых до самых новых. И между прочим, использование группового символа в большинстве случаев намного проще, чем использование сценария :)
mluisbrown
Я бы порекомендовал добавить printf '% s' "$ BACKUPS" перед строкой удаления резервных копий, чтобы улучшить обратную связь
petr
2
Я могу удалить несколько резервных копий без использования while, например: sudo tmutil delete 2016-06-12-184217 2016-06-19-080529 2016-06-26-092218
yuxuan
-3

просто откройте терминал,

#sudo tmutil disablelocal

это должно освободить место без удаления резервных копий TM

Брайан К
источник
3
Это отключит локальные снимки Time Machine с внутреннего диска - не то, о чем спрашивает OP.
Скот
2
Да - это только освобождает место на загрузочном томе Mac, а не в месте назначения. Полезно, но должен быть другой вопрос IMO.
bmike
-3

Вот шаг за шагом, что я сделал, чтобы удалить мою старую резервную копию

  1. Диск машины с открытым временем
  2. Найдите и откройте папку Backups.backupdb
  3. Перейти к просмотру по дате и выбрать самый старый сверху
  4. Выберите резервную копию, которую вы хотите удалить
  5. Откройте Teminal и введите sudo rm -rvf
  6. Перетащите старые папки, которые вы хотите удалить, в окне терминала
  7. Введите пароль пользователя в командной строке

Возьмите кофе или посмотрите фильм, когда процесс будет завершен, возможно, вам придется повторить его для некоторых папок, которые не нужно удалять.

Когда все ваши старые папки исчезли, Time Machine необходимо обновить свою базу данных. Вот способ заставить Time Machine обновить.

  1. Введите Time Machine и перейдите к самой старой резервной копии, которая все еще в списке
  2. Выберите его и нажмите на маленький механизм, а затем выберите Удалить резервную копию
  3. Введите свой пароль и подождите несколько минут
  4. Выйдите из интерфейса Time Machine и вернитесь снова. Теперь у вас должна быть ваша Time Machine с указанием правильной резервной копии.
Maher
источник
14
Не делай это. Time Machine использует сложную систему связи. Вы можете сломать ваши резервные копии. См. Pondini.org/TM/Home.html
Harv
2
После прочтения http://pondini.org/TM/Works.html я не вижу причины, по которой удаление старых резервных копий с помощью sudo rm -rvfTime Machine может сломать. Эта rmкоманда является альтернативой командной строке предложению удалить из Finder внизу http://pondini.org/TM/12.html
Pro Backup