在現代電腦日常使用中,資料備份顯得格外重要。而對於 Linux 使用者來說,rsync 指令是備份和同步檔案的常用方法。它可以在不同系統之間或本機資料夾之間實現快速且有效率的資料同步。
方案背景:A伺服器與B伺服器之間(可1對1,也可多對多,在此以簡單的1對1舉例)需要資料同步,此方案常用於遠端災備。

同步方案根據應用程式場景大約有兩種,定時同步和即時同步。定時同步具有同步時間固定、即時性差、消耗資源較小的特性;即時同步具有即時性強、同步密集、較耗資源等特性。
一、定時同步
#1、安裝軟體:
yum install rsync -y
2、免機密登入(也可使用明文採用模擬互動式登入方式,但從安全角度出發還是建議使用免密登入):
ssh-keygen -t rsa
產生後可以進入目錄cd ~/.ssh/ 把產生的金鑰~/.ssh/id_rsa.pub內容複製到遠端主機的/root/.ssh/authorized_keys中
在這裡很多同學對以上的操作為什麼就不用輸入密碼的問題感到好奇,了解免密登入的同學可以跳過這段介紹。這裡介紹下免密登入的原理:
rsa又稱非對稱金鑰演算法,對應的是對稱金鑰演算法。
所謂對稱金鑰演算法就是A和B通信,為了雙方能確認對方的身份,A和B約定一個雙方都知道的金鑰k來決定身份如下:
A => (mk) B A發送m明文和K密鑰跟B,B確認K密鑰和之前A約定的一樣,就能確定A的身份是真實的。反之B到A的通信也是如此。
非對稱加密需要兩個金鑰:公鑰 (publickey) 和私鑰 (privatekey)。公鑰和私鑰是一對,如果用公鑰對資料加密,那麼只能用對應的私鑰解密。如果用私鑰對資料加密,只能用對應的公鑰進行解密。因為加密和解密用的是不同的金鑰,所以稱為非對稱加密。
所以以上的操作把A伺服器的公鑰共享跟了B伺服器(遠端主機),所以A伺服器登入B伺服器就不再需要傳統的互動式輸入密碼登錄,B伺服器能透過A伺服器的公鑰而確認A伺服器的真實性(私鑰)。
[root@localhost ~]# cd ~/.ssh/ [root@localhost .ssh]# ls id_rsa id_rsa.pub known_hosts
3、寫shell腳本
[root@localhost ~]# vim back.sh #!/bin/sh rsync -avz -e 'ssh -p 22' root@x.x.x.x:/XXX/pub /data/
注意:rsync的資料同步分為拉和推兩種不同的動作,在編寫腳本之前,一定要測試指令是否能正常執行。
4、crontab定時執行設定(每天3點執行腳本)
到此,定時同步就配置好了。
二、即時同步

#Inotify簡介
Inotify 是一個 Linux特性,從版本2.6.13開始提供,它監控檔案系統操作,例如讀取、寫入和創建。 Inotify 反應靈敏,用法非常簡單,並且比 cron 任務的繁忙輪詢高效得多。
開始設定Inotify
附註:在開始之前需要在伺服器A和B上都安裝好rsync。
1、在伺服器B上調整inotify核心參數,vim /etc/sysctl.conf
#fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576
2、讓調整inotify核心參數立刻生效
#
sysctl -p3、安裝Inotify-Tool工具
# 先安装扩展包源,否则inotify-tools找不到 yum install epel-release yum install inotify-tools4、開啟兩個終端,一個終端執行創建刪除等操作,另一個執行Inotify-Tool工具,測試Inotify-Tool工具時候正常
inotifywait -mrq -e modify,create,move,delete /var/www/ inotifywait:用于持续监控,实时输出结果 inotifywatch:用于短期监控,任务完成后再出结果5、寫腳本
vim /root/tongbu.sh
#!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /root/cs" RSYNC_CMD="rsync -avz -e 'ssh - p 22' /root/cs/ root@x.x.x.x:/root/cs/ " $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done註:這裡要特別注意,邏輯關係不要搞混了,是B伺服器推送跟A伺服器。 ### ###6、新增開機自動後台自動執行,編輯/etc/profile文件,在最後一行加入下面語句###
/bin/bash /root/tongbu.sh &###到此定時同步和即時同步都講解完畢。根據不同的場景應用不同的方案,需要靈活應對,特別要注意一點的是。即時同步的方案,監控目錄千萬不能設定成日誌目錄,不然伺服器cpu飆漲很有可能會當機。 ### ###總之,rsync 指令是一個非常強大、靈活且有效率的檔案同步和備份工具。無論是在日常使用或是生產環境中,都能夠發揮出其獨特的優勢。透過本文的介紹和實踐,相信大家已經掌握了這個指令的基本用法和技巧。希望大家在未來的 Linux 使用中,能夠更好地利用 rsync 指令來管理和保護自己的資料! ###
以上是備份就是這麼簡單:教你輕鬆使用 Linux rsync 指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

linux设备节点是应用程序和设备驱动程序沟通的一个桥梁;设备节点被创建在“/dev”,是连接内核与用户层的枢纽,相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。设备节点使用户可以与内核进行硬件的沟通,读写设备以及其他的操作。

区别:1、open是UNIX系统调用函数,而fopen是ANSIC标准中的C语言库函数;2、open的移植性没fopen好;3、fopen只能操纵普通正规文件,而open可以操作普通文件、网络套接字等;4、open无缓冲,fopen有缓冲。

端口映射又称端口转发,是指将外部主机的IP地址的端口映射到Intranet中的一台计算机,当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上;可以通过使用动态或固定的公共网络IP路由ADSL宽带路由器来实现。

在linux中,eof是自定义终止符,是“END Of File”的缩写;因为是自定义的终止符,所以eof就不是固定的,可以随意的设置别名,linux中按“ctrl+d”就代表eof,eof一般会配合cat命令用于多行文本输出,指文件末尾。

在linux中,交叉编译是指在一个平台上生成另一个平台上的可执行代码,即编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台。使用交叉编译的原因:1、目标系统没有能力在其上进行本地编译;2、有能力进行源代码编译的平台与目标平台不同。

在linux中,可以利用“rpm -qa pcre”命令判断pcre是否安装;rpm命令专门用于管理各项套件,使用该命令后,若结果中出现pcre的版本信息,则表示pcre已经安装,若没有出现版本信息,则表示没有安装pcre。

linux查询mac地址的方法:1、打开系统,在桌面中点击鼠标右键,选择“打开终端”;2、在终端中,执行“ifconfig”命令,查看输出结果,在输出信息第四行中紧跟“ether”单词后的字符串就是mac地址。

在linux中,rpc是远程过程调用的意思,是Reomote Procedure Call的缩写,特指一种隐藏了过程调用时实际通信细节的IPC方法;linux中通过RPC可以充分利用非共享内存的多处理器环境,提高系统资源的利用率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器