Entri yang saya dapat dengan aman mengecualikan melakukan backup

10

Saya merencanakan strategi cadangan berdasarkan rsnapshot .

Saya ingin melakukan backup sistem lengkap tidak termasuk file dan direktori yang tidak akan berguna untuk mengembalikan untuk memiliki sistem yang berfungsi lagi. Saya sudah mengecualikan:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Saya ingin tahu entri mana yang dapat saya tambahkan ke daftar pengecualian tanpa mengganggu sistem yang dipulihkan. Berbicara tentang sistem Linux "generik", dapatkah Anda menyarankan ekstensi glob lebih lanjut, direktori sementara, cache, dll. Saya dapat mengecualikan dengan aman?

Paolo
sumber

Jawaban:

11

Pertama, Anda harus membaca sedikit tentang rsync's sertakan / kecualikan sintaks. Saya merasa bahwa apa yang ingin Anda lakukan lebih baik dilakukan menggunakan **gumpalan daripada *gumpalan. ( **memperluas ke sejumlah entri, sedangkan *memperluas hanya ke satu entri yang mungkin cocok dengan beberapa entri direktori . Rinciannya berada di man rsyncbawah Sertakan / Kecualikan Aturan Pola .)

Yang mengatakan, jika Anda ingin dapat mengembalikan sistem ke kondisi kerja yang dikenal dari cadangan dengan kerumitan minimum, Anda harus berhati-hati dengan mengecualikan file atau direktori. Saya menggunakan rsnapshot sendiri dan telah mengambil pendekatan yang berlawanan: sertakan semuanya kecuali beberapa direktori yang dipilih dengan cermat.

Jadi rsnapshot.conf saya sebenarnya menyatakan (dengan tab untuk membuat parser file konfigurasi rsnapshot):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

dan sangat sedikit lagi. Ya, itu berarti saya mungkin menyalin sedikit lebih banyak dari apa yang benar-benar dibutuhkan, tetapi itu memastikan bahwa apa pun yang tidak dimaksudkan sebagai ephermal disalin. Karena rsnapshot menggunakan perilaku hardlink-to-deduplicate rsync, satu-satunya biaya nyata untuk ini adalah selama menjalankan pertama; setelah itu, dengan asumsi Anda memiliki lokasi target pencadangan ukuran yang cukup (dibandingkan dengan total ukuran data Anda), dibutuhkan waktu ekstra atau ruang disk yang sangat sedikit. Saya mengecualikan isi / cadangan karena di situlah saya memasang sistem file target cadangan; tidak termasuk itu akan menyebabkan situasi menyalin cadangan ke dalam dirinya sendiri. Namun, untuk kesederhanaan jika saya perlu mengembalikan ke bare metal, saya ingin tetap menggunakan mount point!

Dalam kasus saya, saya juga tidak dapat menggunakan secara wajar one_fs 1; Saya menjalankan ZFS dengan ~ 40 sistem file saat ini. Mendaftar semua itu secara eksplisit akan menjadi mimpi buruk pemeliharaan dan membuat bekerja dengan sistem file ZFS jauh lebih terlibat daripada yang seharusnya.

Cukup banyak hal yang ingin Anda kecualikan di atas dan di luar yang akan tergantung pada distribusinya, jadi hampir tidak mungkin untuk memberikan jawaban umum. Yang mengatakan, Anda cenderung menemukan beberapa kandidat di bawah / var.

sebuah CVn
sumber
1
exclude /somepath/*baik-baik saja dalam hal ini; tidak termasuk semua yang ada di dalamnya /somepath/, seperti yang diharapkan. Anda tidak perlu **karena tidak perlu melihat lebih dalam ketika semuanya /somepath/sudah dikecualikan.
Martin von Wittich
Atau gunakan saja exclude /somepathdan abaikan direktori ini secara bersamaan - bukan hanya isinya.
Frank Kusters
4
@spaceknarf Itu rusak pemasangan ketika Anda mengembalikan ke logam telanjang, karena titik mount tidak ada.
CVn
4

Sebagian besar dari apa yang Anda coba lakukan mungkin dapat dicapai hanya dengan menggunakan one_fspengaturan. Mengatur filesystem yang ingin Anda sertakan dalam backup Anda, kemudian gunakan pengaturan yang mengabaikan sisanya ( proc, sys, dev, dll). Saya akan memasukkan /lost+foundkarena direktori itu harus selalu kosong kecuali jika Anda telah membuat cadangan sistem file yang rusak, dalam hal ini Anda mungkin ingin cadangan apa pun yang fsckdipulihkan. Juga, .pycdan .pyoseharusnya tidak benar-benar berada di direktori root di tempat pertama, jadi saya akan menghapus baris itu juga. /tmpdan /var/tmptentang satu-satunya jalur yang tersisa pada sistem "generik" yang berisi data yang dapat secara andal dikeluarkan dari cadangan. Jadi mungkin coba sesuatu seperti:

one_fs 1

exclude /tmp/
exclude /var/tmp/
depquid
sumber
Saya tidak benar-benar bermaksud /*.pycdan /*.pyctetapi sistem yang luas *.pycdan *.pyo, saya memperbaikinya. Saya tidak yakin apakah one_fsdiatur untuk 1mengecualikan apa pun yang saya inginkan.
Paolo
1
Bagaimana jika paket sistem menggunakan file seperti itu?
depquid
Anda benar, tetapi saya hampir yakin bahwa setiap file .py akan dikompilasi ulang secara otomatis, cepat atau lambat.
Paolo
3
Mungkin, tetapi di sistem saya file seperti itu diinstal oleh paket vendor. Yang berarti bahwa jika sistem dipulihkan dari cadangan, file yang menurut manajer paket akan ada yang hilang. Anda bertanya tentang solusi untuk sistem Linux "generik", dan saya pikir tidak aman untuk selalu berasumsi bahwa file seperti itu dapat hilang tanpa menyebabkan masalah.
depquid
hal yang perlu dicatat saya lupa katakan di Q. adalah bind mounts harus dikecualikan juga untuk menghindari duplikasi data.
Paolo
1

Saya merasa lebih baik memiliki daftar paket, isi / etc, / home, dan data pengguna / sistem dari / var dan di tempat lain. Biasanya lebih cepat untuk menginstal ulang paket dan menyalin kembali konfigurasi yang berfungsi.

Sean Perry
sumber
Mengapa menginstal paket, yang mencakup penulisan semua file sistem serta pemrosesan konfigurasi dan meta-data lebih cepat daripada hanya menyalin file?
depquid
Sudah pengalaman saya bahwa ketika cadangan nyata diperlukan, Anda juga mengetahui bahwa Anda belum menyimpan dan mendokumentasikan semua bit tentang suatu sistem dengan benar. Fokus daripada rekreasi bukan restorasi membuatnya lebih mudah, lebih cepat, dan lebih sering dilakukan. Jelas YMMV.
Sean Perry