Shell-Script

檢測到更改時如何同步/備份文件?

  • July 1, 2020

我有兩個分區,一個用於使用,一個用於備份。那麼,是否有任何工具可以將文件夾從第一個分區同步到第二個分區。此外,每當對文件或文件夾進行更改時,該工具應立即同步。如果無法立即同步,我該如何自動化我的任務,以正確同步假設我已將文件夾安裝/dev/sda6(Windows)到window文件夾並執行 linux。我想備份/同步/root/*/media/window/backup,每當我在 中添加或刪除文件或文件夾時/root/*/media/window/backup都應該更新。

請檢查:

  1. https://linuxhint.com/inotofy-rsync-bash-live-backups/
  2. 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

引用自:https://unix.stackexchange.com/questions/596039