Shell-Script
檢測到更改時如何同步/備份文件?
我有兩個分區,一個用於使用,一個用於備份。那麼,是否有任何工具可以將文件夾從第一個分區同步到第二個分區。此外,每當對文件或文件夾進行更改時,該工具應立即同步。如果無法立即同步,我該如何自動化我的任務,以正確同步假設我已將文件夾安裝
/dev/sda6
(Windows)到window
文件夾並執行 linux。我想備份/同步/root/*
到/media/window/backup
,每當我在 中添加或刪除文件或文件夾時/root/*
,/media/window/backup
都應該更新。
請檢查:
- https://linuxhint.com/inotofy-rsync-bash-live-backups/
- https://www.b247.eu.org/2019/09/restic-incron-inotify-continuous-backup-folder-change.html
和這個主題:https ://serverfault.com/questions/7969/is-there-a-working-linux-backup-solution-that-uses-inotify
或者您可以
rsync
使用cron
.
好吧,畢竟我有一個計劃。我想要備份/同步,但如果我刪除我就走了。所以,虛擬碼看起來像這樣
while inotify create/modify #executes command if create/modify do if `du source` is greater than `du destination` then #size of source is gt than dest rsync source/ dest -av done
終於做到了
#!/bin/bash if [[ `pgrep -f $0` != "$$" ]]; then echo "Exiting" exit fi while inotifywait -r -e modify,create /root/MachineYadav 1>/dev/null 2>/dev/null do echo "0" > /tmp/KaliLinuxBackup clear && sleep 1.5 && echo "Backing up" && sleep 0.5 if [[ `du -s /root/MachineYadav/ | awk '{print $1}'` -gt `du -s /root/Mount/Window/Kali-Mirror | awk '{print $1}'` ]]; then echo "1" > /tmp/KaliLinuxBackup rsync /root/MachineYadav/ /root/Mount/Window/Kali-Mirror/ -av fi clear && echo "Finishing" && sleep 0.5 done
我將有類似的實現以及一些修改。謝謝@Artem S. Tashkinov 和@fra-san