標籤: backup
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 選項
rclone 使用時須注意記憶體
實戰時, 讓restic透過rclone傳輸檔案, 約莫20萬個檔案, 將會導致記憶體不足, 目前看起來應該是–buffer-size需要設定,
已經有人反映,就只能等rclone 更新, 或是GO更新了
Visualsvn server很好用,但免費版無備份功能,該如何自行備份?
https://www.visualsvn.com/server/
svn好用之處在於可以鎖定檔案, 這在公司是非常實用的,雖然學習門檻有點高,但還能接受.
備份方式 有兩種
- svnadmin hotcopy 方式, 一模一樣複製一份
- 直接用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'
2024/10/14
—
記得要先 ssh 登入遠端,像我卡在沒有先登入試試看,忘了輸入yes ,造成sshpass失敗。
mysqldump 資料庫匯出要注意編碼
rclone gui滿好用的
直接就是web介面, http://ip:5572
rclone rcd --rc-web-gui --rc-addr :5572 --rc-user=admin --rc-pass=password --config=/root/rclone/rclone.conf
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