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
restic -r <備份倉目錄> forget --prune --keep-last 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

RockyLinux 安裝 docker

現在安裝docker 跟喝水一樣, 完全沒難度阿

  • 安裝套件

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf update -y
dnf install -y docker-ce docker-ce-cli containerd.io
docker --version
  • 構思docker檔案要放在哪個路徑, 以後方面維護, 假設放在 /docker ,請修改啟用參數
    vi /lib/systemd/system/docker.service

#########
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --data-root /docker -H fd:// --containerd=/run/containerd/containerd.sock
#########
  • 啟用
systemctl daemon-reload
systemctl enable docker
systemctl start docker
docker ps

RockyLinux 安裝tigervnc-server

  • 安裝RockyLinux需要先安裝桌面版本, 若一開始沒有裝好,可以考慮安裝xfce
yum update -y
yum install -y epel-release
yum groupinstall -y "Xfce" "base-x"
yum systemctl set-default graphical
reboot
  • 安裝tigervnc-server
yum install tigervnc-server -y
  • 若你是root, 請新增linux 使用者,並且修改密碼, 若本身就使一個使用者可以跳過這步驟
adduser william
passwd william
  • 變身成使用者, 設定登入vnc需要的密碼
su - william
vncpasswd 
  • 改回root身分, 啟用設定, 我們是port 590的第一人 :1 , 意思是5901的意思, 若有第二人就再加一個 :2 port 則為5902
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
  • 加上可以使用vnc的使用者帳號
 vi /etc/tigervnc/vncserver.users
###############
:1=william
###############
  • 請用service
systemctl daemon-reload 
systemctl enable vncserver@:1.service
systemctl start vncserver@:1.service
firewall-cmd --zone=public --permanent --add-service=vnc-server
# 或是直接指定port 
# firewall-cmd --zone=public --permanent --add-port=5901/tcp
firewall-cmd --reload

RockyLinux 8 時間更新chronyd

之前CentOS 6,7時代, 時間更新使用的是 ntpdate -s x.x.x.x

但是來到了 8 版, 改用chronyd , 若要修改同步的 server , 請修改 /etc/chrony.conf
找到pool 後面加上server的ip即可, 或是沿用預設值也可以

若需要設定server顯示的時間符合本地時間, 可先參考server綁定的地區

ls -l /etc/localtime

然後參考地區

timedatectl list-timezones

再變更

timedatectl set-timezone "Asia/Taipei"

ssh 用戶端不支援舊版加密解法

新的ssh 用戶端已經不支援舊版的加密方式, 因此若伺服器提供的sshd 加密過舊, 則必須手動調整,讓ssh 用戶端強制使用舊版方式連線.

做法就是先確認伺服器提供的加密法

# ssh -l root 192.168.1.1
Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

然後請視情況(錯誤訊息), 更改演算法與支援的key

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss -l root  x.x.x.x 

若連線還是失敗, 出現以下錯誤

ssh_dispatch_run_fatal: Connection to 192.168.1.1 port 22: error in libcrypto

用戶端嘗試執行以下指令

update-crypto-policies --set LEGACY
1 ... 5 6 7 8