Inilah pengantar untuk digunakan rsync
untuk membuat cadangan pada Pi. Setelah pencadangan awal dibuat, tetap perbarui dengan cara ini jauh lebih cepat daripada terus-menerus merobek seluruh gambar. Anda dapat melakukan ini pada hard drive lokal atau melalui jaringan.
Anda sebenarnya tidak ingin salinan lengkap dari sistem yang berjalan sebagai cadangan, karena beberapa hal yang tampaknya ada di sistem file hanya ada saat runtime. Menyertakannya dalam cadangan dan kemudian menggunakannya untuk membuat ulang gambar nanti dapat membuat masalah bagi Anda.
Ada beberapa pengecualian lain juga. rsync
dapat menerima daftar pola ( gumpalan ) untuk dikecualikan, dan itu dapat dibaca dari file, jadi mari kita pergi melalui apa yang seharusnya ada di file seperti itu. Perhatikan bahwa entri berbentuk /directory/*
dan bukan /directory
. Ini karena kami ingin mereka ada, tetapi kami tidak ingin menyalin apa pun di dalamnya.
/proc/*
/sys/*
Ini tidak benar-benar ada pada disk. Mereka adalah antarmuka ke kernel, yang membuat dan memelihara mereka dalam memori . Jika Anda menyalin ini dan kemudian menyalinnya kembali ke sistem dan mem-bootnya, itu akan (paling tidak) tidak berarti, karena kernel menggunakan itu sebagai titik mount untuk antarmuka [Jika Anda ingin melihat apa yang terjadi ketika Anda memasang partisi sistem file pada direktori dengan data di dalamnya, coba. Ini berfungsi dan tidak akan membahayakan, tetapi barang-barang yang ada di direktori sekarang tidak dapat diakses.]
Perhatikan bahwa sangat penting bahwa /sys
dan /proc
titik mount ada. Tapi mereka seharusnya tidak mengandung apa pun. Lanjut:
/dev/*
The dev
direktori tidak cukup hal yang sama seperti proc
dan sys
tetapi untuk tujuan kita itu. Jika Anda yakin bahwa Anda harus menyimpan ini sehingga Anda dapat memiliki node perangkat yang sama di cadangan Anda atau sesuatu, Anda salah . Jangan repot-repot. Jangan menyalin dev
. Dahulu kala Linux memang bekerja seperti itu, tetapi tidak lagi.
/boot/*
Ini adalah semacam kasus khusus dengan sebagian besar (mungkin semua) distro khusus Pi seperti Raspbian. Ini sebenarnya adalah titik mount untuk partisi pertama, vfat. Kami akan menghadapinya secara terpisah. Apa pun yang Anda lakukan, jangan repot-repot memasukkannya ke sini, karena sekali lagi, ini adalah titik puncak.
/tmp/*
/run/*
/run
umumnya tidak pada disk juga, itu di memori. Mungkin /tmp
bisa terlalu (ini akan menghemat sedikit aksi kartu SD), tetapi bagaimanapun, seperti namanya, ini bukan tempat untuk menyimpan data yang persisten. Aplikasi yang menggunakannya berharap dapat dihapus pada setiap boot.
/mnt/*
/media/*
Ini penting terutama jika Anda berencana untuk mencadangkan ke hard drive atau stik USB dan perangkat sedang /mnt
atau /media
(otomatis cenderung menggunakan yang terakhir), karena jika Anda tidak mengecualikan lokasi perangkat tersebut di sistem file Anda akan buat loop yang mencadangkan konten drive ke dirinya sendiri, sampai kehabisan ruang. Saya pikir rsync
mungkin cukup pintar untuk menemukan sesuatu yang bodoh, tetapi cobalah untuk menghindari pengujian premis.
Aktif ke pencadangan aktual: Buat direktori untuk mencadangkan pada harddrive yang terpasang secara lokal, USB, dll. - mis. "Pi_backup". Anda dapat mem-backup secara bergantian ke lokasi yang jauh melalui ssh
(lihat di bawah) atau menggunakan sistem file yang terpasang di jaringan, tetapi ini mungkin akan memakan waktu agak lama untuk pertama kalinya.
Jika file yang berisi daftar untuk dikecualikan adalah /rsync-exclude.txt
1 dan drive Anda adalah /mnt/usbhd
, untuk melakukan pencadangan yang sebenarnya:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
Perhatikan bahwa ada garis miring padapi_backup/
.
Ini akan memakan waktu cukup lama dan menghasilkan banyak output (jika Anda ingin memeriksanya dalam log, tambahkan > rsync.log
). --delete
tidak ada artinya pertama kali, tetapi untuk menjaga cadangan diperbarui menggunakannya. Ini memastikan bahwa hal-hal yang Anda kemudian hapus pada Pi juga akan dihapus dari cadangan Anda. The a
set rekursi ke direktori dan memastikan semua atribut berkas pertandingan. -H
adalah untuk melestarikan hard link 2 , v
adalah untuk verbose itulah sebabnya Anda mendapatkan beberapa output (jika rsync
tidak diam). Lihat man rsync
lebih lanjut.
Ada jalan pintas di mana Anda dapat melewati --exclude-from
file. Jika Anda yakin bahwa semua hal yang tidak ingin Anda salin ( /tmp
dll.) Ada di sistem file yang terpisah, Anda bisa menggunakan:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
telah dimasukkan. Ini adalah bentuk singkat dari --one-file-system
, yang memberitahu rsync
untuk tidak melewati batas filesystem. Secara pribadi saya lebih suka --exclude-from
, tetapi pada misalnya, Raspbian default, --one-file-system
akan berfungsi dengan baik. Anda dapat menggunakan keduanya jika ingin -x
berhati-hati: D
Itu bukan cadangan yang lengkap. Sudah cukup jika Anda belum memasukkan apa pun boot
dan Anda baik-baik saja dengan menggunakan cadangan untuk hanya mengembalikan sistem dengan menempelkan kartu di komputer dan menjalankan:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
Anda juga dapat melakukan ini dengan kartu dengan gambar baru di atasnya (anggap itu sama dengan gambar dasar Anda) walaupun itu sedikit tidak efisien jika Anda harus membuat gambar (karena Anda kemudian akan menimpa sebagian besar dari itu). Anda juga dapat menghubungkan kartu SD lain melalui adaptor USB dengan gambar seperti itu, dan menggunakan metode di atas untuk mempertahankan kartu duplikat.
Jika Anda memasukkan barang-barang /boot
(misalnya, kernel khusus), termasuk /boot/config.txt
, Anda juga ingin mencadangkannya (cukup sederhana - tidak banyak). Lakukan saja secara terpisah, dan ketika Anda memulihkan, hal itu masuk di partisi pertama.
Lihat di sini jika Anda ingin membuat gambar gaya Raspbian kosong yang dapat Anda backup. Anda dapat menggunakan metodologi serupa untuk membuat kartu gaya Raspbian kosong - hanya daripada berurusan dengan .img
file, Anda akan berurusan dengan perangkat nyata (misalnya /dev/sdb
), artinya yang harus Anda lakukan adalah membuat tabel partisi dengan fdisk
dan kemudian format /dev/sdb1
dan sdb2
(atau apa pun) dengan mkfs
.
Tetapi menyalin seluruh gambar lebih mudah! Kenapa repot-repot dengan ini?
Tidak sesulit itu; Saya mengembalikan ke kartu kosong (diformat sesuai tautan terakhir) dalam 10 menit. Ya, hanya menggunakan dd
semuanya lebih sederhana (jika Anda menemukan hal-hal seperti kata-kata membingungkan ...), TETAPI itu butuh waktu cukup lama setiap kali Anda ingin memperbarui cadangan Anda karena Anda harus melakukan 100% setiap kali. Dengan menggunakan rsync
, begitu ada cadangan, memperbarui itu jauh lebih cepat, sehingga Anda dapat mengaturnya agar terjadi tanpa rasa sakit setiap hari melalui cron. Bahkan melalui jaringan. Setiap enam jam. Semakin sering Anda melakukannya, semakin sedikit waktu yang dibutuhkan.
rsync
melalui ssh
Ini sebuah contoh:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"Opsi" akan menjadi, misalnya, -av --delete --exclude-from=/rsync-exclude.txt
dan "opsi ssh" adalah apa pun yang biasanya Anda gunakan (jika ada). Anda harus memiliki akses root melalui ssh
untuk melakukan hal ini untuk keperluan backup sistem (set PermitRootLogin=yes
di /etc/ssh/sshd_config
dan restart server).
1 Anda harus menyimpan file ini. Anda dapat memberikan komentar di dalamnya pada baris yang dimulai dengan #
atau ;
. Ini bisa termasuk rsync
perintah aktual , yang dapat disalin kemudian disalin sehingga Anda tidak harus mengingatnya setiap kali.
2 Terima kasih kepada Kris karena menunjukkan rsync
tidak melakukan ini secara otomatis.
dd
, lihatlahrsync
.