Bagaimana saya bisa menghapus cadangan lama secara manual ke ruang kosong untuk Time Machine?

224

Saya menggunakan Time Capsule untuk cadangan dan sekarang saya ingin drive untuk mencadangkan data dari Mac tambahan. Tetapi drive diisi dengan cadangan lama dari Mac 1. Tidak cukup ruang yang tersedia untuk cadangan untuk Mac 2.

Saya mendapatkan pesan kesalahan ini ketika menjalankan cadangan Time Machine:

Time Machine tidak dapat menyelesaikan cadangan. Cadangan ini terlalu besar untuk disk cadangan. Cadangan membutuhkan 28,68 GB tetapi hanya 626,2 MB yang tersedia.

Time Machine membutuhkan ruang kerja pada disk cadangan, selain ruang yang diperlukan untuk menyimpan cadangan. Open Time Machine preferensi untuk memilih disk cadangan yang lebih besar atau membuat cadangan lebih kecil dengan mengecualikan file.

Saya tahu Time Machine sendiri dapat menghapus cadangan lama saat membutuhkan lebih banyak ruang. Tetapi dalam hal ini tidak menghapus cadangan Mac 1 untuk membuat ruang untuk Mac 2.

Pertanyaannya adalah, bagaimana saya melakukannya secara manual?

Jesper Rønn-Jensen
sumber
3
Mengingat betapa murahnya drive eksternal, saya akan tergoda untuk membelinya dan menggunakannya untuk mesin ekstra Anda. Saya lebih suka Elemen: amazon.com/Western-Digital-Elements-External-WDBAAU0010HBK-NESN/…
james.garriss
2
@ james.garriss poin bagus :) Namun, saya masih harus menukar drive dalam kapsul waktu saya :)
Jesper Rønn-Jensen
1
Adakah yang tahu jika ada cara (tanpa menulis naskah) untuk meminta TM agar hanya menyimpan 1 cadangan sebulan untuk cadangan yang lebih tua dari yang berumur 1 tahun?
gamov
2
Tidak bisakah Anda membuat 2 partisi berbeda pada disk TM Anda dan memilih partisi yang berbeda untuk setiap mac?
Pierre Watelet

Jawaban:

235

Hati-hati dengan sudo dan pastikan Anda memilih file Mac yang benar karena tidak ada undo atau konfirmasi dari perintah berikut:

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

Perintah sudo memerlukan kata sandi Anda (dan itu tidak akan bergema ke layar, jadi cukup ketik dan berhenti untuk memastikan Anda berkencan dengan file yang benar sebelum menekan enter). Jika Anda ingin lebih aman, Anda dapat memilih satu snapshot untuk dihapus terlebih dahulu untuk memastikan perintah berfungsi sebagaimana dimaksud. Ini bagus karena bisa memakan waktu berjam-jam untuk membersihkan beberapa set cadangan yang lebih besar dan Anda ingin membiarkan Mac yakin itu menghapus toko informasi yang benar.

Anda dapat menggunakan tmutilalat ini untuk menghapus cadangan satu per satu.

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

Sejak tmutildiperkenalkan dengan Lion, ini tidak akan berfungsi pada versi OS sebelumnya.

Jika Anda ingin mendapatkan direktori cadangan saat ini (mungkin ada beberapa tujuan yang ditentukan dan hanya satu yang akan "saat ini")

sudo tmutil machinedirectory
bmike
sumber
4
Bekerja seperti pesona. Saya memiliki cadangan lama yang besar dan terputus dari mesin waktu asli karena perubahan hard drive. Saya tidak bisa menghapusnya dengan sudo rm (yang aneh), tetapi ini berhasil. Terima kasih!
David Pisoni
2
@drfrogsplat ya, tetapi ketika bekerja dengan cadangan lama sudah biasa mac asli mati. Dalam kasus saya, saya mencoba mengosongkan ruang pada drive cadangan saya sehingga saya dapat menggunakannya untuk membuat cadangan mac baru.
Abhi Beckert
5
@square_eyes Bukan itu cara penghapusan file yang ditautkan bekerja. Katakanlah ada 100 interval dengan file yang sama. File ada di disk sekali, tetapi jumlah tautan adalah 100. Ketika Anda menghapus satu, entri direktori itu hilang di mana Anda dihapus dan jumlah tautan sekarang 99. Hanya ketika jumlah tautan pergi ke 0 apakah file itu sendiri dihapus. Semua penghapusan lainnya hanya menghapus entri direktori.
bmike
5
Tidak perlu menghapus cadangan satu per satu. Anda dapat mengetik sudo tmutil delete dan kemudian menyeret semua cadangan yang ingin Anda hapus ke jendela Terminal. @drfrogsplat halaman manual menyebutkan perintah ini dapat menghapus cadangan yang dibuat oleh mesin yang berbeda.
pointum
2
@pointum benar. Selain itu, jika Anda ingin tetap berada di terminal, Anda dapat menggunakan wild card seperti: 'sudo tmutil delete 2015- *' Ini bisa menjadi proses yang lambat, terutama dengan disk pemintalan, sehingga menghapus beberapa file sangat penting untuk kewarasan dan efisiensi.
Matt Dressel
81

Cara termudah adalah:

  1. Masukkan mesin waktu (pada Mac yang cadangannya ingin Anda hapus)
  2. Pergi ke titik waktu yang ingin Anda hapus
  3. Pilih ikon yang terlihat seperti roda penggerak di finder dan pilih 'Delete Backup' (di Mavericks: Klik kanan di jendela finder dan pilih 'Delete Backup')

Ini memastikan katalog cadangan tetap akurat dan integritas data Anda tetap utuh.

Bung
sumber
3
@drfrogsplat sangat benar bahwa menggunakan GUI yang disediakan oleh Apple adalah cara terbaik (berfungsi pada semua versi) untuk menghapus cadangan dan tidak terlalu rentan terhadap kesalahan karena ada beberapa umpan balik visual (jika Anda perhatikan dengan cermat) dan centang sebelum Anda masuk kata sandi Anda untuk memastikan Anda tahu penghapusan itu permanen.
bmike
1
Saya tidak melihat item cadangan yang dihapus pada maverick di menu roda gigi
brainray
@brainray Saya memposting jawaban untuk mavericks
Inder Kumar Rathore
1
Kecuali ketika ia melakukan penghapusan parsial (untuk alasan apa pun) ia lupa cadangan parsial ada sehingga Anda tidak dapat hanya menghapusnya dengantmutil delete
Jeroen Wiert Pluimers
1
Ini tidak berfungsi jika Anda memiliki masalah "Menunggu ...". apple.stackexchange.com/questions/207787/... Menunggu tidak selalu berhasil.
Almo
39

Untuk Mavericks / Yosemite

  1. Masukkan mesin waktu
  2. Pilih cadangan
  3. Klik kanan pada cadangan (pada jendela pencari)
  4. Pilih 'Hapus Cadangan'

Ini akan menanyakan kata sandi dan Anda selesai

masukkan deskripsi gambar di sini

Inder Kumar Rathore
sumber
Klik kanan pada cadangan: di mana?
brainray
Anda akan diperlihatkan jendela pencari klik kanan di tengah jendela dan Anda akan diperlihatkan daftar opsi
Inder Kumar Rathore
13
Perlu dicatat bahwa Time Machine tidak akan melakukan penghapusan dan tidak meminta kata sandi Anda sampai Anda keluar dari Time Machine. Dan prosedur untuk keluar dari Time Machine setelah memilih file dan folder untuk dihapus juga tidak jelas: Anda harus mengklik canceldi sudut kiri bawah. (Rupanya, hal yang Anda "batalkan" adalah pemulihan file; penghapusan tampaknya tidak dianggap dibatalkan saat Anda melakukan ini.)
mhucka
3
Ini juga bekerja untuk saya dari komputer lain. MBP lama saya digoreng, yang baru saya memiliki nama dan partisi hard drive yang berbeda dll. Akhirnya ia mengisi disk TM saya, dan saya tidak ingin menghapus semua cadangan mesin lama saya. Jadi Anda memegang Opsi, klik mesin waktu di bilah menu dan "Jelajahi disk cadangan lain". Saya bisa mendapatkan cadangan lama pertama dengan mencolokkan drive dengan nama yang sama. Dari sana saya bisa pindah ke struktur drive lama, dan menggunakan tip ini untuk menghapus beberapa backup yang benar-benar lama.
Tandai
Atau cukup klik pada folder perangkat root di sidebar (untuk partisi lama dan struktur drive muncul). Dalam kasus saya "Perangkat -> Macbook Pro"
Tandai
18

Skrip ini akan secara otomatis menemukan cadangan TM tertua untuk komputer Anda, memberi tahu Anda yang merupakan cadangan terlama dan terbaru dan memberi Anda prompt untuk menghapus cadangan terlama. Anda harus memasukkan Ydan memasukkan kata sandi administrator Anda untuk menghapusnya.

skrip 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
pengguna36971
sumber
Singkatnya, skrip ini akan secara otomatis menemukan cadangan TM tertua untuk komputer Anda, memberi tahu Anda yang merupakan cadangan terlama dan terbaru dan memberi Anda prompt untuk menghapus cadangan terlama. Anda harus memasukkan Ydan memasukkan kata sandi administrator Anda untuk menghapusnya.
Hengjie
3
Perhatikan ini tidak akan secara otomatis mengurangi ukuran file cadangan sparsebundle Anda. Anda harus masuk dan menjalankansudo hdiutil compact /path/to/disk-image
Hengjie
14

Saya telah bertanya pada diri sendiri pertanyaan ini, dan jawaban di sini tentu membantu. Namun ada aspek yang kurang yang mungkin merupakan "detail" implementasi baru yang tidak ada ketika pertanyaan ini dijawab.

tmutil deletememang menghapus cadangan, tetapi tidak benar-benar merebut kembali ruang yang mereka ambil, setidaknya tidak dengan cara yang dijamin. Saya menghabiskan sekitar 2 hari penuh untuk menghapus cadangan dari> 2 tahun yang lalu, yang menurut pesan penyelesaian akhir berjumlah kira-kira. 400Gb data. Saya memang melihat indikasi ruang cadangan gratis naik satu kali , tetapi setelah cadangan berikutnya saya kembali ke hanya 7% ruang yang tersedia (858Gb digunakan alih-alih sekitar 450Gb). Itu benar-benar membuat saya terhalang.

Jawaban untuk misteri itu diberikan di sini: http://blog.hawkimedia.com/2012/08/reclaiming-a-timemachine-volumes-disk-space/ Singkatnya, Anda harus memadatkan bundel jarang yang sebenarnya menyimpan cadangan jika di-host pada disk jaringan, atau pada disk yang tidak diformat dalam HFS +. Saya tidak memiliki cadangan TM yang tidak di-host dalam bundel yang jarang jadi tidak dapat memeriksa apakah penggunaannya tmutil deletedapat diperoleh kembali secara gratis. Ini mungkin bisa dilakukan dan fakta bahwa itu tidak ada pada Time Capsule mungkin hanya kekhasan protokol bundel yang jarang. Perintah untuk mengeksekusi setelah sudo tmutil deleteadalah sudo hdiutil compact /Volumes/YourTimeMachineDisk/YourBackupName.sparsebundle. Dalam kasus saya yang dilaporkan

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

Kabar baiknya adalah bahwa perintah ini hanya mengambil sebagian kecil dari waktu yang diperlukan, menghabiskan lebih sedikit waktu mencari pada disk dan menggunakan lebih sedikit RAM (sebenarnya itu selesai pada saat saya perlu menulis jawaban ini).

RJVB
sumber
Saya menghapus cadangan sekarang tanpa sparsebundle, dan ruang tampaknya dibebaskan tanpa melakukan langkah ekstra.
Almo
12

Jika Time Machine benar-benar hanya mendukung perbedaan, menghapus dengan urutan terbalik bukanlah yang Anda inginkan. Plus mengingat bahwa setiap penghapusan dapat memakan waktu, memiliki skrip yang akan menghapus yang berikutnya ketika yang sekarang selesai akan bagus.

Mengikuti skrip sampel user36971 di atas, saya telah menulis satu yang akan menghapus semua cadangan dari yang ditentukan dan sebelumnya:

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

Apakah dicatat saya tidak memasukkan nama komputer cek di script saya, jadi jika Anda berbagi satu drive cadangan dengan beberapa komputer, Anda mungkin perlu menambahkan pemeriksaan tambahan.

Toland H
sumber
1
TM hanya backup delta dengan masing-masing berjalan, tetapi menyimpan salinan lengkap per dijalankan pada disk cadangan. Untuk file yang tidak diubah antar-jalan (ini berarti sebagian besar dari mereka), hanya entri direktori baru yang ditambahkan. Ini bisa berarti bahwa jika Anda hanya memiliki delta kecil di antara proses, Anda mungkin harus menghapus banyak cadangan sebelum Anda melihat peningkatan signifikan dalam ruang kosong.
nohillside
2
Urutan Anda menghapus cadangan tidak ada bedanya. Memang, jika Anda menggunakan wildcard dengan tmutil deleteuntuk menghapus semua cadangan untuk tahun tertentu, itu akan menghapusnya paling lama hingga terbaru. Dan btw, menggunakan wildcard jauh lebih mudah daripada menggunakan skrip untuk kebanyakan kasus :)
mluisbrown
Saya akan merekomendasikan untuk menambahkan printf '% s' "$ BACKUPS" sebelum baris delete backups untuk memberikan umpan balik yang lebih baik
petr
2
Saya dapat menghapus banyak cadangan tanpa menggunakan saat, seperti: sudo tmutil delete 2016-06-12-184217 2016-06-19-080529 2016-06-26-092218
yuxuan
-3

buka saja terminal,

#sudo tmutil disablelocal

ini akan membebaskan ruang tanpa menghapus cadangan TM

Brian K.
sumber
3
Ini akan menonaktifkan snapshot Time Machine lokal dari drive internal - bukan apa yang ditanyakan OP.
Scot
2
Ya - ini hanya membebaskan ruang pada volume boot Mac - bukan pada tujuan. Berguna, tetapi harus pada IMO pertanyaan yang berbeda.
bmike
-3

Berikut ini langkah demi langkah yang saya lakukan untuk menghapus cadangan lama saya

  1. Buka Disk Mesin Waktu
  2. Temukan dan buka folder Backups.backupdb
  3. Pergi untuk melihat berdasarkan tanggal dan pilih yang tertua di atas
  4. Pilih cadangan yang ingin Anda hapus
  5. Buka Teminal dan ketik sudo rm -rvf
  6. Seret dan taruh folder lama yang ingin Anda hapus di Terminal Window
  7. Masukkan kata sandi pengguna Anda saat diminta

Pergi minum kopi atau menonton film, ketika proses selesai Anda mungkin harus mengulanginya lagi untuk beberapa folder yang tidak ingin dihapus.

Ketika semua folder lama Anda hilang, Time Machine perlu memperbarui basis datanya. Ini adalah cara untuk memaksa Time Machine memperbarui.

  1. Masukkan Time Machine dan pergi ke Backup tertua yang masih terdaftar
  2. Pilih dan klik pada roda gigi kecil lalu pilih Hapus Cadangan
  3. Masukkan kata sandi Anda dan tunggu beberapa menit
  4. Keluar dari antarmuka Time Machine dan kembali lagi. Sekarang Anda harus memiliki Mesin Waktu Anda daftar cadangan yang benar.
Maher
sumber
14
Jangan lakukan ini. Time Machine menggunakan sistem penghubung yang kompleks. Anda dapat merusak cadangan Anda. Lihat pondini.org/TM/Home.html
Harv
2
Setelah membaca http://pondini.org/TM/Works.html Saya tidak melihat alasan mengapa menghapus cadangan lama menggunakan sudo rm -rvfakan merusak Time Machine. The rmperintah baris perintah alternatif saran untuk menghapus dari Finder di bagian bawah http://pondini.org/TM/12.html
Pro Backup