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
firewall-cmd --reload
systemctl enable nfs
systemctl start nfs

#查看狀態
showmount -e localhost

用戶端

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

restic 常用指令

使用情境是依不同系統 , 建立多個備份倉, 一個倉別若要備份不同目錄, 可用tag區分.

備份倉盡量用簡單的方式, 當然也可以掛載sftp ,或是 rclone.

要備份的目錄, 盡量用掛載的, 變成一個目錄, rclone是個好選擇

備份後,執行保留策略(7天或是30天), 備份可以從目錄, 也可以從stdin ,

還原就比較沒甚麼好談的

至於密碼, 我覺得用環境變數就好了, 用檔案存密碼, 我覺得指令看起來好複雜

  • 建立備份倉
export RESTIC_PASSWORD=123456
restic -r <備份倉目錄> init
  • 備份
#Linux
export RESTIC_PASSWORD=123456
restic -r <備份倉目錄> backup <想要備份的目錄>  --cleanup-cache --verbose --verbose >> restic.log 2>&1

#windows powershell
$Env:RESTIC_PASSWORD='password'
restic -r <備份倉目錄> backup <想要備份的目錄> | Out-File C:\temp\files.log -Encoding UTF8
  • 備份(mysql資料庫)
export RESTIC_PASSWORD=123456
mysqldump -u root -p<密碼>  --all-databases -h <主機ip> |  restic --repo <備份倉目錄> backup --stdin --stdin-filename all.sql
  • tag 以上備份可以加上tag區分不同目錄, tag 名稱可以一樣
restic -r <備份倉目錄> backup <想要備份的目錄> --tag:名稱  --cleanup-cache --verbose --verbose >> restic.log 2>&1
  • 查看備份
export RESTIC_PASSWORD=123456
restic -r <備份倉目錄> snapshots
  • 還原指定的snap
export RESTIC_PASSWORD=123456
restic -r <備份倉目錄> restore <snapshots id> --target <要還原的目錄>
  • 備份完畢,刪除過多的備份
export RESTIC_PASSWORD=123456
restic -r <備份倉目錄> forget --prune --keep-daily 7

docker 執行restic , 超強備份軟體, 隨時用,不用管如何安裝

docker run restic/restic 參數
## 例如
docker run restic/restic version
  • 記得把本機的repository目錄對應到 restic 容器內
#例如建立repository
docker run -v /root:/root restic/restic --repo /root/repo --password-file=/root/password init
  • 若儲存的目錄本身是cifs掛載的,記得加上這個環境變數, 因為掛載的目錄是root, 所以只能備份底下資料, 如 /root/a
export GODEBUG=asyncpreemptoff=1
docker run -v /root:/root restic/restic --repo /root/repo --password-file=/root/password backup /root/a