Linux - Direktori apa yang harus saya kecualikan saat membuat cadangan server?

37

Saya mencadangkan server Linux dan menyimpannya di server lain.

Saya mulai dengan yang sederhana

rsync -aPh --del server.example.com:/ /mnt/backup

Lalu seseorang menunjukkan bahwa saya tidak boleh membuat cadangan /proc, karena Anda tidak ingin mengembalikan /procserver yang satu.

Apakah ada hal lain yang harus saya / tidak seharusnya sertakan?

Misalnya, bagaimana dengan /sys?

Rory
sumber

Jawaban:

24

Ini benar-benar tergantung pada bagaimana Anda akan memulihkan sistem Anda. Jika Anda akan membangun kembali maka Anda hanya memerlukan file konfigurasi / data untuk layanan Anda (misalnya: / etc, / opt, / var, / home)

Jika Anda setelah pemulihan sistem penuh, maka Anda dapat menghilangkan / proc, / boot & / dev. Kemudian Anda dapat menginstal OS minimum dari media boot Anda dan kemudian memulihkan sistem Anda melalui cadangan Anda.

Tentu saja, cadangan terbaik adalah yang telah diuji dan diverifikasi .

Jadi hilangkan apa yang menurut Anda tidak Anda perlukan, coba kembalikan ke VM dan pastikan Anda bisa mendapatkan kembali sistem Anda menggunakan data ini.

Wayne
sumber
5
Jangan hilangkan /bootsama sekali - Anda mungkin perlu membandingkan konfigurasi boot lama dengan konfigurasi boot baru. Pastikan untuk tidak mengembalikan /boot kecuali secara manual.
Quack quixote
5
Dan mengecualikan / sys juga ... Dan untuk mengembalikan ke bare metal, Anda sebaiknya mengecualikan /etc/udev/rules.d/ juga.
wazoox
2
juga kehilangan + yang ditemukan untuk sistem file, / mnt dan / media untuk tidak menyalin perangkat apa pun yang terpasang
blade
29

Keduanya /procdan /sysmerupakan sistem file virtual yang mencerminkan keadaan sistem, dan memungkinkan Anda mengubah beberapa parameter runtime (dan terkadang melakukan hal-hal yang lebih berbahaya, seperti langsung menulis ke memori atau ke perangkat). Anda seharusnya tidak pernah membuat cadangan atau memulihkannya.

Di sebagian besar distribusi modern, /devdibuat secara dinamis saat boot (ini adalah sistem file memori yang diisi oleh udevdan teman-teman). Tidak ada gunanya mencadangkannya, dan berusaha mengembalikannya sia-sia. Namun, jika distribusi Anda dikonfigurasi untuk menggunakan statis /dev, ini tidak berlaku (cek /proc/mounts, jika /devadalah tmpfsitu adalah filesystem memori).

Ada sistem file lain yang tidak boleh Anda cadangkan; usbfs(biasanya pada /proc/bus/usb, jika dipasang sama sekali), debugfs(seharusnya berada di /sys/kernel/debugjika dipasang sama sekali, tetapi beberapa orang meletakkannya di tempat lain, Anda mungkin tidak memiliki satu ini), devpts(dipasang di /dev/pts), lain tmpfscontoh (sering ditemukan di /dev/shm, /var/run, /var/lock, dan tempat-tempat lain; membackupnya dan mengembalikannya seharusnya tidak berbahaya tetapi tidak ada gunanya, karena isinya hilang pada saat shutdown), dan semua sistem file jarak jauh atau direktori automounter ajaib (berusaha untuk membuat cadangan atau mengembalikannya dapat berakhir dengan bencana, seperti yang Anda bisa lakukan akhirnya mencadangkan / mengembalikan ke mesin yang berbeda ). Anda juga harus berhati-hati dengan /mediadan/mnt, karena perangkat eksternal (seperti CD yang Anda lupa di drive) dapat ditemukan di sana, tetapi Anda mungkin juga menggunakannya dengan sengaja untuk memasang sesuatu yang harus dicadangkan.

Perhatikan bahwa, selain sebagian besar tidak berbahaya tmpfscontoh, filesystem jaringan / automounters, dan removable media, filesystem Anda tidak harus kembali semua keturunan /dev, /procatau /sys. Jika Anda tidak memiliki sistem file jaringan (atau automounters), dan tidak ada media yang dapat dilepas, singkirkan /sysdan /procdan boot ulang setelah pemulihan (untuk menghapus tmpfsinstans) cukup.

CesarB
sumber
8

Beberapa file khusus di / proc dan / sys membingungkan rsync. Anda juga tidak ingin mencadangkan sistem file jaringan yang terpasang. File yang jarang juga dapat menyebabkan masalah.

Tambahkan -x untuk membatasinya ke satu sistem file. Itu menghindari semua sistem file jaringan dan / proc dll. Namun Anda kemudian perlu menjalankan satu rsync untuk setiap sistem file yang telah Anda mount.

Tambahkan -S untuk menangani file jarang secara masuk akal.

pjc50
sumber
4

/ boot, / dev dan / proc tidak berguna untuk cadangan - meskipun, jika Anda tahu apa yang Anda lakukan, Anda dapat membuat cadangan / boot.

Saya juga tidak akan mencadangkan / lib, / media, / mnt, / sbin, / bin, / srv, / sys, atau / tmp.

/ usr adalah opsional, tergantung pada apakah Anda memiliki sesuatu di / usr yang layak dicadangkan. Jika saya jadi Anda, saya akan paling khawatir tentang membuat cadangan $ HOMEs, / var, dan / etc pengguna (untuk file konfigurasi).

Sekali lagi, ini benar-benar semua tergantung pada jenis cadangan yang ingin Anda lakukan. Apakah ini server web? Apakah ini komputer pribadi? Apakah ini server shell dengan banyak direktori di bawah / home?

Michael Pobega
sumber
Saya ingin mengembalikan dengan menggunakan kloning cadangan ke mesin baru
Rory
Apa yang Anda maksud dengan "kloning"? Anda selalu dapat mencadangkan partisi mentah menggunakan dd dan sfdisk sfdisk -d> partition_table.part dd jika = / dev / sda1 dari = dev.sda1.img (lakukan ini untuk setiap partisi) kemudian, pada sistem baru Anda: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img dari = / dev / sda1 (untuk setiap partisi, sekali lagi)
Michael Pobega
Karena sistem komentar tidak suka tag kode, saya memposting jawaban lain.
Michael Pobega
@MichaelPobega Jika Anda membuat cadangan partisi mentah seperti yang Anda katakan maka Anda harus menyalin seluruh ukuran disk. Mengapa menyalin 512GB ketika Anda hanya menggunakan 80BG disk Anda? Dengan rsyncAnda tidak hanya menyalin apa yang telah Anda gunakan, tetapi juga mengaktifkan sinkronisasi di masa depan, sehingga Anda dapat dengan aman menjalankan tugas cron untuk itu.
Maks
Kembali ke ini bertahun-tahun kemudian, pengalaman saya selama sepuluh tahun telah mengajarkan saya bahwa Anda adalah @Max yang benar.
Michael Pobega
3

Anda dapat mencapai total cadangan menggunakan sfdisk dan dd.


Untuk mencadangkan skema partisi dari setiap hard drive, Anda akan menggunakan sfdisk seperti ini:

sfdisk -d /dev/sda  > parttable_sda.part

Untuk mencadangkan setiap partisi Anda dapat menggunakan dd, seperti:

dd if=/dev/sda1 of=devsda1.img

Di mana /dev/sda1tidak di-mount, seperti dengan boot live-CD.

(perlu diingat bahwa Anda perlu memiliki banyak ruang kosong untuk menulis file ini; jadi Anda mungkin ingin menulisnya ke media eksternal) Lakukan itu untuk setiap partisi, satu per satu, dan buat cadangan semuanya.


Kemudian, untuk mengembalikan pada komputer lain yang bisa Anda lakukan:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
sumber
3
PERINGATAN: lakukan ini hanya jika partisi tidak terpasang atau dipasang hanya-baca. Membuang isi mentah partisi ketika sedang ditulis untuk dapat berakhir dengan filesystem yang sangat tidak konsisten pada cadangan (karena blok di dekat awal filesystem disalin "lebih awal" daripada blok di dekat akhir, dan algoritma sistem file tidak harapkan ini; Anda dapat menghindari masalah ini jika Anda entah bagaimana dapat melakukan snapshot atom dari sistem file). fsck tidak akan membantu Anda, karena algoritmanya juga bergantung pada urutan sistem file yang menulis ke disk.
CesarB
dd adalah cara untuk pergi. Boot di LiveCD, tentu saja. Dan penting untuk dd if=/dev/urandom of=/dev/sdb bs=512 count=12menghapus MBR dan tabel partisi drive target.
SDsolar
2

Alih-alih mengecualikan, saya biasanya hanya membuat cadangan apa yang saya inginkan. Termasuk: /home /etc /var(kecuali /var/log)

DennyHalim.com
sumber
1

Pada dasarnya, pseudo-filesystems (/ proc, / sys, / dev / shm ...) tidak perlu dicadangkan.

sendmoreinfo
sumber
1

Seperti yang ditunjukkan oleh komunitas hebat ini:

/ dev / proc / sys / tmp / run / media / hilang + ditemukan / boot (/ boot adalah opsional, lihat komentar lain)

Untuk referensi perintah rsync terakhir saya (di bawah Arch dengan media eksternal yang dipasang di '/ run / media / fred / INTENSO /' dan mencadangkan ke folder bernama 'fred') adalah:

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / hilang + ditemukan --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(file yang dikecualikan juga dapat ditentukan dengan kurung keriting (--exclude = {/ dev, / proc}) di bawah Bash atau dengan file teks (--exclude-from = 'excude.txt')).

-P: tampilkan progres -a: mode arsip -z: kompres saat transfer -h: angka keluaran dalam format yang dapat dibaca manusia -m: pangkas direktori kosong -x: batas ke satu file-sistem -v: verbose

Fred Christophe
sumber
1

Saya menggunakan mesin Ubuntu 18.04 dan saya tidak menyertakan ini:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Juga, khusus untuk pengaturan saya, saya mengecualikan ini:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
pengguna2724383
sumber
0

Saya biasanya membiasakan mencadangkan semuanya pada sistem, bahkan hal-hal yang saya tahu pasti tidak berguna untuk dicadangkan. Ini lebih mudah untuk diatur dan Anda dapat 100% yakin bahwa Anda akan mendapatkan semua yang Anda butuhkan termasuk dalam cadangan.

Maximus Minimus
sumber
1
ya, tetapi pertanyaan selanjutnya adalah apa yang Anda dapatkan dari cadangan Anda sebagai tidak dibutuhkan?
Rory
Yang saya akan jawab: "tidak ada".
Maximus Minimus
Benar. Anda mengecualikannya dari proses pemulihan, bukan cadangan itu sendiri. Tetapi Anda mungkin masih ingin meninggalkan /procdan /devagar tidak membingungkan sedikit orang miskin rsync.
TJ Crowder
1
@ mh, Anda akan mengembalikan / proc / kcore, yang merupakan memori dari server asli? kedengarannya agak konyol ...
Rory
0

Saya menggunakan kotak linux Ubuntu sebagai server pengujian untuk pengembangan situs web, dan untuk hosting wiki dokumentasi. Setiap malam sebuah crontab membuang database MySQL ke / var / www, dan kemudian semua / var / www di-zip dan direplikasi ke server cadangan. Ini tidak ideal, tetapi cukup. Saya harus membangun kembali server pada satu titik, dan semua saya benar-benar ketinggalan adalah file konfigurasi Apache dan Samba.

Nic
sumber
0

Saya berasumsi Anda tidak memiliki Linux di mesin virtual. Jika memungkinkan, saya akan mendesak mempertimbangkan pindah ke virtualisasi. Cadangan pada tingkat vm adalah tingkat konsistensi dan kemudahan penggunaan yang sama sekali baru. Ada alat virtualisasi gratis, jadi Anda tidak perlu berinvestasi ke VmWare atau alat monster mahal lainnya.

Gnudiff
sumber
0

Pertanyaan: Direktori mana yang harus saya kecualikan saat membuat cadangan server?

Berikut ini adalah skrip yang sering saya gunakan, dari laptop Ubuntu 16.04 LTS ke server Ubuntu 16.04 LTS. Itu jelas menunjukkan direktori mana yang harus dilewati saat membuat cadangan penuh:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Perhatikan pengecualian /mnt- yang mana setiap sistem Ubuntu memiliki drive cadangan penuh waktu yang dipasang untuk rsyncbackup mandiri berbasis cron 4 kali sehari. Drive ini dipasang oleh entri fstabdan selalu ada. Untuk memasukkan mereka dalam cadangan ke sistem lain akan menjadi duplikasi.

Demikian pula, di /mediamana drive USB dipasang. Mereka didukung secara terpisah.

SDsolar
sumber