W ake/ s leep b ac k u p - 'bangun' drive usb, rsyncs dan powers off
WSBKP adalah skrip shell pembungkus untuk membuat cadangan 'offline' yang murah dan mudah (sebagian). Cadangan level file dibuat dengan mengatasi data ke disk eksternal (USB) menggunakan RSYNC. Memiliki disk online hanya saat mendukung dapat menawarkan manfaat seperti isolasi data dan (beberapa) perlindungan terhadap loker crypto.
Ini dimaksudkan untuk berjalan di Linux dan selain Rsync menggunakan HDParm dan Udisksctl. Perhatikan bahwa tidak semua pengontrol dan drive USB dijamin akan bekerja.
Saat dieksekusi, output terlihat seperti ini:
root@host: ~ # wsbkp.sh
[2020-01-01 17:58:20] Powering on drive (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)...
- INFO: Resetting devices from /sys/bus/pci/drivers/ehci-pci...
- INFO: Resetting devices from /sys/bus/pci/drivers/ohci-pci...
[2020-01-01 17:58:28] Using backup device " /dev/sdb5 " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
- INFO: Mounted " /dev/sdb5 " " /mnt/bkp "
* Command: " rsync -aA --info=flist0,name0,progress2,stats2 --progress --stats "
* Dir(s): " / "
* Target drive: " /dev/sdb5 " mounted on " /mnt/bkp " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
* Exclude:
/proc/
/sys/
/lost+found/
/mnt/
/run/
/tmp/
[2022-03-26 17:58:28] Backup SOURCE DIR: " / " to DESTINATION: " /mnt/bkp/ "
* Syncing complete, listing " /mnt/bkp " ...
total 100
drwxr-xr-x 26 root root 4096 Mar 11 06:11 .
drwxr-xr-x 14 root root 4096 Apr 26 2021 ..
drwxrwxr-x 2 root root 4096 Jan 28 06:54 bin
drwxr-xr-x 4 root root 4096 Mar 11 06:15 boot
drwxr-xr-x 17 root root 4096 Mar 26 17:29 dev
drwxr-xr-x 194 root root 12288 Mar 26 14:30 etc
< -- CUT -- >
[2021-0-01 18:24:57] Done. Powering off
Wake/Sleep Backup
-----------------
SYNOPSIS: wake up usb drive, rsync, power off
USAGE: wsbkp.sh -[o|p][w|s][m|u][l][f] [dirs to backup]
OPTIONS: [-p]|[-o] power on | power off
[-w]|[-s] wakeup | sleep
[-m]|[-u] mount | umount
[-l] list drive info
[-d] skip dev detection
[dirs to backup] overwrites setting in script
Juga, arg ini diteruskan ke rsync: --verbose , --dry-run , --force , --ignore-errors dan semua-opsi --delete .
Untuk membersihkan dengan menghapus dir ekstra/file di DST, jalankan: ./wsbkp.sh --delete -y
Script dapat ditempatkan di lokasi mana pun, misalnya/usr/local/sbin '(disarankan).
Pastikan rsync, hdparm dan udisksctl (udisks2) diinstal.
Perangkat cadangan target harus tersedia dengan sistem file uuid, writable dan ruang disk gratis yang cukup.
Jalankan sebagai root. Tidak ada argumen baris perintah yang diperlukan, semua opsi diatur di dalam skrip. File log akan dibuat di sini: '/var/log/wsbkp.log'.
Opsi yang tercantum dalam 'penggunaan' dimaksudkan jika misalnya drive gagal untuk mematikan secara otomatis setelah cadangan selesai. Jika itu terjadi, coba lagi secara manual dengan wsbkp.sh -o
Opsi lain adalah melakukan cadangan satu kali dari direktori sumber yang berbeda dari yang dikonfigurasi:
wsbkp.sh /home/user/important /root/more_stuff
Untuk mengembalikan satu atau lebih file, pertama -tama jalankan wsbkp.sh -p untuk menyalakan drive dan wsbkp.sh -m untuk memasangnya.
Setelah selesai, "lepaskan" drive dengan wsbkp.sh -u ke Umount lalu wsbkp.sh -o untuk menyalakannya.
1) Dapatkan uuid drive cadangan:
Menjalankan wsbkp.sh -l harus menampilkan detail drive, atau hanya menjalankan blkid
root@host:~# blkid
/dev/sdb1: UUID="bc12345-1234-1234-1234-aaaabbbbcccc" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="ab1c2345-01"
2) Ubah pengaturan di dalam skrip:
DST_UUID= " abc12345-1234-1234-1234-aaaabbbbcccc " # uuid of backup device
DST_MNT= " /mnt/bkp " # dst/target path
BKP_DIRS= " / " # dirs to backup
EXCL_DIRS= "
--exclude=/proc/
--exclude=/sys/
--exclude=/lost+found/
--exclude=/mnt/
--exclude=/run/
--exclude=/tmp/
"Pastikan DST_UUID diatur ke UUID yang benar.
Standarnya adalah mencadangkan seluruh file ('/') dan mengecualikan beberapa dir. Dimungkinkan juga untuk menentukan satu atau lebih dir cadangan. Contoh: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3) Tes dan Jadwal:
Jalankan skrip secara manual untuk memverifikasi pengaturan yang benar. Dalam hal masalah yang OUT=/dev/stdout untuk menunjukkan output dari rsync (kemajuan/kecepatan dll).
Menambahkan arg Rsync ini mungkin juga bermanfaat: --verbose dan/atau --dry-run .
Jika semuanya baik -baik saja, jadwalkan skrip yang akan dijalankan setiap minggu misalnya. Lihat CRON dan SystemD Configs di bawah ini (Salin/Tempel ke Shell).
Jalankan skrip sebagai root:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpUntuk menjalankan sebagai timer SystemD, pertama -tama buat file unit:
cat << EOF >/lib/systemd/system/wsbkp.service
[Unit]
Description=WakeSleep backup
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/wsbkp.sh
EOF
cat << EOF >/lib/systemd/system/wsbkp.timer
[Unit]
Description=WakeSleep backup scheduled to run every week
[Timer]
OnCalendar=weekly
[Install]
WantedBy=timers.target
EOF Kemudian aktifkan timer: systemctl enable --now wsbkp.timer
Dan akhirnya Muat Ulang SystemD: systemctl daemon-reload
Untuk detailnya lihat https://www.freedesktop.org/software/systemd/man/systemd.timer.html