使用nohup和--remove-source-files在后臺(tái)運(yùn)行rsync并記錄日志方式
一、什么是 --remove-source-files?
- 作用:在文件成功同步到目標(biāo)路徑后,刪除源路徑中的文件。
- 適用場(chǎng)景:需要將文件從一處“移動(dòng)”到另一處,而不是保留副本,例如清理舊數(shù)據(jù)、遷移文件到新存儲(chǔ)。
- 注意:此選項(xiàng)只刪除文件,不會(huì)刪除源目錄結(jié)構(gòu)。
與常見(jiàn)的 mv 命令相比,rsync --remove-source-files 更適合跨設(shè)備或跨網(wǎng)絡(luò)的移動(dòng)操作,因?yàn)樗С衷隽總鬏敽湾e(cuò)誤恢復(fù)。
二、示例命令
以下是一個(gè)使用 nohup 和 --remove-source-files 的完整命令模板:
nohup rsync -av --remove-source-files /source/path/ /destination/path/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &
讓我們逐步拆解這條命令。
三、命令詳解
1. nohup
- 作用:確保任務(wù)在終端關(guān)閉后繼續(xù)運(yùn)行,忽略掛起信號(hào)(SIGHUP)。
- 用法:置于命令開頭。
2. rsync -av --remove-source-files
-a(歸檔模式):遞歸同步目錄,保留文件屬性(如權(quán)限、時(shí)間戳)。-v(詳細(xì)輸出):顯示同步和刪除的詳細(xì)信息。--remove-source-files:同步完成后刪除源文件。
源路徑和目標(biāo)路徑:
/source/path/:包含需要移動(dòng)的文件或目錄。/destination/path/:文件的目標(biāo)位置。
3. 日志重定向
> /var/log/rsync_$(date +%Y%m%d_%H%M%S).log:
- 將標(biāo)準(zhǔn)輸出重定向到日志文件。
- 使用
$(date +%Y%m%d_%H%M%S)生成時(shí)間戳,例如rsync_20250324_153022.log。
2>&1:將標(biāo)準(zhǔn)錯(cuò)誤也重定向到日志文件,確保所有信息都被記錄。
4. 后臺(tái)運(yùn)行 &
- 作用:將任務(wù)放入后臺(tái),釋放終端。
四、使用場(chǎng)景與示例
場(chǎng)景1:本地文件移動(dòng)
將 /data/old/ 中的文件移動(dòng)到 /data/new/:
nohup rsync -av --remove-source-files /data/old/ /data/new/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &
- 結(jié)果:
/data/old/中的文件被同步到/data/new/并刪除,目錄結(jié)構(gòu)保留。
場(chǎng)景2:遠(yuǎn)程文件遷移
將本地文件移動(dòng)到遠(yuǎn)程服務(wù)器:
nohup rsync -avz --remove-source-files -e ssh /local/data/ user@remote:/remote/data/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &
-z:壓縮數(shù)據(jù),優(yōu)化網(wǎng)絡(luò)傳輸。-e ssh:通過(guò)SSH連接遠(yuǎn)程服務(wù)器。
場(chǎng)景3:特定文件移動(dòng)
只移動(dòng)特定類型的文件(例如 .txt 文件):
nohup rsync -av --remove-source-files --include '*.txt' --exclude '*' /source/ /destination/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &
--include和--exclude組合過(guò)濾需要移動(dòng)的文件。
五、操作步驟
準(zhǔn)備工作:
- 確保源路徑和目標(biāo)路徑存在且可訪問(wèn)。
- 創(chuàng)建日志目錄:
mkdir -p /var/log/。 - 檢查權(quán)限:對(duì)源路徑有讀寫權(quán)限,對(duì)目標(biāo)路徑和日志路徑有寫權(quán)限。
執(zhí)行命令:
- 輸入命令并運(yùn)行,任務(wù)將在后臺(tái)啟動(dòng)。
- 查看進(jìn)程:
ps -ef | grep rsync。
驗(yàn)證結(jié)果:
- 檢查日志:
tail -f /var/log/rsync_*.log,確認(rèn)同步和刪除操作。 - 檢查源路徑:確認(rèn)文件已被刪除。
- 檢查目標(biāo)路徑:確認(rèn)文件已正確同步。
六、--remove-source-files 的工作原理
- 同步優(yōu)先:只有當(dāng)文件成功同步到目標(biāo)路徑后,源文件才會(huì)被刪除。
- 安全性:如果同步失?。ɡ缒繕?biāo)磁盤滿或網(wǎng)絡(luò)中斷),源文件會(huì)保留。
- 目錄保留:不會(huì)刪除源路徑中的空目錄,僅影響文件。
例如:
- 源目錄
/source/包含:
/source/
├── file1.txt
├── file2.txt
└── subdir/
└── file3.txt運(yùn)行 rsync -av --remove-source-files /source/ /dest/ 后:
/dest/包含所有文件。/source/變?yōu)椋?/li>
/source/ └── subdir/
- 文件被刪除,但目錄結(jié)構(gòu)保留。
七、注意事項(xiàng)
謹(jǐn)慎使用:
--remove-source-files會(huì)永久刪除源文件,操作前建議備份或測(cè)試。- 可先用
--dry-run模擬運(yùn)行,檢查結(jié)果:rsync -av --remove-source-files --dry-run /source/ /dest/。
磁盤空間:
- 確保目標(biāo)路徑有足夠空間,否則同步失敗,源文件不會(huì)刪除。
日志重要性:
- 日志記錄了刪除和同步的細(xì)節(jié),若出現(xiàn)問(wèn)題,可快速定位。
權(quán)限問(wèn)題:
- 源文件刪除需要寫權(quán)限,目標(biāo)路徑寫入需要相應(yīng)權(quán)限。
網(wǎng)絡(luò)中斷:
- 遠(yuǎn)程同步時(shí),若中斷,
rsync支持續(xù)傳,未完成的文件不會(huì)刪除。
八、高級(jí)用法
- 限制帶寬:避免影響網(wǎng)絡(luò),添加
--bwlimit=1000(1MB/s)。
定時(shí)任務(wù):結(jié)合cron,每天凌晨2點(diǎn)移動(dòng)文件:
0 2 * * * nohup rsync -av --remove-source-files /source/ /dest/ > /var/log/rsync_$(date +\%Y\%m\%d_\%H\%M\%S).log 2>&1 &
錯(cuò)誤通知:添加失敗提示:
nohup rsync -av --remove-source-files /source/ /dest/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 || echo "Rsync failed" | mail -s "Error" admin@example.com &
總結(jié)
通過(guò) nohup 和 --remove-source-files,我們可以安全、高效地將文件從一處移動(dòng)到另一處,并利用日志記錄整個(gè)過(guò)程。
這一方法在數(shù)據(jù)遷移、清理舊文件等場(chǎng)景中尤為實(shí)用。只要注意權(quán)限、空間和備份,就能充分發(fā)揮其優(yōu)勢(shì)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Openssl實(shí)現(xiàn)雙向認(rèn)證教程(附服務(wù)端客戶端代碼)
這篇文章主要介紹了Openssl實(shí)現(xiàn)雙向認(rèn)證教程(附服務(wù)端客戶端代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Linux VPS/服務(wù)器 網(wǎng)站及數(shù)據(jù)庫(kù)自動(dòng)本地備份并FTP上傳備份腳本
Linux VPS/服務(wù)器 網(wǎng)站及數(shù)據(jù)庫(kù)自動(dòng)本地備份并FTP上傳備份腳本的操作時(shí)怎樣進(jìn)行的?如今備份已經(jīng)成為一種非常重要的操作技術(shù),掌握好數(shù)據(jù)庫(kù)備份,對(duì)大家以后的工作會(huì)很有幫助2012-05-05
淺析ARM架構(gòu)下的函數(shù)的調(diào)用過(guò)程
本文主要介紹了linux程序運(yùn)行的狀態(tài)以及如何推導(dǎo)調(diào)用棧。2021-05-05
linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)
這篇文章主要介紹了linux安裝jdk并設(shè)置環(huán)境變量的相關(guān)資料,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Ubuntu中添加應(yīng)用程序快速啟動(dòng)器的方法
這篇文章主要介紹了Ubuntu中添加應(yīng)用程序快速啟動(dòng)器的方法,需要的朋友可以參考下2014-09-09

