## 功能場景
rsync --delete-before -avH --progress --stats /tmp/empty/ /var/spool/postfix/maildrop/
由于業務側使用時,一些腳本文件寫的不夠嚴謹,造成/var/spool/postfix/maildrop/目錄經常被用戶通知郵件文件堆滿。而通過rm -rf * 刪除時,會提示-bash: /bin/rm: Argument list too long 。通過ls |xargs rm -rf 進行刪除時也耗時較長,這里可以通過rsync進行刪除
## rsync刪除文件
針對上面的問題,我們可以通過以下方法清空該目錄:
先創建一個空目錄
mkdir /tmp/empty/
清空目標目錄
```
rsync --delete-before -avH --progress --stats /tmp/empty/ /var/spool/postfix/maildrop rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/
```
選項說明:
-delete-before 接收者在傳輸之前進行刪除操作
–progress 在傳輸時顯示傳輸過程
-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性
-H 保持硬連接的文件
-v 詳細輸出模式
–stats 給出某些文件的傳輸狀態
示例:
```
# /data/ES_Bakup/的數據同步到 /data/ES_backup02/
rsync --delete-before -d /data/ES_Bakup/ /data/ES_backup02/
```
不過在使用上面的命令進行清理時,存在一個問題,清空后,目標目錄的權限會和源目錄的權限一樣如:/tmp/empty是root:root,而maildrop之前是postfix:postdrop ,執行之后也會maildrop目錄的權限也會變成root:root 由于-a權限是-rlptogD幾個參數的集合,所以可以將og(owner:group)兩個參數去掉。清空時自動保持之前的目錄權限,如下:
rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/
## rsync與rm 刪除速度比較
為什么rsync這么快呢?異步
rm刪除內容時,將目錄的每一個條目逐個刪除(unlink),需要循環重復操作很多次;rsync刪除內容時,建立好新的空目錄,替換掉老目錄,基本沒開銷。想要深層次的區分兩個命令在調用系統函數時的區別,可以使用SystemTap工具進行分析
- 寫在前面
- linux命令行
- 基礎篇
- 1.SSH連接工具
- 2.查看系統版本信息
- 3.查看IP地址
- 4.查看cpu信息
- 5.查看內存磁盤信息
- 6.文件上傳下載
- 7.linux中查找文件(find)
- 8.修改root賬號密碼
- 9.通過進程號查看端口
- 10.校驗MD5值
- 11.Linux命令之seq
- 12.Linux命令之corntab
- 13.linux命令之awk
- 進階篇
- 查看防火墻是否開啟
- linux創建新的用戶
- 更改文件的用戶組
- 查找JAVA_HOME路徑
- Linux主機時間同步
- 高CPU排查-個人總結
- Linux查看GPU性能
- 文件排序工具sort
- sed
- grep
- 實戰篇
- 1.Linux基線
- 2.iptables學習
- 3.Tcpdump抓包命令
- 4.CentOS7更換鏡像源
- shell腳本篇
- 1.Shell腳本速查手冊
- 2.Shell中獲取取昨天和多天前日期
- 3.rsync刪除文件
- 4.nginx自動化安裝腳本
- 5.后臺啟動服務
- 6.備份文件保留5天
- 數據庫
- MySQL數據庫備份命令
- ES數據庫備份
- filebeat工具
- packetbeat工具
- MySQL數據庫中刪除表
- Docker容器
- 1.安裝docker容器
- 2.docker容器的使用
- 3.docker overlay2 是存放什么的
- 4.docker刪除已停止的容器
- 5.docker網卡的IP地址修改
- Ubuntu容器下載vim,curl命令
- docker磁盤占用瞬間變大問題解決
- Python學習
- 安裝python環境
- Python 把代碼編譯成pyc文件