Jika Anda menjalankan instance dari Data Cloud NextCloud yang populer, Anda mungkin menginginkan cara untuk mencadangkan data Anda juga. Hari ini saya menunjukkan kepada Anda cara Mencadangkan NextCloud dan cara memindahkan file Anda ke server lain. Kami akan melakukan ini dengan cara termudah, tanpa deduplikasi data, tanpa pencadangan tambahan, cukup dengan membuat file tar.gz dari data terpenting kami dan memindahkannya ke server cadangan, menimpa yang sudah ada, menggunakan Cron. Saya akan memberi Anda opsi yang tidak menimpa cadangan yang ada, tetapi juga membuat setiap cadangan satu per satu dengan tanggal.
Mari kita lihat skenario kita dulu.
Skenario
NextCloudServer =Server NextCloud kami, tentu saja..
BackupServer =Server Cadangan Kami.
Apa yang ingin kita capai? Kami ingin membuat Backup di NextCloudServer dan memindahkannya ke BackupServer kami. Untuk kedua server, kami menggunakan Ubuntu 16.04 LTS dalam contoh ini.
Jadi di mana untuk memulai? Pertama-tama kita perlu memasang folder BackupServer di server NextCloud.
Mari kita asumsikan server cadangan kita memiliki folder bernama "backup", yang tentu saja perlu Anda buat di BackupServer Anda.
Jadi mari kita asumsikan path ke BackupServer kita termasuk folder backup adalah:
//BackupServer.com/backups
Langkah 1 - Mengatur NextCloud ke Mode Pemeliharaan
Untuk memastikan integritas data, pertama-tama kita akan mengatur NextCloud ke Maintenance Mode. Ini memastikan bahwa tidak ada yang bekerja secara aktif di NextCloud dan mengurangi risiko cadangan yang rusak.
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – on
Langkah 2 - Memasang Server Cadangan
Di NextCloudServer Anda buat direktori baru. Anda dapat membuatnya di mana pun Anda inginkan, untuk contoh ini, kami menggunakan yang berikut:
mkdir /mnt/cifs/backups/nextcloud
Untuk dapat me-mount share CIFS, Anda harus menginstal cifs-utils, jadi kami melakukannya terlebih dahulu.
apt-get update apt-get install cifs-utils
Memasang drive secara manual
Pertama, kita akan membuat file tempat kita menyimpan kredensial ke server cadangan kita, jadi kita tidak perlu menggunakannya sebagai teks yang jelas dalam skrip kita.
nano /etc/backup-credentials.txt
Dan masukkan kredensial Anda seperti pada contoh di bawah ini:

Tekan CTRL+O untuk menyimpan dan CTRL+X untuk keluar.
Sekarang kita perlu menyesuaikan izin:
chmod 600 /etc/backup-credentials.txt

Setelah ini, kita akan memasang BackupServer secara manual.
mount -t cifs -o credentials=/etc/backup-crendetials.txt //BackupServer.com/backups /mnt/cifs/backups/nextcloud
Ini seharusnya sudah memasang folder //BackupServer.com/backups Anda ke /mnt/cifs/backups/nextcloud.
Anda dapat memverifikasi ini dengan menggunakan perintah berikut:
df -h

Jika Anda akan me-restart NextCloudServer Anda sekarang, mount akan hilang, karena kami baru saja menambahkannya secara manual. Anda dapat secara otomatis memetakan drive dengan memodifikasi file /etc/fstab atau cukup memasukkan perintah mount dari atas ke dalam cronjob Anda, yang merupakan opsi yang akan kami pilih.
Saya secara khusus memilih opsi ini untuk menghindari kesalahan saat memulai ulang. Jika drive tidak tersedia saat server melakukan boot ulang, drive mungkin masuk ke mode Darurat dan tidak akan muncul. Ada beberapa cara untuk mengatasinya dengan menggunakan opsi nofail atau noauto di dalam file fstab, tetapi saya tidak akan membahasnya dan memilih cara yang aman dan mudah. Jika Anda ingin memasang drive secara otomatis dengan memodifikasi file fstab Anda, lakukan pencarian Google tentang cara melakukannya, tetapi cerdaslah dalam mengedit file fstab Anda karena dapat mencegah server Anda melakukan booting.
Pilihan ada di tangan Anda.
Langkah 3 - Membuat cadangan
Baiklah, sekarang setelah kita memasang mount, kita perlu mencari tahu file mana yang perlu kita backup.
Kita perlu membuat cadangan:
- Direktori utama, terletak di /var/www/nextcloud
- Direktori data, secara default terletak di /var/www/nextcloud/data tetapi disarankan untuk memindahkannya ke lokasi lain tidak di dalam folder /www/, tetapi saya akan menunjukkan cara menemukannya.
- Database SQL
Mencadangkan direktori utama
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
Pikiran itu. pada akhirnya, itu milik perintah. Itu saja untuk itu.
Mencadangkan direktori data
Jadi jika direktori data Anda tidak berada di lokasi default, Anda dapat menemukannya dengan membuka file konfigurasi nextcloud:
nano /var/www/nextcloud/config/config.php

Anda dapat meninggalkan file dengan menekan CTRL+X.
Seperti yang Anda lihat, ini menunjukkan di mana direktori data Anda berada. Jadi gunakan jalur ini untuk mencadangkannya. Perhatikan juga bahwa ada tertulis jenis database yang digunakan NextCloud Anda, yang relevan untuk langkah selanjutnya.
Baiklah, untuk membuat cadangan direktori data Anda, jalankan:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data .
Sesuaikan jalur /var/lib/nextcloud/data ke jalur Anda sendiri! Pikiran itu. pada akhirnya, itu milik perintah. Ini bisa memakan waktu lama untuk diselesaikan.
Mencadangkan database
Ok, jadi ada beberapa database yang bisa digunakan NextCloud, dalam contoh ini kita asumsikan kita menggunakan MySQL. Jika penginstalan Anda menggunakan database yang berbeda, Anda harus mencari perintah yang sesuai untuk Anda di Google.
Untuk melakukan dump database ini dengan cara yang aman tanpa permintaan sandi dalam tugas Cron, pertama-tama kita harus membuat / atau memodifikasi file .my.cnf yang terletak di direktori ~/.
nano ~/.my.cnf
Mungkin saja file tersebut sudah ada dan memiliki entri, tergantung pada konfigurasi server Anda, jangan khawatir, cukup tambahkan baris di bawah teks yang ada.
[mysqldump] user = yourDBusername password = yourDBpassword

Tekan CTRL+O untuk menyimpan dan CTRL+X untuk keluar.
Jika Anda tidak tahu Nama Pengguna atau Kata Sandi DB Anda - Ada tertulis di dalam config.php Anda yang telah kita lihat sebelumnya.
Selanjutnya, kita perlu menyesuaikan hak akses file:
chmod 600 ~/.my.cnf
Sekarang Anda siap menjalankan dump database Anda tanpa memasukkan kata sandi.
Anda dapat menjalankan SQL Dump dengan mengetik:
mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql
Baiklah, sekarang kami membuat cadangan dari 3 file terpenting. Mari kita verifikasi jika semuanya ada.
Kami CD di direktori cadangan kami dan juga akan menjalankan df -h lagi untuk memverifikasi bahwa ruang benar-benar terisi.
cd /mnt/cifs/backups/nextcloud df -h
Dan benar saja:

Kami juga dapat menjalankan ls di dalam direktori cadangan kami untuk memverifikasi bahwa file tersebut ada di sana:
ls
Dan itu saja untuk proses backup. Sekarang kita tahu semuanya berfungsi, dan sekarang kita dapat mengotomatiskan seluruh proses menggunakan Cron. Tapi pertama-tama, kita harus menonaktifkan mode Maintenace lagi.
Langkah 4 - Menonaktifkan mode Pemeliharaan
Cepat dan mudah:
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – off
Langkah 5 - Membuat tugas Cron
Sekarang kita pada dasarnya membuat pekerjaan Cron yang menjalankan semua perintah yang baru saja kita jalankan secara manual pada tanggal tertentu yang kita tetapkan. Anda harus mempelajari setidaknya dasar-dasar pekerjaan Cron sebelum mencoba ini secara membabi buta. Saya memiliki tutorial singkat dan informatif l tentang itu, termasuk video .
Saya ingin tugas Cron saya berjalan setiap hari Minggu, mulai pukul 20:59.
Kami membuat Cron dengan memodifikasi file crontab:
crontab -e
Sekarang kita tahu bahwa pencadangan Direktori Data akan memakan waktu paling lama, jadi kita akan menjalankan ini sebagai perintah terakhir.
59 20 * * 7 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – on 0 21 * * 7 mount -t cifs -o credentials=/etc/backup-credentials.txt //BackupServer/backup /mnt/cifs/backups/nextcloud 05 21 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud . 30 21 * * 7 mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql 00 22 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data . 00 02 * * 1 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – off
Mari kita cepat menelusuri setiap baris untuk menghilangkan kebingungan.
- Setiap Minggu 20:59: Aktifkan mode Pemeliharaan
- Setiap Minggu pukul 21:00: Pastikan BackupServer kita sudah di-mount/remount
- Setiap Minggu 21:05: Cadangkan Direktori File NextCloud kami
- Setiap Minggu pukul 21:30: Cadangkan Basis Data SQL Kami
- Setiap Minggu pukul 22:00: Cadangkan Direktori Data besar kami
- Setiap Senin pukul 02:00: Nonaktifkan mode Pemeliharaan
Sekarang Anda dapat melihat bahwa saya memberi skrip cukup waktu antara Pencadangan Direktori Data terakhir dan meninggalkan mode Pemeliharaan.

CTRL+O untuk menyimpan dan CTRL+X untuk keluar.
Jika Anda ingin memvalidasi bahwa skrip sedang berjalan, cukup navigasikan ke folder cadangan pada hari Senin dan jalankan.
ls -la
Untuk memverifikasi bahwa file memiliki tanggal yang benar.
Dan itu saja. Seperti yang saya katakan, ini adalah cara sederhana dan mudah untuk membuat Cadangan. Jika Anda ingin membuat cadangan tambahan atau menerapkan deduplikasi data, Anda harus melihat sesuatu seperti Rsync atau Borgbackup.
Seperti yang dijanjikan, opsi untuk membuat file individual tanpa menimpanya ada di bawah.
Langkah 6 (OPSIONAL) - Menggunakan nama file individual
Sangat mudah untuk melakukannya, tetapi perlu diingat bahwa ini akan mengisi ruang hard drive Anda dengan cukup cepat tergantung pada seberapa sering Anda menjalankan pencadangan. Kami cukup membuat nama file individual dengan menambahkan opsi tanggal di perintah pencadangan kami.
Jadi alih-alih menggunakan perintah ini:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
Anda akan menggunakan ini:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir_`date +"%Y%m%d"`.tar.gz -C /var/www/nextcloud .
Ini akan menambahkan tanggal ke nama file dengan tanggal spesifik pembuatannya.
Anda cukup mengulangi langkah ini untuk semua cadangan lainnya juga. Saya akan mengajari Anda cara memulihkan cadangan di tutorial mendatang.