Script untuk membuat cadangan file dari Linux ke penyimpanan cloud

Belum lama ini, kami memposting sebuah artikel tentang menghubungkan layanan penyimpanan cloud gratis yang populer ke server dengan CentOS 7. Dalam artikel ini kami akan menunjukkan bagaimana Anda dapat menggunakan data penyimpanan untuk membuat cadangan data dari server Anda. Saya menggunakan skrip ini untuk cadangan tambahan situs dan file database dari server Linux VPS saya.

Konten:

  • Cadangkan data di OneDrive dari Linux CentOS
  • Cadangkan ke Google Drive.
  • Skrip cadangan di Yandex.Disk dari Linux

Cadangkan data di OneDrive dari Linux CentOS

Kami akan mencadangkan situs dan basis data, serta memeriksa "usia" cadangan (hapus cadangan seminggu yang lalu) dan mengirim laporan dengan informasi eksekusi skrip lengkap ke pos. Sebenarnya, skrip bash itu sendiri:

#! / bin / bash
# Salin file situs ke direktori sementara
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
# Lakukan dump database, letakkan file dump di direktori sementara
mysqldump joomla> /var/www/tmp/backup/backup.sql
# Buat arsip direktori sementara
tar -cvzf backup - $ (tanggal +% y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# Periksa direktori cloud untuk cadangan lama, jika ada, hapus
find / root / OneDrive / backup / -name "backup * .tar.gz" -mtime +7 -exec rm -f \; >> result.txt
# Salin arsip yang sebelumnya dibuat ke cloud
rsync -avzr --progress /root/bin/backup*.tar.gz / root / OneDrive / backup / >> result.txt
# Hapus arsip dari direktori skrip
rm -rf /root/bin/backup*.tar.gz >> result.txt
# Kami menyinkronkan dengan cloud dengan flag -local-first, yang memungkinkan kami untuk menghapus backup lama dari cloud jika kami menghapusnya secara lokal dan mengunggah backup baru
onedrive --local-first --sinkronisasi >> result.txt
# Kami mengirim email dengan file terlampir, tempat seluruh proses pencadangan ditampilkan (ganti dengan kotak surat Anda)
echo "Lihat file untuk kesalahan dan memperbaikinya" | mail -a "/root/bin/result.txt" -s "Cadangan dibuat" - ******@gmail.com
# Kami membersihkan direktori dari file yang tidak perlu
rm -rf /root/bin/result.txt && rm -rf / var / www / tmp / backup / *

Sebelum menulis artikel ini, saya membuat beberapa cadangan sehingga saya dapat menunjukkan bahwa skrip berfungsi dengan benar (menghapus cadangan lama dan mengunggah yang baru).

Saya berlari 3 kali secara manual. Beberapa cadangan dibuat, setelah itu semuanya berhasil dikirim ke cloud:

ls -la / root / OneDrive / backup /

total 28260 drwxr-xr-x 2 root root 102 Sep 3 17:02. drwxr-xr-x 5 root root 94 Sep 3 11: 15 ... -rw-r - r-- 1 root root 9643081 Sep 3 17:00 cadangan-1909031700.tar.gz -rw-r - r-- 1 root root 9643082 3 Sep 17:01 backup-1909031701.tar.gz -rw-r - r-- 1 root root 9643083 Sep 3 17:02 backup-1909031702.tar.gz Menginisialisasi Mesin Sinkronisasi ... Menyinkronkan perubahan dari jalur lokal terlebih dahulu sebelum mengunduh perubahan dari OneDrive ... Menghapus item dari OneDrive: backup / backup-1909031700.tar.gz Menghapus item dari OneDrive: backup / backup-1909031701.tar.gz Menghapus item dari OneDrive: backup / backup-1909031702.tar.gz Mengunggah file baru ./backup/backup-1909031704.tar.gz ... Mengunggah 100% | oooooooooooooooooooooooooooooooooooooooooo | DIBUAT DALAM 00:00:04 selesai. Memproses 6 perubahan

Memeriksa cloud, ketiga arsip dengan cadangan di sini:

Langkah selanjutnya, saya menghapus cadangan yang dibuat dari direktori di server dan menjalankan skrip lagi. Mendaftar isi direktori di server:

ls -la / root / OneDrive / backup /

total 9420 drwxr-xr-x 2 root root 38 Sep 3 17:04. drwxr-xr-x 5 root root 94 Sep 3 11: 15 ... -rw-r - r-- 1 root root 9643082 Sep 3 17:04 cadangan-1909031704.tar.gz 

Setelah memasuki antarmuka web OneDrive, saya melihat bahwa cadangan dihapus dan dari sana, secara otomatis.

Selain itu, setelah menjalankan skrip, saya menerima email:

Itu saja, itu saja, cadangan di OneDrive telah berakhir..

Cadangkan ke Google Drive.

Mencadangkan ke Google Drive di Se ternyata tidak semudah dengan OneDrive, meskipun pengaturannya sendiri cukup sederhana. Masalah utama muncul dengan penghapusan cadangan lama dari Google Drive, karena direktori penyimpanan tidak dipasang di server. Tetapi setelah studi panjang tentang bantuan drive bantuan, kami berhasil memutakhirkan skrip yang digunakan sebelumnya.

#! / bin / bash
# hapus file yang lebih lama dari 7 hari dengan g.drive
/ usr / sbin / drive list -q "modifiedDate < '$(date -d '-7 day"+%Y-%m-%d')'" | cut -d" " -f1 - | xargs -L 1 drive delete -i
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (tanggal +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# unggah file ke g.drive
/ usr / sbin / unggah drive -f /root/bin/backup*.tar.gz >> result.txt
rm -rf /root/bin/backup*.tar.gz >> result.txt
echo "Lihat file untuk kesalahan dan memperbaikinya" | mail -a "/root/bin/result.txt" -s "Cadangan dibuat" - ******@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Saya tidak melukis langkah-langkah yang tersisa dalam skrip, karena mereka diulangi dengan yang sebelumnya.

Menjalankan skrip, dijalankan:

sh backup_gdrive.sh

File yang dihapus 'DSC_2151.NEF' File yang dihapus 'DSC_2153.NEF' File yang dihapus 'DSC_2159.NEF' File yang dihapus 'DSC_2226.NEF' File yang dihapus 'DSC_2225.NEF'
Periksa ketersediaan file di Google Drive: daftar drive
Ukuran Judul Id Dibuat 1oay3-FAWBZRjHtma1cRTLrOvf3t8hRpD backup-20190904.tar.gz 9,6 MB 2019-09-04 14:43:25

Dari antarmuka web, terlihat dari konsol:

Jadi, kami mendapatkan skrip yang memeriksa keberadaan cadangan lama di Google Drive cloud, menghapusnya jika memenuhi persyaratan, lalu membuat cadangan situs dan mengirimkannya ke cloud yang sama.

Skrip cadangan di Yandex.Disk dari Linux

Saya meninggalkan penyimpanan cloud ini untuk camilan, karena mencadangkan ke Yandex.Disk adalah yang termudah, karena Kami memasang penyimpanan cloud Yandex melalui WebDav sebagai perangkat disk terpisah. Metode yang sama, kita menjalankan skrip, hanya dengan perbedaan kecil, kita tidak perlu menyinkronkan atau mengunggah file dengan perintah khusus, kita bekerja seperti dengan direktori server normal. Sinkronisasi direktori dilakukan menggunakan rsync. Script akan terlihat seperti:

#! / bin / bash
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (tanggal +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
find / mnt / yad / -name "backup * .tar.gz" -mtime +7 -exec rm -f \; >> result.txt
rsync -avzr --progress /root/bin/backup*.tar.gz / mnt / yad / >> result.txt
rm -rf /root/bin/backup*.tar.gz >> result.txt
echo "Lihat file untuk kesalahan dan memperbaikinya" | mail -a "/root/bin/result.txt" -s "Cadangan dibuat" - ****@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Semua sama, hanya tanpa perintah tambahan. Jika Anda memiliki jalur lain ke penyimpanan cloud, ubah skrip ke.

Di akhir artikel saya ingin menambahkan. Saya menempatkan skrip ini di direktori terpisah dan menjalankannya di mahkota. Jika ruang disk pada drive cloud Anda sering memungkinkan Anda membuat cadangan, buat sesering mungkin, saya sarankan setidaknya sekali setiap 3 hari. Gunakan sumber daya penyimpanan cloud Anda 100%.

Contoh tugas di mahkota:

0 0 * * 6 /root/bin/backup.sh - jalankan skrip cadangan setiap hari Sabtu pukul 00-00
0 0 * / 3 * * /root/bin/backup.sh - jalankan skrip cadangan setiap 3 hari pada 00-00

Dan seterusnya, konfigurasikan cadangan sesuka Anda, saat beban di server minimal.