NFS
实时备份
inotify
rsync.sh
rsync -a --delete /share/ 192.168.235.200:/backup/
对吗?
[root@nfs /]# chmod +X rsync.sh
[root@nfs /]# ll rsync.sh
-rw-r--r--. 1 root root 220 6月 18 21:57 rsync.sh
[root@nfs /]#
nfs
[root@nfs share]# touch 1.txt
[root@nfs share]# ls
123.jpg 1.txt share.mp4
[root@nfs share]# cat rsync.sh
cat: rsync.sh: 没有那个文件或目录
[root@nfs share]# cat /var/log/rsync.sh
cat: /var/log/rsync.sh: 没有那个文件或目录
backup
123.jpg share.mp4
[caozx26@backup backup]$ ls
123.jpg 1.txt share.mp4
[caozx26@backup backup]$
nfs
[root@nfs /]# echo "$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
[root@nfs /]# cat /var/log/rsync.log
./rsync.sh:行4: echo2025-06-19 21:29:22出现事件/share/ CREATE 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:29:23出现事件/share/ ATTRIB 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ MODIFY .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:04出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
2025-06-19 21:35:55出现事件
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# cd /
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# pkill -f inotify.sh
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]#
代码
web .20
root@192.168.235.20's password:
Remote side unexpectedly closed network connection
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
root@192.168.235.20's password:
┌────────────────────────────────────────────────────────────────────┐
│ • MobaXterm 20.0 • │
│ (SSH client, X-server and networking tools) │
│ │
│ ➤ SSH session to root@192.168.235.20 │
│ • SSH compression : ✘ │
│ • SSH-browser : ✔ │
│ • X11-forwarding : ✔ (remote display is forwarded through SSH) │
│ • DISPLAY : ✔ (automatically set on remote server) │
│ │
│ ➤ For more info, ctrl+click on help or visit our website │
└────────────────────────────────────────────────────────────────────┘
Last login: Wed Jun 18 19:20:35 2025 from 192.168.235.1
[root@web ~]# hostnamectl
Static hostname: web.cn
Icon name: computer-vm
Chassis: vm
Machine ID: eb7df53443c0469db47ad4fc80677aa5
Boot ID: b78ce19fa16d40909ebe305eb1377e2a
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
您在 /var/spool/mail/root 中有新邮件
[root@web ~]# cat /var/www/html/media
cat: /var/www/html/media: 是一个目录
[root@web ~]# ll /var/www/html/media
总用量 5792
-rw-r--r--. 1 root root 1041230 6月 19 20:54 123.jpg
-rw-r--r--. 1 root root 4886296 6月 18 21:07 share.mp4
您在 /var/spool/mail/root 中有邮件
[root@web ~]#
nfs .100
root@192.168.235.100's password:
┌────────────────────────────────────────────────────────────────────┐
│ • MobaXterm 20.0 • │
│ (SSH client, X-server and networking tools) │
│ │
│ ➤ SSH session to root@192.168.235.100 │
│ • SSH compression : ✘ │
│ • SSH-browser : ✔ │
│ • X11-forwarding : ✔ (remote display is forwarded through SSH) │
│ • DISPLAY : ✔ (automatically set on remote server) │
│ │
│ ➤ For more info, ctrl+click on help or visit our website │
└────────────────────────────────────────────────────────────────────┘
Last login: Wed Jun 18 20:56:15 2025 from 192.168.235.1
[root@nfs ~]# ls
ab.txt anaconda-ks.cfg bb.conf initial-setup-ks.cfg kk.txt ok sun.conf sun.txt
[root@nfs ~]# cd /
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt proc run srv usr
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 ok root sbin sys var
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media opt rsync.sh share tmp
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo"$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gLTOfHAgwpBSNTNl07STiYmnd+k6X4Ty+JipuGKBZaw root@nfs.cn
The key's randomart image is:
+---[RSA 2048]----+
|=oo.B.+o. |
|oo o X +.+ |
|.. = * = |
| ++ = . + |
|.+ = + S . |
|E. o * . |
| . . o . |
|.. . .* . |
|..o...=oo |
+----[SHA256]-----+
[root@nfs /]# ssh-copy-id root@192.168.235.200
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.235.200 (192.168.235.200)' can't be established.
ECDSA key fingerprint is SHA256:khlI72dk6xtaBObBlZbZT4+Z+s+1c1tjmHg3nZVV8G4.
ECDSA key fingerprint is MD5:59:e9:91:40:a4:ca:21:a9:c2:92:39:b8:d4:7f:5f:2f.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.235.200's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.235.200'"
and check to make sure that only the key(s) you wanted were added.
[root@nfs /]# ssh root@192.168.235.200
Last login: Thu Jun 19 05:46:49 2025
[root@backup ~]# mkdir /backup
[root@backup ~]# exit
登出
Connection to 192.168.235.200 closed.
[root@nfs /]# nohup ./rsync.sh &
[1] 82361
[root@nfs /]# nohup: 忽略输入并把输出追加到"nohup.out"
nohup: 无法运行命令"./rsync.sh": 权限不够
jobs
[1]+ 退出 126 nohup ./rsync.sh
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo"$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# cat /var/log/rsync.log
cat: /var/log/rsync.log: 没有那个文件或目录
[root@nfs /]# cd /var/log
[root@nfs log]# ls
anaconda cron-20250525 maillog-20250525 sa swtpm vmware-vmsvc-root.log
audit cron-20250603 maillog-20250603 samba tallylog vmware-vmtoolsd-root.log
boot.log cron-20250608 maillog-20250608 secure tuned wpa_supplicant.log
boot.log-20250421 cron-20250615 maillog-20250615 secure-20250525 vmware-network.1.log wtmp
boot.log-20250612 cups messages secure-20250603 vmware-network.2.log xferlog
boot.log-20250613 dmesg messages-20250525 secure-20250608 vmware-network.3.log xferlog-20250607
boot.log-20250614 dmesg.old messages-20250603 secure-20250615 vmware-network.4.log xferlog-20250608
boot.log-20250615 firewalld messages-20250608 speech-dispatcher vmware-network.5.log xferlog-20250615
boot.log-20250618 gdm messages-20250615 spooler vmware-network.6.log Xorg.0.log
boot.log-20250619 glusterfs ntpstats spooler-20250525 vmware-network.7.log Xorg.0.log.old
btmp grubby_prune_debug pluto spooler-20250603 vmware-network.8.log Xorg.1.log
btmp-20250603 lastlog ppp spooler-20250608 vmware-network.9.log Xorg.9.log
chrony libvirt qemu-ga spooler-20250615 vmware-network.log yum.log
cron maillog rhsm sssd vmware-vgauthsvc.log.0
[root@nfs log]# cat rsync.sh
cat: rsync.sh: 没有那个文件或目录
[root@nfs log]# cat rsync.log
cat: rsync.log: 没有那个文件或目录
[root@nfs log]# cd /share
[root@nfs share]# ls
share.mp4
[root@nfs share]# ls
123.jpg share.mp4
[root@nfs share]# cat /var/log/rsync.log
cat: /var/log/rsync.log: 没有那个文件或目录
[root@nfs share]# ls /
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs share]# cd /
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# nuhup ./rsync.sh &
[1] 89672
[root@nfs /]# bash: nuhup: 未找到命令...
^C
[1]+ 退出 127 nuhup ./rsync.sh
[root@nfs /]# nohup ./rsync.sh &
[1] 89841
[root@nfs /]# nohup: 忽略输入并把输出追加到"nohup.out"
nohup: 无法运行命令"./rsync.sh": 权限不够
jobs
[1]+ 退出 126 nohup ./rsync.sh
[root@nfs /]# jobs
[root@nfs /]# jobs
[root@nfs /]# cd /
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# ll rsync.sh
-rw-r--r--. 1 root root 220 6月 18 21:57 rsync.sh
[root@nfs /]# chmod +X rsync.sh
[root@nfs /]# ll rsync.sh
-rw-r--r--. 1 root root 220 6月 18 21:57 rsync.sh
[root@nfs /]# chmod +x rsync.sh
[root@nfs /]# ll rsync.sh
-rwxr-xr-x. 1 root root 220 6月 18 21:57 rsync.sh
[root@nfs /]# nohup ./rsync.sh &
[1] 93130
[root@nfs /]# nohup: 忽略输入并把输出追加到"nohup.out"
jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# rsync -a --delete /share/ 192.168.235.200:/backup/
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# cat /var/log/rsync.log
cat: /var/log/rsync.log: 没有那个文件或目录
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo"$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# cd /usr/local/bin
[root@nfs bin]# ls
inotifywait inotifywatch
[root@nfs bin]# cd /share
[root@nfs share]# touch 1.txt
[root@nfs share]# ls
123.jpg 1.txt share.mp4
[root@nfs share]# cat rsync.sh
cat: rsync.sh: 没有那个文件或目录
[root@nfs share]# cat /var/log/rsync.sh
cat: /var/log/rsync.sh: 没有那个文件或目录
[root@nfs share]# vim rsync.sh
[root@nfs share]# cd /
[root@nfs /]# vim rsync.sh
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo"$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# echo "$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
[root@nfs /]# cat /var/log/rsync.log
./rsync.sh:行4: echo2025-06-19 21:29:22出现事件/share/ CREATE 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:29:23出现事件/share/ ATTRIB 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ MODIFY .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:04出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
2025-06-19 21:35:55出现事件
[root@nfs /]# vim rsync.sh
您在 /var/spool/mail/root 中有新邮件
[root@nfs /]# jobgs
bash: jobgs: 未找到命令...
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo "$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# kill
kill: 用法:kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]
[root@nfs /]# pkill
pkill: no matching criteria specified
Try `pkill --help' for more information.
[root@nfs /]# jobs -l
[1]+ 93130 运行中 nohup ./rsync.sh &
[root@nfs /]# pkill -f inotify.sh
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# pkill -f inotify.sh
[root@nfs /]# jpbs
bash: jpbs: 未找到命令...
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# pkill -f inotify.sh
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# cd /
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# pkill -f inotify.sh
[root@nfs /]# jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# jobs -l
[1]+ 93130 运行中 nohup ./rsync.sh &
[root@nfs /]# kill -15 93130
[root@nfs /]# jobs
[1]+ 已终止 nohup ./rsync.sh
[root@nfs /]# ls
35.txt aa3 boot etc file20.java file23.java file4.java file7.java lib mnt opt rsync.sh share tmp
aa1 app1 data file19.java file21.java file2.java file5.java home lib64 nohup.out proc run srv usr
aa2 bin dev file1.java file22.java file3.java file6.java inotify-tools-3.13 media ok root sbin sys var
[root@nfs /]# cat rsync.sh
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move,attrib /share |while read events
do
rsync -a --delete /share/ 192.168.235.200:/backup/
echo "$(date '+%F %T')出现事件$events">>/var/log/rsync.log 2>&1
done
[root@nfs /]# nohup ./rsync.sh &
[1] 118277
[root@nfs /]# nohup: 忽略输入并把输出追加到"nohup.out"
jobs
[1]+ 运行中 nohup ./rsync.sh &
[root@nfs /]# cd /share
[root@nfs share]# ls
123.jpg 1.txt share.mp4
[root@nfs share]# touch 2.txt
[root@nfs share]# cat /var/log/rsync.log
./rsync.sh:行4: echo2025-06-19 21:29:22出现事件/share/ CREATE 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:29:23出现事件/share/ ATTRIB 1.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:33:59出现事件/share/ CREATE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swx: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:00出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ CREATE .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:01出现事件/share/ MODIFY .rsync.sh.swp: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 21:34:04出现事件/share/ DELETE .rsync.sh.swp: 没有那个文件或目录
2025-06-19 21:35:55出现事件
2025-06-19 22:16:54出现事件/share/ CREATE 2.txt
./rsync.sh:行4: echo2025-06-19 22:16:54出现事件/share/ CREATE 2.txt: 没有那个文件或目录
./rsync.sh:行4: echo2025-06-19 22:16:54出现事件/share/ ATTRIB 2.txt: 没有那个文件或目录
2025-06-19 22:16:54出现事件/share/ ATTRIB 2.txt
[root@nfs share]#
backup .200
caozx26@192.168.235.200's password:
Remote side unexpectedly closed network connection
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
caozx26@192.168.235.200's password:
┌────────────────────────────────────────────────────────────────────┐
│ • MobaXterm 20.0 • │
│ (SSH client, X-server and networking tools) │
│ │
│ ➤ SSH session to caozx26@192.168.235.200 │
│ • SSH compression : ✘ │
│ • SSH-browser : ✔ │
│ • X11-forwarding : ✔ (remote display is forwarded through SSH) │
│ • DISPLAY : ✔ (automatically set on remote server) │
│ │
│ ➤ For more info, ctrl+click on help or visit our website │
└────────────────────────────────────────────────────────────────────┘
Last login: Thu Jun 19 03:22:26 2025 from 192.168.235.1
[caozx26@backup ~]$ cd /
[caozx26@backup /]$ ls
backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[caozx26@backup /]$ ls backup
[caozx26@backup /]$ ls
backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[caozx26@backup /]$ ls /backup
[caozx26@backup /]$ ls
backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[caozx26@backup /]$ cd /backup
[caozx26@backup backup]$ ls
[caozx26@backup backup]$ ls
[caozx26@backup backup]$ ls
[caozx26@backup backup]$ ls
123.jpg share.mp4
[caozx26@backup backup]$ ls
123.jpg 1.txt share.mp4
[caozx26@backup backup]$ ls
123.jpg 1.txt 2.txt share.mp4
[caozx26@backup backup]$