Di server, instal git
cd /
git init
git add .
git commit -a -m "Yes, this is server"
Kemudian /.git/
arahkan ke drive jaringan (SAN, NFS, Samba apa pun) atau disk yang berbeda. Gunakan pekerjaan cron setiap jam / hari dll untuk memperbarui perubahan. Direktori .git akan berisi salinan versi semua file server (tidak termasuk yang tidak berguna / rumit seperti / proc, / dev, dll.)
Untuk server pengembangan yang tidak penting di mana saya tidak ingin kerumitan / biaya pengaturannya pada sistem cadangan yang tepat, dan di mana cadangan hanya untuk kenyamanan (IE kita tidak perlu membuat cadangan server ini tetapi itu akan menghemat kadang-kadang jika ada yang salah), dapatkah ini menjadi solusi cadangan yang valid atau akankah itu jatuh ke tumpukan besar?
Jawaban:
Anda bukan orang yang bodoh. Menggunakan
git
sebagai mekanisme cadangan bisa menarik, dan terlepas dari apa yang orang lain katakan,git
berfungsi dengan baik dengan file biner. Baca halaman ini dari Buku Git untuk informasi lebih lanjut tentang topik ini. Pada dasarnya, karenagit
tidak menggunakan mekanisme penyimpanan delta, itu tidak benar-benar peduli seperti apa file Anda terlihat (tetapi utilitasgit diff
cukup rendah untuk file biner dengan konfigurasi stok).Masalah terbesar dengan menggunakan
git
untuk cadangan adalah itu tidak melindungi sebagian besar metadata sistem file. Secara khusus,git
tidak merekam:Anda dapat menyelesaikan ini dengan menulis alat untuk mencatat informasi ini secara eksplisit ke dalam repositori Anda, tetapi mungkin sulit untuk melakukannya dengan benar.
Pencarian Google untuk metadata cadangan git menghasilkan sejumlah hasil yang tampaknya layak dibaca (termasuk beberapa alat yang sudah berupaya untuk mengkompensasi masalah yang saya ajukan di sini).
dllkeeper dikembangkan untuk mendukung
/etc
dan memecahkan banyak masalah ini.sumber
Saya belum menggunakannya, tetapi Anda mungkin melihat bup yang merupakan alat cadangan berdasarkan git.
sumber
Ini bisa menjadi solusi cadangan yang valid, dan lain-lain penjaga berdasarkan ide ini. Tetapi mengawasi
.git
izin direktori jika tidak mendorong/etc/shadow
dapat dibaca di.git
direktori.sumber
Sementara secara teknis Anda bisa melakukan ini saya akan menempatkan dua peringatan terhadapnya:
1, Anda menggunakan sistem kontrol versi sumber untuk data biner. Karena itu Anda menggunakannya untuk sesuatu yang tidak dirancang untuk itu.
2, saya khawatir tentang proses pengembangan Anda jika Anda tidak memiliki proses (dokumentasi atau otomatis) untuk membangun mesin baru. Bagaimana jika Anda tertabrak membeli bus, siapa yang tahu apa yang harus dilakukan dan apa yang penting?
Pemulihan bencana penting, namun lebih baik untuk mengotomatiskan (skrip) pengaturan kotak pengembangan baru daripada hanya mencadangkan semuanya. Tentu gunakan git untuk skrip / dokumentasi Anda tetapi tidak untuk setiap file di komputer.
sumber
Saya menggunakan git sebagai cadangan untuk sistem Windows saya, dan ini sangat berguna. Di bagian bawah posting, saya menunjukkan skrip yang saya gunakan untuk mengkonfigurasi pada sistem Windows. Menggunakan git sebagai cadangan untuk sistem apa pun memberikan 2 keuntungan besar:
Intinya: Cadangan git memberi Anda kekuatan luar biasa dalam mengendalikan bagaimana cadangan Anda terjadi.
Saya mengkonfigurasi ini pada sistem Windows saya. Langkah pertama adalah membuat repo git lokal tempat Anda akan mengkomit semua data lokal Anda. Saya sarankan menggunakan hard drive lokal kedua, tetapi menggunakan harddrive yang sama akan bekerja untuk (tetapi diharapkan Anda akan mendorong ini di suatu tempat yang jauh, atau jika Anda gagal jika harddrive mati.)
Pertama-tama Anda harus menginstal cygwin (dengan rsync), dan juga menginstal git untuk Windows: http://git-scm.com/download/win
Selanjutnya, buat repo git lokal Anda (hanya berjalan sekali):
init-repo.bat:
Selanjutnya, kami memiliki pembungkus skrip cadangan kami, yang akan dipanggil secara teratur oleh Penjadwal Windows:
gbackup.vbs:
Selanjutnya, kami memiliki skrip cadangan sendiri yang dipanggil oleh bungkus:
gbackup.bat:
Kami memiliki file exclude-from.txt, tempat kami meletakkan semua file untuk diabaikan:
kecualikan-dari.txt:
Anda harus pergi ke repo jarak jauh dan melakukan 'git init --bare' pada mereka. Anda dapat menguji skrip dengan menjalankan skrip cadangan. Dengan asumsi semuanya berfungsi, buka Penjadwal Windows dan arahkan cadangan per jam ke file vbs. Setelah itu, Anda akan memiliki riwayat git komputer Anda setiap jam. Ini sangat nyaman - setiap bagian teks terhapus secara tidak sengaja dan ketinggalan? Cukup periksa repositori git Anda.
sumber
Yah itu bukan ide yang buruk, tapi saya pikir ada 2 bendera merah yang harus dinaikkan:
... tapi tetap saja, ini bisa menjadi cadangan yang bagus untuk hal-hal yang berkaitan dengan korupsi. Atau seperti yang Anda katakan, jika .git / folder berada di tempat lain.
... Jadi, Anda mungkin perlu memberi tahu cronjob Anda untuk menambahkan tag, dan kemudian pastikan komit yang tidak ditandai akan dibersihkan.
sumber
rm -Rf /
akan menyebabkan kita mengalami beberapa masalah. Sistem cadangan kami saat ini menyimpan barang selama 2 tahun atau 50 versi (mana yang terakhir) sehingga cadangan kami terus meningkat. Tapi saya suka ide menambahkan tag, kita bisa memiliki tag "harian", "mingguan" dll.Saya belum mencobanya dengan sistem lengkap tetapi saya menggunakannya untuk backup MySQL saya (dengan opsi --skip-extended-insert) dan itu benar-benar bekerja dengan baik untuk saya.
Anda akan mengalami masalah dengan file data biner (seluruh isinya bisa dan akan berubah) dan Anda mungkin memiliki masalah dengan
.git
folder yang semakin besar. Saya akan merekomendasikan mengatur.gitignore
file dan hanya membuat cadangan file teks yang Anda benar-benar tahu Anda butuhkan.sumber
Saya pernah mengembangkan solusi cadangan berdasarkan subversi. Walaupun ini bekerja cukup baik (dan git harus bekerja lebih baik), saya pikir ada solusi yang lebih baik di sini.
Saya menganggap rsnapshot menjadi salah satu lebih baik - jika tidak yang lebih baik. Dengan penggunaan hard link yang baik, saya memiliki server file 300 GB (dengan setengah juta file) dengan cadangan harian, mingguan, dan bulanan akan kembali sejauh satu tahun. Total ruang disk yang digunakan hanya satu salinan lengkap + bagian inkremental dari setiap cadangan, tetapi berkat hardlink saya memiliki struktur direktori "live" yang lengkap di setiap cadangan. Dengan kata lain, file dapat diakses secara langsung tidak hanya di bawah daily.0 (cadangan terbaru), tetapi bahkan dalam daily.1 (yestarday) atau mingguan.2 (dua minggu lalu), dan sebagainya.
Membagikan ulang folder cadangan dengan Samba, pengguna saya dapat menarik file dari cadangan hanya dengan mengarahkan PC mereka ke server cadangan.
Pilihan lain yang sangat bagus adalah rdiff-backup , tetapi karena saya ingin memiliki file yang selalu dapat diakses hanya dengan menuju Explorer ke \\ servername, rsnapshot adalah solusi yang lebih baik bagi saya.
sumber
Saya punya ide yang sama untuk mencadangkan dengan git, pada dasarnya karena memungkinkan pencadangan berversi. Kemudian saya melihat rdiff-backup , yang menyediakan fungsionalitas itu (dan banyak lagi). Ini memiliki antarmuka pengguna yang sangat bagus (lihat opsi CLI). Saya cukup senang dengan itu. Itu
--remove-older-than 2W
sangat keren. Ini memungkinkan Anda untuk menghapus versi yang lebih lama dari 2 minggu.rdiff-backup
hanya menyimpan beberapa file.sumber
Saya sangat baru di git, tetapi bukankah cabang lokal secara default, dan harus didorong secara eksplisit ke repositori jarak jauh? Ini adalah kejutan yang tidak menyenangkan dan tidak terduga. Lagi pula, bukankah saya ingin semua repo lokal saya 'dicadangkan' ke server? Membaca buku git :
Bagi saya ini berarti bahwa cabang-cabang lokal tersebut, seperti file non-git lainnya di mesin lokal saya, beresiko hilang kecuali didukung secara teratur dengan beberapa cara non-git. Saya melakukan ini, tetapi itu mematahkan asumsi saya tentang git 'mendukung semuanya' di repo saya. Saya ingin klarifikasi!
sumber
Saya menemukan ini menjadi metodologi yang baik untuk kotak dev saya. Itu mengubah mereka dari menjadi sesuatu yang perlu didukung hanya ke titik akhir penyebaran.
Semua manifes konfigurasi dan instalasi paket disimpan di Puppet, memungkinkan pemindahan yang mudah dan pembaruan konfigurasi. Direktori Wayang didukung dengan git. Kickstart digunakan untuk melakukan penyebaran awal.
Saya juga menyimpan repositori YUM khusus untuk paket apa pun yang sedang dikembangkan saat itu. Ini memiliki manfaat tambahan bahwa paket apa pun yang sedang kami kerjakan tidak hanya dibiarkan sebagai binari tanpa pengawasan di sistem lokal - jika itu terjadi dan file-file akan nuked oh well. Seseorang tidak mengikuti prosedur yang benar.
sumber
Anda mungkin ingin memeriksa bup di github yang dirancang untuk melayani tujuan menggunakan git untuk cadangan.
sumber
Ini adalah pendekatan yang digunakan, masuk akal.
Keepconf gunakan rsync dan git untuk pekerjaan ini, itu adalah pembungkus alat ini untuk menjaga hal itu mudah.
Anda hanya memerlukan server pusat dengan kunci ssh yang dikonfigurasi untuk akses ke server cadangan dan beberapa baris dalam file konfigurasi. Sebagai contoh, ini adalah file saya sendiri untuk menyimpan semua / etc / dan paket debian diinstal:
Dengan itu, saya memiliki cadangan rsync dan git commit.
sumber
Pendapat pribadi saya adalah bahwa ini pada dasarnya semua mundur. Anda mendorong file ke dalam solusi cadangan, bukan menariknya keluar.
Jauh lebih baik untuk memusatkan konfigurasi server di tempat pertama, dan kemudian menariknya ke bawah, menggunakan sesuatu seperti boneka.
Yang mengatakan, itu mungkin berhasil, saya hanya tidak berpikir itu akan baik.
Coba cari di backuppc - ini cukup mudah untuk diatur dan terus terang brilian.
sumber
Ini akan bekerja agak, tetapi dua peringatan
Penambahan file tidak akan diambil secara otomatis saat Anda melakukan commit. Gunakan status --porcelean om git untuk menemukan hal baru untuk ditambahkan sebelum melakukan komit.
Mengapa kerumitan pemasangan jarak jauh untuk .ssh? Itu mungkin rapuh Bd Anda tidak akan tahu bahwa itu gagal. Gunakan repositori kosong untuk ujung jauh dengan login kunci ssh normal. Selama repositori kosong dan Anda hanya mendorong dari satu sumber dijamin untuk bekerja tanpa penggabungan.
sumber