使用restic做離線備份, 充滿儀式感,老闆也開心

前陣子發現restic備份的好處, 尤其拿來當離線備份.

IT同事進行離線備份時, 有意無意被老闆路過, 看到滿滿備份畫面咻咻跑來跑去, 充滿了儀式感.
老闆開心, IT同仁也有成就感.


restic指令備份, 不夠自動化, 為了讓IT同事做少少的工作, 又讓IT同事與其他路過的同事覺得好專業, 因此寫了簡單的restic backup script , 可以協助掛載來源目錄, 掛載後,進行restic備份.

檔案請到這裡下載, 下載後請看readme.md檔案

centos 7 啟用NFS server

真真氣死人, 只是使用restic備份, 需要掛載不同性質的資料來源,
從 rclone 到 sshfs 到回歸nfs server, 只有一種感慨, 就是交給專業的來,不要想東想西的, ssh 來掛載目錄, rclone掛載ssh都不切實際,目前都不穩定.

服務器端啟用nfs server

yum install nfs-utils

## 分享目錄
mkdir -p /mnt/docker
vi etc/exports
=================
#只讀ro,  10.192.130.4可使用
/mnt/docker      10.192.130.4(ro,sync,no_root_squash,no_all_squash)
#讀寫rw,  10.192.130.0/24網段可使用
/mnt/docker      10.192.130.0/24(rw,sync,no_root_squash,no_all_squash)
=================

#啟用
firewall-cmd --zone=public --add-service=nfs --permanent

## rockylinux
#firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent

firewall-cmd --reload
systemctl enable nfs 
systemctl start nfs

## rockylinux
#systemctl enable nfs-server rpcbind
#systemctl start nfs-server rpcbind

#查看狀態(windows,linux通用)
showmount -e localhost

用戶端(linux)

mount -t nfs <server ip>:/mnt/docker  <本地要掛載的目錄>
或是
mount -t nfs4 <server ip>:/mnt/docker  <本地要掛載的目錄>

用戶端(windows)

mount -o anon  \\ip\mount_path  z:

rclone 掛載sftp 連線過慢, 因此先用sshfs擋著先

RockyLinux

dnf --enablerepo=powertools -y install fuse-sshfs

以下為自動掛載方式,(這樣不是很安全,用rsa-key方式比較好)

echo 密碼| sshfs -o reconnect -o allow_other -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 帳號@主機:/來源目錄/ 掛載目錄 -o workaround=rename -o password_stdin

增加效能

 -o Ciphers=aes128-ctr -o Compression=no -o ServerAliveCountMax=100 -o ServerAliveInterval=15 

傳輸過程若出現 transport endpoint is not connected 的錯誤

請試著修改 /etc/fuse.conf , 啟用 user_allow_other 選項

Visualsvn server很好用,但免費版無備份功能,該如何自行備份?

https://www.visualsvn.com/server/

svn好用之處在於可以鎖定檔案, 這在公司是非常實用的,雖然學習門檻有點高,但還能接受.

備份方式 有兩種

  1. svnadmin hotcopy 方式, 一模一樣複製一份
  2. 直接用svnadmin dump的方式增量備份

我最後打算用 hotcopy 方式 , 搭配restic超強備份軟體, 來完成備份

hotcopy的方式可以按此下載我寫的批次檔案(windows版本), 改一下變數即可使用.

至於還原 , 若使用hotcopy的方式備份, 只要刪除server的資料, 再下一次hotcopy 從備份檔案 還原回去既可

原本備份是
svnadmin hotcopy --incremental <server dir> <backup dir>

還原變成

svnadmin hotcopy <backup dir> <server dir>

ssh 下指令到遠端主機,可無人值守

  • 跟登入指令很像, 後面接指令即可
 ssh root@10.192.130.146 -p 22 'ls -al'
  • 若需要無人值守, 作法之一(但比較不安全), 安裝sshpass
1. 安裝sshpass
redhat,centos,rockylinux
yum install sshpass
ubuntu
apt-get install sshpass
2. 無人值守
sshpass -p 'password' ssh root@10.192.130.146 -p 22 'ls -al'
1 2